QT如何实现点击按钮在一个窗口显示不同的界面
时间: 2023-06-15 09:03:13 浏览: 494
在Qt中,可以使用QStackedWidget控件来实现在同一个窗口中显示不同的界面。QStackedWidget是一个可以堆叠多个窗口部件的容器,只有当前窗口部件是可见的。
具体实现步骤如下:
1. 在Qt Designer中创建不同的界面,并将它们保存为.ui文件。
2. 创建一个主窗口,并在主窗口中添加一个QStackedWidget控件。
3. 在主窗口的构造函数中,将每个.ui文件中的窗口部件加载到QStackedWidget控件中。
4. 在主窗口中添加按钮,并为每个按钮设置一个槽函数,用于切换到对应的界面。
5. 在槽函数中,使用setCurrentIndex()函数将QStackedWidget控件中当前显示的窗口部件切换到对应的界面。
示例代码如下:
```
// MainWindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 加载不同的界面
page1 = new Page1();
page2 = new Page2();
// 将界面添加到QStackedWidget控件中
ui->stackedWidget->addWidget(page1);
ui->stackedWidget->addWidget(page2);
// 连接按钮的槽函数
connect(ui->btnPage1, SIGNAL(clicked()), this, SLOT(showPage1()));
connect(ui->btnPage2, SIGNAL(clicked()), this, SLOT(showPage2()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showPage1()
{
// 切换到第一个界面
ui->stackedWidget->setCurrentWidget(page1);
}
void MainWindow::showPage2()
{
// 切换到第二个界面
ui->stackedWidget->setCurrentWidget(page2);
}
```
其中,MainWindow是主窗口的类名,Page1和Page2是两个不同界面的类名。在Qt Designer中创建的界面需要使用uic工具进行转换,转换后的类名格式为ui_XXX.h。