2

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

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

//设置用户界面
 m_ui.setupUi(这个);

 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);
4

2 回答 2

4

你这样做的方式,你需要把菜单放在某个地方,而你还没有这样做。

我做的有点不同。当您在设计器中制作菜单时,它们在 ui 成员中有指针。然后,您可以很容易地操作该菜单。

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

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

于 2010-12-09T19:24:14.230 回答
0

我只会在您的设置代码而不是 ui 中生成菜单,保留一个指向 QMenu 的成员变量(用 new 分配)

于 2010-12-09T20:01:06.443 回答