QT在一个源文件内新建多个UI界面并使用
时间: 2024-02-17 22:04:09 浏览: 591
在Qt中,可以在一个源文件内新建多个UI界面,并使用它们。下面是一个简单的示例:
1. 首先,在Qt Creator中创建一个新的Qt Widgets应用程序项目。
2. 在项目目录下创建两个新的.ui文件。以本例为例,我们创建了MyWidget1.ui和MyWidget2.ui两个文件。
3. 在Qt Creator中打开MyWidget1.ui文件,添加需要使用的控件,然后保存并关闭该文件。
4. 在Qt Creator中打开MyWidget2.ui文件,添加需要使用的控件,然后保存并关闭该文件。
5. 打开widget.h头文件,添加以下代码:
```cpp
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtUiTools/QUiLoader>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QWidget *m_widget1;
QWidget *m_widget2;
};
#endif // WIDGET_H
```
在这个头文件中,我们添加了两个私有成员变量m_widget1和m_widget2,用于存储从MyWidget1.ui和MyWidget2.ui文件中载入的窗口控件。
6. 打开widget.cpp源文件,添加以下代码:
```cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QVBoxLayout>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 载入MyWidget1.ui文件
QUiLoader loader;
QFile file(":/new/ui/MyWidget1.ui");
file.open(QFile::ReadOnly);
m_widget1 = loader.load(&file, this);
file.close();
// 将窗口控件添加到Widget类中
QVBoxLayout *layout1 = new QVBoxLayout(ui->widget1);
layout1->addWidget(m_widget1);
// 载入MyWidget2.ui文件
QFile file2(":/new/ui/MyWidget2.ui");
file2.open(QFile::ReadOnly);
m_widget2 = loader.load(&file2, this);
file2.close();
// 将窗口控件添加到Widget类中
QVBoxLayout *layout2 = new QVBoxLayout(ui->widget2);
layout2->addWidget(m_widget2);
}
Widget::~Widget()
{
// 释放从MyWidget1.ui文件中载入的窗口控件
delete m_widget1;
// 释放从MyWidget2.ui文件中载入的窗口控件
delete m_widget2;
delete ui;
}
```
在这个源文件中,我们在Widget类的构造函数中使用QUiLoader类从MyWidget1.ui和MyWidget2.ui文件中载入窗口控件,并将它们存储到m_widget1和m_widget2中。然后,我们将这些窗口控件添加到Widget类中。最后,在Widget类的析构函数中释放这些窗口控件。
7. 打开widget.ui文件,在其中添加两个QWidget控件,分别命名为widget1和widget2。
8. 编译并运行程序,你会看到两个UI界面被嵌入到Widget控件中。
在这个示例中,我们使用了QUiLoader类从两个不同的.ui文件中载入窗口控件。我们存储这些窗口控件,并在Widget控件中使用它们。
阅读全文