qt QMenuBar如何添加QWidget
时间: 2023-07-05 08:25:51 浏览: 536
QMenuBar是一个菜单栏控件,不能直接添加QWidget。但是可以在QMenu中添加QWidget,然后将QMenu添加到QMenuBar中。
例如,可以创建一个QMenu,然后在其中添加一个QWidget,如下所示:
```
QMenu *menu = new QMenu("Menu Name");
QWidget *widget = new QWidget;
menu->setMenuWidget(widget);
```
然后将QMenu添加到QMenuBar中,如下所示:
```
QMenuBar *menuBar = new QMenuBar;
menuBar->addMenu(menu);
```
这样,你就可以在QMenuBar中添加QWidget了。
相关问题
qt 为什么QMenuBar添加QWidgetAction后QWidgetAction在QmenuBar右边
QMenuBar 是一个特殊的菜单栏,它默认只能添加菜单项(QMenu)、分隔符(QAction)和窗口列表(QAction)。如果要在 QMenuBar 上添加 QWidgetAction,需要通过 QWidgetAction 的 `setDefaultWidget()` 方法将其包含的控件设置为一个 QWidget,并将该 QWidget 添加到 QMenuBar 上。这样做的效果是,在 QMenuBar 上会显示一个包含 QWidget 的按钮,单击该按钮会弹出 QWidget。由于 QWidgetAction 包含的是 QWidget,所以它不能被直接添加到 QMenu 中,而是会被放在 QMenuBar 的最右边。如果想要将 QWidgetAction 放在 QMenu 中,需要将 QWidgetAction 包装成 QAction,并将其添加到 QMenu 中。
qt 举个QMenuBar添加QWidgetAction的例子
好的,以下是一个简单的例子,演示如何在 QMenuBar 中添加一个包含 QPushButton 的 QWidgetAction:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMainWindow window;
QMenuBar *menuBar = window.menuBar();
// 创建一个 QAction,并将其设置为 QMenuBar 的 “File” 菜单项
QAction *fileAction = new QAction("File", &window);
QMenu *fileMenu = menuBar->addMenu(fileAction);
// 创建一个 QWidgetAction,并将其设置为 “File” 菜单项的子项
QWidgetAction *widgetAction = new QWidgetAction(&window);
QPushButton *button = new QPushButton("Button");
QWidget *widget = new QWidget();
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(button);
widgetAction->setDefaultWidget(widget);
fileMenu->addAction(widgetAction);
window.show();
return app.exec();
}
```
运行程序后,可以看到在 “File” 菜单项的右侧出现了一个箭头,点击箭头后会显示一个包含 QPushButton 的子菜单项。
阅读全文
相关推荐















