第一个界面头文件:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QIcon> //图标头文件
#include <QPushButton> //按钮类头文件QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECT //有关信号与槽的元对象public:Widget(QWidget *parent = nullptr);~Widget();signals:void my_signal();
public slots:void btn1_slot();//自定义槽函数private:Ui::Widget *ui; //使用ui界面对应头文件中的命名空间中的类定义的指针QPushButton *btn1;
};#endif // WIDGET_H
第一个界面源文件:
#include "widget.h" //引入自定义头文件
#include "ui_widget.h" //引入ui界面的头文件Widget::Widget(QWidget *parent): QWidget(parent) //调用父类的有参构造, ui(new Ui::Widget) //构造出ui界面拖拽的成员,并且将地址赋值给ui指针
{ui->setupUi(this); //周用设置界面函数,给ui界面上的组件申请空间//设置窗口大小this->resize(600,400);//设置窗口标题this->setWindowTitle("聊天室");//设置窗口图标this->setWindowIcon(QIcon("E:\\嵌入式\\QT\\图标库\\icon_h8db9qyxft\\QQ.png"));//添加按钮btn1=new QPushButton("登录",this);btn1->resize(100,50);btn1->move(400,300);btn1->setIcon(QIcon("E:\\photo\\9.jpg"));//将按钮1的clicked信号连接到自定义的信号中connect(btn1,&QPushButton::clicked,this,&Widget::btn1_slot);
}Widget::~Widget()
{delete ui;
}void Widget::btn1_slot()
{//跳转到第二个界面emit my_signal();//将自身界面关闭this->close();
}
第二个界面头文件:
#ifndef SECOND_H
#define SECOND_H#include <QWidget>namespace Ui {
class second;
}class second : public QWidget
{Q_OBJECTpublic:explicit second(QWidget *parent = nullptr);~second();public slots:void jump_slot();private:Ui::second *ui;
};#endif // SECOND_H
第二个界面源文件:
#include "second.h"
#include "ui_second.h"second::second(QWidget *parent) :QWidget(parent),ui(new Ui::second)
{ui->setupUi(this);}second::~second()
{delete ui;
}void second::jump_slot()
{this->show();
}
测试文件:
#include "widget.h"
#include "second.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();second s;QObject::connect(&w,&Widget::my_signal,&s,&second::jump_slot);return a.exec();
}
效果: