我假设您想使用代表主菜单或 QMainWindow 的 QMenuBar。QMenu 本身通常不嵌入到其他小部件中。
这是很有可能的。创建从 QWidget 派生的设计器表单类。让我们称之为My_menu
。使用文本编辑器打开 UI 文件并将 QWidget 替换为 QMenuBar 行<widget class="QWidget" name="My_menu">
。您可能还需要删除无法应用于 QMenuBar 的 title 属性和其他属性。现在切换到 CPP 和 H 文件,并使您的类从 QMenuBar 派生而不是 QWidget。
接下来,在表单编辑器中打开主窗口 UI,在对象树中找到 QMenuBar 条目,然后在其上下文菜单中选择“Promote to”。输入您的新班级名称并申请。它现在应该可以工作了。
文件应如下所示:
标题:
#include <QMenuBar>
namespace Ui {
class My_menu;
}
class My_menu : public QMenuBar
{
Q_OBJECT
public:
explicit My_menu(QWidget *parent = 0);
~My_menu();
private:
Ui::My_menu *ui;
};
资源:
My_menu::My_menu(QWidget *parent) :
QMenuBar(parent),
ui(new Ui::My_menu)
{
ui->setupUi(this);
}
My_menu::~My_menu()
{
delete ui;
}
用户界面:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>My_menu</class>
<widget class="QMenuBar" name="My_menu">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>135</width>
<height>94</height>
</rect>
</property>
<widget class="QMenu" name="menuC">
<property name="title">
<string>c</string>
</property>
</widget>
<action name="actionA">
<property name="text">
<string>a</string>
</property>
</action>
<action name="actionB">
<property name="text">
<string>b</string>
</property>
</action>
<addaction name="actionA"/>
<addaction name="actionB"/>
<addaction name="menuC"/>
</widget>
<resources/>
<connections/>
</ui>