在Qt的主ui文件中嵌入另一个ui文件

新建一个需要添加的Qt类;

在主UI窗口中放入Widget控件;

#include "Login.h"

Login* changePassword = new Login(this);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(changePassword);
ui->widget->setLayout(layout);

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控件使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值