我是Qt的新手,目前正在玩Qt Creator和原始C ++代码。我设法通过向两者添加QAction对象来实现一些简单的功能,包括菜单和工具栏。但是我遇到了一些困难:
我想要做的是有一个菜单选项,它有一个子菜单,例如新的,带有一个项目偶合的子菜单,并在QToolbar上复制它。我在菜单中管理它:New作为QMenu,子菜单项作为QAction对象。我无法看到如何在工具栏中使用它,例如一个新按钮,当单击时,将运行“默认”QAction(例如第一个子菜单项),但右侧有一个较小的菜单按钮,提供所有其他选项。我想这类似于Office工具栏上的撤消/重做按钮。
答案 0 :(得分:23)
我相信QToolButton窗口小部件应该可以正常运行,看看以下示例是否适合您:
QMenu *menu = new QMenu();
QAction *testAction = new QAction("test menu item", this);
menu->addAction(testAction);
QToolButton* toolButton = new QToolButton();
toolButton->setMenu(menu);
toolButton->setPopupMode(QToolButton::InstantPopup);
toolBar->addWidget(toolButton);
希望这有帮助,尊重
答案 1 :(得分:3)
serge_gubenco的答案将起作用,除非窗口需要调整得更小并且Qt尝试将QToolButton本身放在弹出菜单中。它可能无法这样做。 请参阅http://doc.qt.io/archives/qt-4.7/qtoolbar.html。
解决方案是使用快速QWidgetAction,如下所示在修改后的代码段中。
QMenu *menu = new QMenu();
QAction *testAction = new QAction("test menu item", this);
menu->addAction(testAction);
QToolButton* toolButton = new QToolButton();
toolButton->setMenu(menu);
toolButton->setPopupMode(QToolButton::InstantPopup);
QWidgetAction* toolButtonAction = new QWidgetAction(this);
toolButtonAction->setDefaultWidget(toolButton);
toolBar->addAction(toolButtonAction);
答案 2 :(得分:2)
似乎QToolButton
已经有某种子菜单,其设置为QToolButton::setPopupMode(ToolButtonPopupMode mode)
。如果我说得对,那将是一个开始的地方:http://doc.qt.io/archives/qt-4.7/qtoolbutton.html#ToolButtonPopupMode-enum