要实现窗口切换,需要使用 Qt 的窗口管理类 QStackedWidget。QStackedWidget 提供了一种容器,可以在其中堆叠多个窗口小部件。只有当前窗口小部件是可见的,其他窗口小部件则被隐藏。

以下是实现窗口切换的步骤:

  1. 创建一个 QStackedWidget 对象,作为主窗口。
  2. 创建多个 QWidget 对象,每个对象代表一个窗口。
  3. 使用 addWidget() 方法将所有 QWidget 对象添加到 QStackedWidget 中。
  4. 使用 setCurrentIndex() 方法将默认显示的窗口设置为 0(第一个窗口)。
  5. 在需要切换窗口的时候,使用 setCurrentIndex() 方法将要显示的窗口的索引设置为当前索引。

下面是一个简单的例子:

mainwindow.h 文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStackedWidget>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_button1_clicked();
    void on_button2_clicked();
    void on_button3_clicked();

private:
    QStackedWidget *stackedWidget;
    QWidget *page1;
    QWidget *page2;
    QWidget *page3;
};
#endif // MAINWINDOW_H

mainwindow.cpp 文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    stackedWidget = new QStackedWidget(this);
    page1 = new QWidget;
    page2 = new QWidget;
    page3 = new QWidget;

    // 添加页面
    stackedWidget->addWidget(page1);
    stackedWidget->addWidget(page2);
    stackedWidget->addWidget(page3);

    // 第一页
    QPushButton *button1 = new QPushButton('Go to page 2', page1);
    connect(button1, SIGNAL(clicked()), this, SLOT(on_button1_clicked()));

    // 第二页
    QPushButton *button2 = new QPushButton('Go to page 3', page2);
    connect(button2, SIGNAL(clicked()), this, SLOT(on_button2_clicked()));

    // 第三页
    QPushButton *button3 = new QPushButton('Go to page 1', page3);
    connect(button3, SIGNAL(clicked()), this, SLOT(on_button3_clicked()));

    // 设置布局
    QVBoxLayout *layout1 = new QVBoxLayout(page1);
    layout1->addWidget(button1);

    QVBoxLayout *layout2 = new QVBoxLayout(page2);
    layout2->addWidget(button2);

    QVBoxLayout *layout3 = new QVBoxLayout(page3);
    layout3->addWidget(button3);

    // 设置默认页
    stackedWidget->setCurrentIndex(0);

    setCentralWidget(stackedWidget);
}

MainWindow::~MainWindow()
{
}

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

void MainWindow::on_button2_clicked()
{
    stackedWidget->setCurrentIndex(2);
}

void MainWindow::on_button3_clicked()
{
    stackedWidget->setCurrentIndex(0);
}

在这个例子中,我们创建了三个 QWidget 对象,每个对象代表一个窗口。我们使用 addWidget() 方法将这三个 QWidget 对象添加到 QStackedWidget 中。然后,我们在每个 QWidget 对象中添加了一个 QPushButton 对象,用于切换到其他窗口。

在 MainWindow 类中,我们实现了 on_button1_clicked()、on_button2_clicked() 和 on_button3_clicked() 槽函数,用于切换到其他窗口。在构造函数中,我们将 QStackedWidget 设置为主窗口的中央窗口。最后,我们使用 setCurrentIndex() 方法将默认显示的窗口设置为第一个窗口。

Qt 窗口切换实现:使用 QStackedWidget 简化操作

原文地址: https://www.cveoy.top/t/topic/nF1r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录