c++ - C++ 中的动态 QT4 菜单

标签 c++ qt user-interface qt4 qt-designer

我在 Linux 上使用 C++ 和 QT4。我希望在运行时将项目添加到菜单栏。我的包含菜单栏的主 GUI 是使用 QT Designer 设计的,并在下面的第一行代码中进行设置。

在我的主窗口构造函数中,我有以下测试代码,它可以正常编译。但是,执行程序时不会出现新的子菜单栏及其项目。我猜想 Qt 需要被告知以某种方式更新菜单栏。有什么想法吗?

 // Setup the user interface
 m_ui.setupUi(this);

 QMenu * iObjectsMenu = new QMenu(tr("Objects"), m_ui.menubar); //m_ui.menubar.menu_View->addMenu(tr("Objectz"));
 QAction * menu_testAction = new QAction(tr("Test"), m_ui.menubar);
 iObjectsMenu->addAction(menu_testAction);

最佳答案

按照您的做法,您需要将菜单放在某个地方,但您没有这样做。

我的做法有点不同。当您在设计器中制作菜单时,它们在 ui 成员中具有指针。然后您可以非常轻松地操作该菜单。

例如,我想要一个包含所有可以显示/隐藏的工具栏和停靠窗口的菜单。我查看了 QMainWindow::createPopup() 的代码,并制作了自己的外部函数 construct_view_menu(QMainWindow *parent, QMenu * view_menu)。在主窗口初始化期间使用 construct_view_menu(this, ui.menu_View) 调用它。函数只是将更多菜单和操作附加到该菜单。 menu_View 只是我与设计器创建的一个空菜单。

我发现这是最简单的方法,但您也可以创建新菜单,然后将它们附加或插入到菜单栏中;这是您忽略的最后一步。

关于c++ - C++ 中的动态 QT4 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401964/

相关文章:

c++ - 通过Eclipse在Linux上调试C/C++应用程序

c++ - Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

c++ - QThread - 如何停止 worker ?

linux - qtcreator 在 "stop"发送的信号

android检测对话框是否处于 Activity 状态?

c# - Datagridview单元格样式更新

c++ - 在多个文件中使用不带参数的#pragma hdrstop 有什么作用?

c++ - CMake在自定义命令中编译C++文件

C++我们什么时候应该更喜欢使用两个链接的static_cast而不是reinterpret_cast

java - 为 Bantumi 游戏创建 GUI