[QT基础]QT不同ui界面的简单切换(C++)
我不想512 2024-06-26 09:35:03 阅读 59
一,设备版本
window10,QT 5.11.1,语言c++
二,设计需求
设计两个ui界面,能实现一个ui界面到另一个ui界面的跳转。
三,代码设计
为了以防万一,如果是第一次使用qt创建ui界面可以参考以下博客
QT界面创建
1,代码思路
两个ui界面,使用一个按钮进行页面的切换,考虑到实际的应用场景,这里是通过两个具体的ui文件,让使用者从一个界面文件跳转到另一个界面文件,而不是在一个界面文件中创建两个界面,这样可以方便实际使用时对各个的界面布局。
ps:如果不知道如何给已有的文件继续添加ui界面文件,可以参考以下博客
QT增加界面文件
2,文件需求
拥有两个ui界面文件
3,ui文件布局
4,界面跳转代码
根据已有思路,在mianwindow1中创建一个mainwindow2的对象,通过按钮的槽函数进行mainwindow1的界面跳转到mianwindow2界面的跳转。
界面1.h文件
界面1.cpp文件
经过上面的步骤,我们已经能从界面1转到界面2。当然如果我们想从界面2转到界面1,用这个方法依然可以,但是我们还可以用信号与槽的方式让这个方式更简便。
5,信号与槽跳转
在界面2的头文件里面添加一个返回信号。
让界面2的按钮在点击时发送这个信号。
这样当我们在界面2时,只要点击按钮,就会发送一个返回的信号,这个时候,只要我们的界面1能接收到这个信号,那我们便能实现从界面2转到界面1的行为。
界面1接收信号,并执行界面跳转。
当然上面的槽函数也可以单独分离出来,实际情况根据需要进行修改即可。
四,代码源码
#ifndef MAINWINDOW1_H
#define MAINWINDOW1_H
#include <QMainWindow>
#include "mainwindow2.h"
namespace Ui {
class MainWindow1;
}
class MainWindow1 : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow1(QWidget *parent = 0);
~MainWindow1();
MainWindow2 *window = NULL;
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow1 *ui;
};
#endif // MAINWINDOW1_H
mainwindow1.cpp
#include "mainwindow1.h"
#include "ui_mainwindow1.h"
MainWindow1::MainWindow1(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow1)
{
ui->setupUi(this);
this->window = new MainWindow2;
connect(window,&MainWindow2::goback,this,[=](){
window->close();
this->show();
});
}
MainWindow1::~MainWindow1()
{
delete ui;
}
void MainWindow1::on_pushButton_clicked()
{
this->hide();
window->show();
}
mainwindow2.h
#ifndef MAINWINDOW2_H
#define MAINWINDOW2_H
#include <QMainWindow>
namespace Ui {
class MainWindow2;
}
class MainWindow2 : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow2(QWidget *parent = 0);
~MainWindow2();
signals:
void goback();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow2 *ui;
};
#endif // MAINWINDOW2_H
mainwindow2.cpp
#include "mainwindow2.h"
#include "ui_mainwindow2.h"
MainWindow2::MainWindow2(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow2)
{
ui->setupUi(this);
}
MainWindow2::~MainWindow2()
{
delete ui;
}
void MainWindow2::on_pushButton_clicked()
{
emit goback();
}
main.cpp
#include "mainwindow1.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow1 w;
w.show();
return a.exec();
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。