Qt 多界面切换实现代码示例
以下是一个简单的示例,演示如何使用 Qt 实现多个界面之间的切换。
在本示例中,我们将创建两个界面:一个主界面和一个设置界面。在主界面中,我们将添加一个按钮,当用户单击该按钮时,将转换到设置界面。在设置界面中,我们将添加一个返回按钮,当用户单击该按钮时,将返回到主界面。
首先,我们需要为每个界面创建一个 QWidget 类。我们将称之为 MainWindow 和 SettingsWindow。 MainWindow 将包含一个 QPushButton,SettingsWindow 将包含一个 QLabel 和一个 QPushButton。
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QPushButton>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
private:
QPushButton *m_settingsButton;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "settingswindow.h"
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
m_settingsButton = new QPushButton('Settings', this);
connect(m_settingsButton, &QPushButton::clicked, [=](){
SettingsWindow *settings = new SettingsWindow(this);
settings->show();
hide();
});
}
SettingsWindow.h
#ifndef SETTINGSWINDOW_H
#define SETTINGSWINDOW_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
class SettingsWindow : public QWidget
{
Q_OBJECT
public:
SettingsWindow(QWidget *parent = nullptr);
private:
QLabel *m_label;
QPushButton *m_backButton;
};
#endif // SETTINGSWINDOW_H
SettingsWindow.cpp
#include "settingswindow.h"
#include "mainwindow.h"
SettingsWindow::SettingsWindow(QWidget *parent)
: QWidget(parent)
{
m_label = new QLabel('Settings', this);
m_backButton = new QPushButton('Back', this);
connect(m_backButton, &QPushButton::clicked, [=](){
MainWindow *main = qobject_cast<MainWindow*>(parent);
main->show();
delete this;
});
}
在 MainWindow 的构造函数中,我们创建了一个 QPushButton,并将其添加到 MainWindow 中。我们使用 connect 函数将 QPushButton 的 clicked 信号连接到一个 lambda 函数中。在 lambda 函数中,我们创建了一个新的 SettingsWindow 对象,并将其显示出来,然后隐藏 MainWindow。
在 SettingsWindow 的构造函数中,我们创建了一个 QLabel 和一个 QPushButton,并将它们添加到 SettingsWindow 中。我们使用 connect 函数将 QPushButton 的 clicked 信号连接到一个 lambda 函数中。在 lambda 函数中,我们将 parent 对象转换为 MainWindow 指针,并使用 show 函数显示 MainWindow,然后删除 SettingsWindow。
现在我们可以将这些类添加到我们的主函数中并运行它:
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
这将创建一个 MainWindow 对象,并将其设置为应用程序的主窗口。当用户单击“Settings”按钮时,将显示一个新的 SettingsWindow,当用户单击“Back”按钮时,将返回 MainWindow。
原文地址: https://www.cveoy.top/t/topic/n0Ei 著作权归作者所有。请勿转载和采集!