当我启动我的应用程序时,我在 Qt Designer 中选择了错误的模板。
我做了文件->新建->小部件。
现在我需要一个菜单。所以,我想我需要主窗口模板。
我可以无缝更改模板,还是必须创建新表格并将所有内容添加到上面?
当我启动我的应用程序时,我在 Qt Designer 中选择了错误的模板。
我做了文件->新建->小部件。
现在我需要一个菜单。所以,我想我需要主窗口模板。
我可以无缝更改模板,还是必须创建新表格并将所有内容添加到上面?
需要使用主窗口模板创建新的 ui 表单并将小部件内容复制到其中,因为主窗口具有中心小部件,如果我们不指定它,这会导致子元素消失,如上所述。
如果您在 .ui 中编辑 XML,那么更改QWidget
为QMainWindow
是不够的。首先需要添加:
<widget class="QWidget" name="centralwidget">
所有小部件或布局之前的元素,紧随其后
<property name="windowTitle">
<string>MainWindow</string>
</property>
元素(顺序可能不同)。并添加对应的标签</widget>
来关闭中央小部件元素 - 在主小部件的关闭元素之前</widget>
(之前<customwidgets>
或<resources>
)。这对我有用。
我在两个文件中进行了三行编辑,才将QWidget
模板更改为QMainWindow
.
刚才在 Qt 4.8.4 中,我做了以下事情:
我在 Qt Creator 之外打开了 ui 文件(在 Qt Creator 中关闭它之后),我在文件中编辑了一行:
编辑:备份您正在处理的内容,因为编辑 ui 文件有点不合时宜,并且可能会产生奇怪的、未定义的影响。
小部件.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QMainWindow" name="Widget"> <!-- This is the line I edited...
"QMainWindow" was "QWidget".-->
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Widget</string>
</property>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
小部件.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QMainWindow>// Edited this line, too
namespace Ui {
class Widget;
}
class Widget : public QMainWindow // Edited this line.
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
最终结果:现在 Qt Creator/Designer 允许我添加工具栏、菜单栏、状态栏等,只需右键单击现在 QMainWindow 的空白区域。
希望有帮助。