你能在QDialog中添加一个工具栏吗
Can you add a toolbar to QDialog?
我正在处理一个项目,该项目需要调用一个带有工具栏的模式窗口,以便在加载某些数据之前对其进行一些处理。我需要工具栏的原因是用户有几个不同的可能选项可以组合。
这里显而易见的选择是模态对话框(我现在正在处理它)。问题是我想要一个工具栏。这是一个由两部分组成的问题:
- 是否可以将工具栏添加到
QDialog
?(也可以在Qt Designer中执行此操作吗?) - 如果1。不可能,如何制作
QMainWindow
模态
您可以简单地使用安装在QDialog:上的布局管理器的setMenuBar函数
myDialog->layout()->setMenuBar(myMenuBar);
如果您不需要QMainWindow工具栏的内置拖放功能,您只需在任何布局中添加一个QToolBar,包括QDialog的layout()。有关详细信息,请参阅下面DigviJay Patil的回答,这在概念上肯定更干净。
否则,请继续阅读。
-
不能在QMainWindow::addToolBar()意义上将
QToolBar
直接添加到QDialog
中,因为QDialog
只继承QWidget
而不继承QMainWindow
,正如您所指出的(因此没有方法addToolBar()
) -
您不能使
QMainWindow
成为模态,但可以通过以下方式在QDialog
中插入QMainWindow
:
代码:
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);
}
事实上,QMainWindow
不一定是顶级小部件,您甚至可以插入几个QMainWindow
作为单个小部件的子部件(尽管这可能不是最明智的选择,因为用户可能会与单独的菜单栏、工具栏、停靠小部件等混淆)
您可以在QDialog中添加QToolBar。但作为一个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的子代,我们可以将其添加为Widget。使用Layout可以调整其位置。请检查此链接http://developer.nokia.com/community/wiki/How_to_use_QToolBar_and_QToolButton_in_Qt
- cmake在构建过程中使用另一个工具检测标志
- wx工具栏:获取工具的位置和大小
- 带有下拉菜单的wx工具栏:对所选项目没有反应
- Microsoft 编辑默认工具栏时的 Visual Studio 'Unknown Bitmap Format'
- 单击工具按钮后,在GTKMM工具栏中更改工具按钮图标
- wxFormBuilder 工具栏间距
- C++在工具栏中心拉伸QLineEdit
- MFC 自定义 - 添加新工具栏
- 如何在两个其他两个之间设置工具栏
- 是否有一个工具来记录代码执行
- Win32 工具栏下拉按钮消息处理
- 如何在 Q工具栏中添加可拉伸垫片
- 将图标添加到工具栏中的 QAction
- 在Qt上,如何在运行时更改工具栏中操作的图标
- 在 MFC 中创建带有事件的工具栏
- Win32工具栏和24位图像
- 自定义图像工具栏 WTL
- 如何将小部件添加到qt工具栏
- 制作一个安装程序,在安装后安装工具栏
- 你能在QDialog中添加一个工具栏吗