Вы можете добавить панель инструментов в QDialog?
Я работаю над проектом, который должен вызвать модальное окно с панелью инструментов, чтобы выполнить некоторую работу над некоторыми данными до его загрузки. Причина, по которой мне нужна панель инструментов, заключается в том, что у пользователя есть несколько возможных вариантов, которые можно объединить.
очевидным выбором здесь является модальный диалог (который я работаю прямо сейчас). Проблема в том, что мне нужна панель инструментов. Это вопрос из двух частей:
- можно ли добавить панель инструментов к
QDialog
? (также возможно сделать это в Qt Designer?) - если 1. невозможно, как я могу сделать
QMainWindow
модовый?
3 ответов
Если вам не нужна встроенная функция перетаскивания панелей инструментов QMainWindow, вы можете просто добавить QToolBar в любой макет, включая макет QDialog (). Вижу матчи digvijay Патил это ниже для деталей, которые определенно чище концептуально.
в противном случае, пожалуйста, читайте дальше.
это не напрямую можно добавить
QToolBar
доQDialog
в смысле QMainWindow:: addToolBar (), потому чтоQDialog
наследует толькоQWidget
, а неQMainWindow
, как вы отметили (следовательно, не имеют методаaddToolBar()
)вы не можете сделать
QMainWindow
modal, но вы можете вставитьQMainWindow
наQDialog
таким образом:
код:
MyDialog::MyDialog() :
QDialog()
{
QMainWindow * mainWindow = new QMainWindow(); // or your own class
// inheriting QMainWindow
QToolBar * myToolBar = new QToolBar();
mainWindow->addToolBar(myToolBar);
QHBoxLayout * layout = new QHBoxLayout();
layout->addWidget(mainWindow);
setLayout(layout);
}
действительно, a QMainWindow
не обязательно должен быть виджет верхнего уровня, и вы даже можете вставить несколько QMainWindow
s, так как дети одного виджета (может быть, не самый мудрый выбор, как пользователь наверное, путать отдельные наборы меню, панелей, виджетов и т. д.).
вы можете просто использовать функцию setMenuBar менеджера макетов, который установлен на вашем QDialog:
myDialog->layout()->setMenuBar(myMenuBar);
вы можете добавить QToolBar в QDialog. Но как от QWidget. Посмотрите, пожалуйста
MyDialog::MyDialog(QWidget *parent) : QDialog(parent)
{
QVBoxLayout *mainLayout = new QVBoxLayout(this);
QToolBar *toolBar = new QToolBar();
mainLayout->addWidget(toolBar);
QAction *action1 = new QAction("Add", toolBar);
QAction *action1 = new QAction("Del", toolBar);
//Add What you want
}
поскольку QToolBar является дочерним элементом QWidget, мы можем добавить его в качестве виджета. Используя Layout вы можете настроить его положение. Пожалуйста, проверьте эту ссылку http://developer.nokia.com/community/wiki/How_to_use_QToolBar_and_QToolButton_in_Qt