C++ Qt按钮切换页面

在QT中,可以使用QStackedWidget来实现页面的切换。具体步骤如下:

  1. 在QT设计器中拖放一个QStackedWidget控件,并在其中添加多个QWidget页面作为子控件。
  2. 在每个QWidget页面中添加需要展示的控件和布局。
  3. 在主窗口类中声明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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

猜你喜欢

转载自blog.csdn.net/m0_73443478/article/details/131087457