1.核心原理:
2.登录界面与主窗口代码对比(简略,详细代码在后方)
3.源码:
widget.h(主窗口代码)
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<denglu.h>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void jm1();//显示主界面的信号槽
void jm2();//显示登录面的信号槽
private:
Ui::Widget *ui;
denglu two;//定义登录界面为two
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//connect();就是信息连接的工具
connect(ui->pushButton_denglu,SIGNAL(clicked()),this,SLOT(jm2()));
//pushButton_denglu触及发出信号,则在这个界面上用槽函数jm2();
connect(&two,SIGNAL(Mysignal()),this,SLOT(jm1()));
//如果收到来自登陆界面two的Mysignal()信号,则在这个界面上用槽函数jm1();
}
Widget::~Widget()
{
delete ui;
}
void Widget::jm2()
{
two.show();//登录界面显示
this->hide();//主窗口隐藏
}
void Widget::jm1()
{
this->show();主窗口显示
}
denglu.h
#ifndef DENGLU_H
#define DENGLU_H
#include <QMainWindow>
namespace Ui {
class denglu;
}
class denglu : public QMainWindow
{
Q_OBJECT
public:
explicit denglu(QWidget *parent = nullptr);
~denglu();
public slots:
void j1();//为了让主窗口显示的槽函数
signals:
void Mysignal();
private:
Ui::denglu *ui;
};
#endif // DENGLU_H
denglu.cpp
#include "denglu.h"
#include "ui_denglu.h"
denglu::denglu(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::denglu)
{
ui->setupUi(this);
connect(ui->returnbutton,SIGNAL(clicked()),this,SLOT(j1()));
//returnbutton触及,在这个界面发出信号触发槽函数j1();
}
denglu::~denglu()
{
delete ui;
}
void denglu::j1()
{
emit Mysignal();//发出Mysignal();这个信号
this->hide();//本窗口隐藏
}
效果:点击登录账户,主窗口隐藏,点击返回,主窗口显示。
欢迎交流讨论,如果需要评论邮箱,我发源码工程打包。