在Qt中,我创建了一个没有类的Designer表单。所以基本上,我只有一个文件myform.ui。我应该写什么代码来显示表单?
答案 0 :(得分:6)
如果在FORMS
部分的.pro中包含(d)ui文件,则在构建过程中将生成一个特殊的头文件。包含此头文件并使用它将子窗口小部件添加到运行时期间所需的任何QWidget。
此示例中的ui文件名为 mywidget.ui 。在.pro文件中,有一行说
FORMS += mywidget.ui
QtCreator将在项目资源管理器中显示该文件。此步骤很重要,否则在构建项目时不会生成头文件!
生成的头文件随后被称为 ui_mywidget.h ,构成设计窗口的类称为Ui::MyWidget
,可以按如下方式使用。
解决方案1 (QtCreator在您创建新的“ Qt Designer表单类”时的建议方式):
namespace Ui {
class MyWidget;
}
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
private:
Ui::MyWidget *ui; // Pointer to the UI class where the child widgets are
};
#include "ui_mywidget.h"
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this); // Create and add the child widgets to this widget
}
MyWidget::~MyWidget()
{
delete ui;
}
然后这个小部件就可以使用了,它将包含你在实例化它时在设计器中创建的子小部件:
MyWidget widget;
widget.show();
解决方案2 (不继承自QWidget):
#include "ui_mywidget.h"
...
QWidget *widget = new QWidget(...);
Ui::MyWidget ui; // Instance of the UI class where the child widgets are
ui.setupUi(widget); // Create and add the child widgets to this widget
widget->show();
...
答案 1 :(得分:0)
您可以使用QUiLoader加载ui文件。
答案 2 :(得分:0)
here说明了使用ui文件的官方方法。
如您所见,您有两个选择:“在编译时处理ui文件”或“在运行时”。
关于编译时处理,您还有其他三个子情况:“直接方法”(创建新的“ Qt Designer表单类”时采用的经典方法)和“单继承” /“多继承方法” 。在提到的文章中,您将找到所有详细信息。