在QT中,可以使用QStackedWidget来实现页面的切换。具体步骤如下:
- 在QT设计器中拖放一个QStackedWidget控件,并在其中添加多个QWidget页面作为子控件。
- 在每个QWidget页面中添加需要展示的控件和布局。
- 在主窗口类中声明QStackedWidget对象和对应的页面索引值:
private:
QStackedWidget *stackedWidget;
int pageIndex1;
int pageIndex2;
在构造函数中初始化QStackedWidget对象并将所有页面添加到其中:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 初始化QStackedWidget
stackedWidget = new QStackedWidget(this);
// 添加页面到QStackedWidget
QWidget *page1 = new QWidget();
QLabel *label1 = new QLabel("Page 1");
QVBoxLayout *layout1 = new QVBoxLayout(page1);
layout1->addWidget(label1);
QWidget *page2 = new QWidget();
QLabel *label2 = new QLabel("Page 2");
QVBoxLayout *layout2 = new QVBoxLayout(page2);
layout2->addWidget(label2);
stackedWidget->addWidget(page1);
stackedWidget->addWidget(page2);
// 设置默认显示的页面
pageIndex1 = 0;
}
添加按钮并设置信号槽,通过按钮点击事件切换页面:
QPushButton *buttonPage1 = new QPushButton("Page 1", this);
connect(buttonPage1, &QPushButton::clicked, [=](){
if (pageIndex2 != -1) {
stackedWidget->removeWidget(stackedWidget->widget(pageIndex2));
pageIndex2 = -1;
}
stackedWidget->setCurrentIndex(pageIndex1);
});
QPushButton *buttonPage2 = new QPushButton("Page 2", this);
connect(buttonPage2, &QPushButton::clicked, [=](){
if (pageIndex2 == -1) {
QWidget *page2 = new QWidget();
QLabel *label2 = new QLabel("Page 3");
QVBoxLayout *layout2 = new QVBoxLayout(page2);
layout2->addWidget(label3);
stackedWidget->addWidget(page2);
pageIndex2 = stackedWidget->count() - 1;
}
stackedWidget->setCurrentIndex(pageIndex2);
});
在按钮的点击事件中,通过设置QStackedWidget的当前页面索引值来实现页面切换。可以根据需求添加或移除QWidget页面,并记录其对应的索引值。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓