qt 实现qstackedwidget切换界面
时间: 2023-07-13 13:18:24 浏览: 297
QT具有切换过渡效果的StackedWidget
实现 `QStackedWidget` 切换界面的步骤如下:
1. 创建 `QStackedWidget` 控件,用于存放需要切换的界面。
```cpp
QStackedWidget* stackedWidget = new QStackedWidget(this);
```
2. 创建需要切换的界面,并添加到 `QStackedWidget` 控件中。
```cpp
QWidget* page1 = new QWidget;
stackedWidget->addWidget(page1);
QWidget* page2 = new QWidget;
stackedWidget->addWidget(page2);
```
3. 在需要切换界面的时候,调用 `QStackedWidget` 控件的 `setCurrentWidget` 或 `setCurrentIndex` 方法。
```cpp
stackedWidget->setCurrentWidget(page1); // 切换到第一个界面
stackedWidget->setCurrentIndex(1); // 切换到第二个界面
```
完整示例代码如下:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建 QStackedWidget 控件
QStackedWidget* stackedWidget = new QStackedWidget;
// 创建需要切换的界面,并添加到 QStackedWidget 控件中
QWidget* page1 = new QWidget;
QLabel* label1 = new QLabel("This is page 1");
QHBoxLayout* layout1 = new QHBoxLayout(page1);
layout1->addWidget(label1);
stackedWidget->addWidget(page1);
QWidget* page2 = new QWidget;
QLabel* label2 = new QLabel("This is page 2");
QHBoxLayout* layout2 = new QHBoxLayout(page2);
layout2->addWidget(label2);
stackedWidget->addWidget(page2);
// 创建按钮,并连接到切换界面的槽函数
QPushButton* button1 = new QPushButton("Page 1");
QObject::connect(button1, &QPushButton::clicked, [stackedWidget](){ stackedWidget->setCurrentIndex(0); });
QPushButton* button2 = new QPushButton("Page 2");
QObject::connect(button2, &QPushButton::clicked, [stackedWidget](){ stackedWidget->setCurrentIndex(1); });
// 创建主窗口,并添加 QStackedWidget 控件和按钮
QWidget mainWidget;
QVBoxLayout* mainLayout = new QVBoxLayout(&mainWidget);
mainLayout->addWidget(stackedWidget);
QHBoxLayout* buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(button1);
buttonLayout->addWidget(button2);
mainLayout->addLayout(buttonLayout);
// 显示窗口
mainWidget.show();
return app.exec();
}
```
运行程序,点击按钮即可切换界面。
阅读全文