qt按钮打开新ui界面
时间: 2023-10-14 09:10:55 浏览: 156
Qt Designer,仿作一个ui界面的练习(四):编写代码文章的资源
要在Qt中实现按钮打开新的UI界面,可以使用QStackedWidget控件。QStackedWidget是一个堆栈窗口部件,可以在其中添加多个子窗口,并通过在堆栈中切换来显示不同的子窗口。
以下是实现按钮打开新的UI界面的步骤:
1. 在Qt Designer中创建一个新的UI界面,例如new_ui.ui。
2. 在主窗口的构造函数中创建一个QStackedWidget控件,并将其设置为主窗口的中心部件:
```
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建堆栈窗口部件
m_stackWidget = new QStackedWidget(this);
// 设置堆栈窗口部件为主窗口的中心部件
setCentralWidget(m_stackWidget);
}
```
3. 创建一个新的QWidget对象,并将其加载为新的UI界面:
```
// 创建新的QWidget对象
QWidget *newWidget = new QWidget();
// 加载新的UI界面
Ui::NewUi ui;
ui.setupUi(newWidget);
```
4. 将新的QWidget对象添加到QStackedWidget控件中:
```
// 将新的QWidget对象添加到QStackedWidget控件中
m_stackWidget->addWidget(newWidget);
```
5. 创建一个QPushButton按钮,并在其clicked()信号中切换到新的UI界面:
```
// 创建QPushButton按钮
QPushButton *button = new QPushButton("Open New UI", this);
// 将QPushButton按钮添加到主窗口
layout()->addWidget(button);
// 在QPushButton按钮的clicked()信号中切换到新的UI界面
connect(button, &QPushButton::clicked, [this](){
m_stackWidget->setCurrentIndex(1); // 1表示新的UI界面在堆栈窗口部件中的索引
});
```
完整的示例代码如下:
```
#include <QMainWindow>
#include <QPushButton>
#include <QStackedWidget>
#include "new_ui.h" // 新的UI界面头文件
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
// 创建堆栈窗口部件
m_stackWidget = new QStackedWidget(this);
// 设置堆栈窗口部件为主窗口的中心部件
setCentralWidget(m_stackWidget);
// 创建QPushButton按钮
QPushButton *button = new QPushButton("Open New UI", this);
// 将QPushButton按钮添加到主窗口
layout()->addWidget(button);
// 在QPushButton按钮的clicked()信号中切换到新的UI界面
connect(button, &QPushButton::clicked, [this](){
m_stackWidget->setCurrentIndex(1); // 1表示新的UI界面在堆栈窗口部件中的索引
});
// 创建新的QWidget对象
QWidget *newWidget = new QWidget();
// 加载新的UI界面
Ui::NewUi ui;
ui.setupUi(newWidget);
// 将新的QWidget对象添加到QStackedWidget控件中
m_stackWidget->addWidget(newWidget);
}
private:
QStackedWidget *m_stackWidget; // 堆栈窗口部件
};
```
阅读全文