Qt 如何将模板从窗口小部件更改为主窗口?
启动应用程序时,我在Qt Designer中选择了错误的模板 我做了文件->新建->小部件 现在我需要一份菜单。所以,我想我需要主窗口模板Qt 如何将模板从窗口小部件更改为主窗口?,qt,Qt,启动应用程序时,我在Qt Designer中选择了错误的模板 我做了文件->新建->小部件 现在我需要一份菜单。所以,我想我需要主窗口模板 我可以无缝更改模板,还是必须创建新表单并将所有内容添加到模板上?我在两个文件中进行了三行编辑,才将QWidget模板更改为QMainWindow 刚才在Qt 4.8.4中,我做了以下工作: 我在Qt Creator外部打开了ui文件(在Qt Creator中关闭后),并在文件中编辑了一行: 编辑:备份您正在处理的内容,因为编辑ui文件有点不洁,可能会产生奇怪
我可以无缝更改模板,还是必须创建新表单并将所有内容添加到模板上?我在两个文件中进行了三行编辑,才将
QWidget
模板更改为QMainWindow
刚才在Qt 4.8.4中,我做了以下工作:
我在Qt Creator外部打开了ui文件(在Qt Creator中关闭后),并在文件中编辑了一行:
编辑:备份您正在处理的内容,因为编辑ui文件有点不洁,可能会产生奇怪的、未定义的影响
widget.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>
小装置
0
0
400
300
小装置
widget.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
#ifndef小部件
#定义小部件
#也包括//编辑了这一行
名称空间用户界面{
类控件;
}
类小部件:publicqmainWindow//编辑了这一行。
{
Q_对象
公众:
显式小部件(QWidget*parent=0);
~Widget();
私人:
Ui::Widget*Ui;
};
#endif//WIDGET\u H
最终结果:现在QT创建者/设计器允许我在右QualWindows的空白区域右击右键添加工具栏、菜单栏、状态栏等。
希望能有所帮助。需要使用主窗口模板创建新的ui表单,并将小部件内容复制到其中,因为主窗口具有中心小部件,如果我们不指定它,则会导致子元素消失,如上所述 如果在.ui中编辑XML,那么将更改为QWidget
是不够的。首先需要补充:QMainWindow
<widget class="QWidget" name="centralwidget">
元素在所有窗口小部件或布局之前,紧跟其后
<property name="windowTitle"> <string>MainWindow</string> </property>
主窗口
元素(顺序可能不同)。并添加相应的标签,用于最终关闭中心小部件元素-在关闭主小部件的元素之前(在或之前)。这对我很有用。使用设计器,您可能需要创建一个新表单,并将小部件复制粘贴到新表单上。通过修改窗口的类文件,您可以尝试对不同的小部件(如QDialog或QWidget)进行子分类,但这不会改变设计器处理小部件的方式。还有,这是Qt4.x还是Qt5.x?我不得不说,没有内置的方法来实现这一点是一个很大的烦恼。我明白这不是每天都会发生的事情,但人们会只做一次决定,并且总是正确的想法是。。。莫名其妙。在XML中将更改为QWidget
,导致子元素消失。这在Qt5中是不够的。您还需要所做的更改。显然是因为有人在对QMainWindow
下的小部件树的结构进行假设。我想补充一点,当更改为QMainWindow
时,这一步骤也是必需的。QDockWidget