C++ Qt代码实现多界面切换的StackedWidget方法
时间: 2023-09-12 16:03:07 浏览: 393
在Qt中,可以使用QStackedWidget类实现多界面切换。QStackedWidget类继承自QWidget类,可以将多个QWidget子类对象添加到其中,这些QWidget子类对象将会被叠加在一起,只有当前显示的QWidget子类对象是可见的。
下面是一个简单的例子,演示如何使用QStackedWidget实现多界面切换:
1. 首先,在Qt Creator中创建一个新的Qt Widgets应用程序项目。
2. 在MainWindow.ui中,拖拽一个QStackedWidget控件到窗口中。
3. 在项目中创建多个QWidget子类,每个QWidget子类代表一个界面。
4. 在MainWindow.cpp中,依次创建多个QWidget子类对象,并将它们添加到QStackedWidget中。
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "page1.h"
#include "page2.h"
#include "page3.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 创建多个界面
Page1 *page1 = new Page1();
Page2 *page2 = new Page2();
Page3 *page3 = new Page3();
// 将界面添加到StackedWidget中
ui->stackedWidget->addWidget(page1);
ui->stackedWidget->addWidget(page2);
ui->stackedWidget->addWidget(page3);
}
MainWindow::~MainWindow()
{
delete ui;
}
```
5. 在MainWindow.ui中,添加多个QPushButton控件,每个QPushButton控件对应一个界面。
6. 在MainWindow.cpp中,将QPushButton控件的clicked()信号连接到QStackedWidget控件的setCurrentIndex()槽函数,以实现界面切换。
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "page1.h"
#include "page2.h"
#include "page3.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 创建多个界面
Page1 *page1 = new Page1();
Page2 *page2 = new Page2();
Page3 *page3 = new Page3();
// 将界面添加到StackedWidget中
ui->stackedWidget->addWidget(page1);
ui->stackedWidget->addWidget(page2);
ui->stackedWidget->addWidget(page3);
// 连接QPushButton控件的clicked()信号到QStackedWidget控件的setCurrentIndex()槽函数
connect(ui->pushButton1, &QPushButton::clicked, [=](){
ui->stackedWidget->setCurrentIndex(0);
});
connect(ui->pushButton2, &QPushButton::clicked, [=](){
ui->stackedWidget->setCurrentIndex(1);
});
connect(ui->pushButton3, &QPushButton::clicked, [=](){
ui->stackedWidget->setCurrentIndex(2);
});
}
MainWindow::~MainWindow()
{
delete ui;
}
```
7. 运行程序,点击不同的QPushButton控件,可以看到不同的界面被显示。
阅读全文