请编写一个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/eZe8 著作权归作者所有。请勿转载和采集!