складывать страницы виджетов с помощью кнопки в Qt - PullRequest
0 голосов
/ 16 июня 2020

Как перемещаться по QStackWidget страницам с помощью QPushButton s? Какой метод нужно вызывать при каждом нажатии кнопки, чтобы открывать определенную страницу виджета стека.

С уважением и уважением,

1 Ответ

0 голосов
/ 16 июня 2020

QStackedWidget имеет метод .setCurrentIndex(int), который вы можете использовать для переключения на другую страницу. Вы можете использовать этот метод в сочетании с clicked() signal из 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);
    });

}

Вы также можете использовать обычные функциональные слоты вместо лямбда-функций:

//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);
}
...