在 Qt 中使用按钮堆叠小部件页面

stack widget pages using pushbutton in Qt

如何使用 QPushButton 导航 QStackWidget 页面? 单击按钮时需要调用哪个方法,以便打开特定的 stackwidget 页面。

感谢和问候,

QStackedWidget 有一个方法 .setCurrentIndex(int) 可以用来切换到不同的页面。您可以将该方法与 clicked() signalQPushButton 结合使用,以更改当前堆叠的小部件页面。

示例:

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //initially set current page to 0
    ui->stackedWidget->setCurrentIndex(0);

    //suppose we have buttons button1 and button2
    connect(button1, &QPushButton::clicked, this, [=]() {
        //set page to 1
        ui->stackedWidget->setCurrentIndex(1);
    });

    connect(button2, &QPushButton::clicked, this, [=]() {
        //set page to 2
        ui->stackedWidget->setCurrentIndex(2);
    });

}

您也可以使用普通函数槽而不是 lambda 函数:

//mainwindow.h file

class MainWindow{
//...
private slots:
  void onButton1Clicked();
  void onButton2Clicked();
}

//mainwindow.cpp file

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
  //...
    connect(button1, &QPushButton::clicked, this, &MainWindow::onButton1Clicked);
    connect(button2, &QPushButton::clicked, this, &MainWindow::onButton2Clicked);
}

void MainWindow::onButton1Clicked()
{
  ui->stackedWidget->setCurrentIndex(1);
}

void MainWindow::onButton2Clicked()
{
  ui->stackedWidget->setCurrentIndex(1);
}