当前位置: 首页 > news >正文

QT 使用信号与槽实现界面跳转

一、创建一个新的页面

1 > 在原有工程上新建一个页面

2 > 选择Qt - Qt 设计师界面类 - choose

3 > 选择Widget模板 - 下一步

4 > 输入自定义类名 - 下一步

会自动生成其同名的.h .cpp .ui文件

5 > 最终效果

Headers存放.h文件

Soueces存放.cpp文件

Forms存放.ui文件

二、创建连接

1 > 两个界面头文件

/*********************************第一个界面的头文件*********************************/
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jump();          //自定义跳转函数private slots:void on_jumpBtn_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H/*********************************第二个界面的头文件*********************************/
#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

2 > 源文件

/*********************************第一个界面的源文件*********************************/
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//信号函数也可以连接信号函数//connect(ui->jumpBtn, &QPushButton::clicked, this, &Widget::jump);
}Widget::~Widget()
{delete ui;
}跳转按钮对应的槽 函数
void Widget::on_jumpBtn_clicked()
{//发射跳转信号emit jump();    //jump是在头文件中自定义的信号函数//关闭当前 界面this->hide();
}/*********************************第二个界面的源文件*********************************/#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();          //将当前界面进行展示
}

3 > 主函数

#include "widget.h"
#include"form.h"   //第二个界面的头文件
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();Form f;   //实例化第二个界面//将第一个界面的信号函数与第二个界面的槽函数连接QObject::connect(&w, &Widget::jump,&f,&Form::jump_slot);return a.exec();
}

http://www.lryc.cn/news/155853.html

相关文章:

  • Burp插件HaE与Authz用法
  • element+vue table表格全部数据和已选数据联动
  • vue 防抖与节流用法
  • IntelliJ IDEA创建Web项目并使用Web服务器----Tomcat
  • rk3399 linux 5.10 usb 2.0设备上电概率性注册失败
  • OpenHarmony 4.0 源码编译hb 问题排查记录
  • Ubuntu20 安装 带cuda的opencv遇到的问题
  • 【每日运维】U盘启动盘安装 ESXi 6.7.0 安装卡在 loading /bnxtroce.v00
  • Linux的服务器日志分析及性能调优
  • java 浅谈ThreadLocal底层源码(通俗易懂)
  • 前端实习day37~day38
  • 题目:2635.转换数组中的每个元素
  • Docker Compose具体应用
  • FastAPI 参数的作用
  • 国内免费无限制的chatgpt导航和ai画画
  • 【USRP】集成化仪器系列2 :示波器,基于labview实现
  • Linux map type uncache 和 write combine区别
  • 【业务功能篇93】微服务-springcloud-多线程-异步处理-异步编排-CompletableFutrue-实战运用
  • 哈希的应用——位图
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆
  • 合并两个有序链表(每日一题)
  • React Hooks总览
  • 风向变了!智能汽车何以「降本」
  • 后端面试话术集锦第 十五 篇:java线程面试话术
  • cocos creator配置终端调试
  • 达梦类型转换问题-float转换为varchar
  • 怎么用postman连接websocket
  • 需求分析入门
  • 攻防世界-php_rce
  • 最小生成树Kruskal、Prim算法C++