0

如何QStackWidget使用 s 导航页面QPushButton?每当单击按钮时都需要调用哪个方法,以便它打开一个特定的堆栈小部件页面。

感谢和问候,

4

1 回答 1

2

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

例子:

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);
}
于 2020-06-16T06:14:33.110 回答