Qt 在主UI之外创建QMenu类
首先,我想说的是,我来自java背景 我正在QtCreator中设计我的第一个应用程序,我想在其中添加菜单 我想在一个单独的文件中创建一个QMenu小部件,以便使我的主UI窗口保持简单和干净 这可以通过在xml文件中定义QMenu,然后使用file(load)方法或类似方法将其包含在main.ui文件中来实现 但是在QT creator中,我找不到如何创建从QMenu继承的新文件 正确的方法是什么 我希望每个组件都简单而具体 因此,UI将只是“主要”方法的入口点,它将绘制主窗口,并包括初始菜单项,我打算显示一个简单的“欢迎”类型页面,其中有一个连接到数据源的菜单项 我希望菜单内容会根据数据类型(或者更确切地说是用户操作的程序部分)而变化。我打算在与用户交互相关的不同文件中处理这些不同的菜单 提前谢谢Qt 在主UI之外创建QMenu类,qt,menu,Qt,Menu,首先,我想说的是,我来自java背景 我正在QtCreator中设计我的第一个应用程序,我想在其中添加菜单 我想在一个单独的文件中创建一个QMenu小部件,以便使我的主UI窗口保持简单和干净 这可以通过在xml文件中定义QMenu,然后使用file(load)方法或类似方法将其包含在main.ui文件中来实现 但是在QT creator中,我找不到如何创建从QMenu继承的新文件 正确的方法是什么 我希望每个组件都简单而具体 因此,UI将只是“主要”方法的入口点,它将绘制主窗口,并包括初始菜单项
David我假设您希望使用表示主菜单或QMainWindow的QMenuBar。QMenu本身通常不嵌入其他小部件中 这是很有可能的。创建从QWidget派生的设计器窗体类。我们称之为“我的菜单”。使用文本编辑器打开UI文件,并将QWidget替换为行
中的QMenuBar。您可能还需要删除无法应用于QMenuBar的title属性和其他属性。现在切换到CPP和H文件,并使您的类从QMenuBar而不是QWidget派生
接下来,在表单编辑器中打开主窗口UI,在对象树中找到QMenuBar条目,并在上下文菜单中选择“升级到”。键入新类名并应用。现在应该可以了
文件应如下所示:
标题:
#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;
};
用户界面:
我的菜单
0
0
135
94
C
A.
B
谢谢,听起来像是一条路要走,我不知道“升级到”选项。我试试看。然后回来报到
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>