gpt4 book ai didi

c++ - 如何将 QMenu 转换为 QMenuBar?

转载 作者:行者123 更新时间:2023-12-03 12:48:04 25 4
gpt4 key购买 nike

我有QMenu,其中包含子菜单:

QMenu menu;
// Add some submenus
menu.addMenu(new QMenu("1", menu));
menu.addMenu(new QMenu("2", menu));
menu.addMenu(new QMenu("3", menu));

我想将这些子菜单从 QMenu 移动到 QMenuBar:

QMenuBar* menubar = convertFromQMenu(&menu);

我认为 convertFromQMenu 的实现可能如下所示:

QMenuBar* convertFromQMenu(QMenu* menu) {
QMenuBar *menubar = new QMenuBar();
/*
for(QMenu* menu: menu->menus()) {
menu.setParent(menubar);
menubar.addMenu(menu);
}
*/

return menubar;
}

但是,注释的代码无法编译。

如何解决这个问题?

最佳答案

你不需要那种“转换”。如果你仔细阅读Qt官方doc关于 QMenuBar 和 addMenu() 成员,您可以轻松地将 QMenu 添加到 QMenuBar 中:

QMenu menu;
// Add some menus
menu.add (new QMenu("1", menu));
menu.add (new QMenu("2", menu));
menu.add (new QMenu("3", menu));

QMenuBar menubar;
menubar.addMenu(&menu);

如果您想使用 QMainWindow 菜单栏,文档指出:

In most main window style applications you would use the menuBar() function provided in QMainWindow, adding QMenus to the menu bar and adding QActions to the pop-up menus.

Example (from the Menus example):

fileMenu = menuBar()->addMenu(tr("&File"));

fileMenu->addAction(newAct);

关于c++ - 如何将 QMenu 转换为 QMenuBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com