我在 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/