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

Qt不同类之间参数的传递

一、信号槽方式

1: 在需要发送信号的子类增加一个信号函数

void set_send(double lonx, double laty);

sub.h
在这里插入图片描述

sub.cpp

emit set_send(lonx,laty);

在这里插入图片描述

2: 在需要接收信号的类增加一个槽函数

main.h

 void set_rece(double lonx, double laty);

在这里插入图片描述
main.cpp
1)引入子类头文件
在这里插入图片描述
2)槽函数实现

void MainWindow::set_rece(double lonx, double laty)
{
    qDebug()<<"set_rece"<<lonx<<laty;
}

在这里插入图片描述

3) 链接信号和槽

connect(setorigin_ui, &SetOrigin::set_send, this, &MainWindow::set_rece); 

在这里插入图片描述

注意:因为要在子窗口打开时建立连接,所以connect放在打开子窗口按钮的槽函数内

二、 使用extern 定义全局变量(未试)

文件A在函数外:

int a = 10

文件B在使用前:

extern int a;

这种方法不需要包含头文件

运行时出现报错“storage class specified for parameter lonx ”,因为刚开始将extern int args;变量声明在public下了,extern是存储类,然而未实例化的类不会给参数分配存储空间,因此应该将extern变量声明写在外侧,如下:
在这里插入图片描述

三、信号和槽知识补充

1、signals前面不可加public、private和protected进行修饰;slots前面可以加,因为Qt说槽函数可以当普通函数使用

2、signals区域的函数必须是void类型,而且这些信号函数没有函数体,也就是说不可以自己定义这些信号函数,你只要声明它就够了,其它不用管,Qt内部自己弄。

3、宏定义和函数指针不能用于信号和槽的参数,信号和槽也不能有缺省参数。

第一点:当信号与槽函数的参数数量相同时,它们参数类型要完全一致。
第二点:当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。

http://www.kler.cn/a/407786.html

相关文章:

  • 蓝桥杯每日真题 - 第22天
  • WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理
  • 密码学11
  • 网络协议之邮件协议(SMTP、POP3与IMAP)
  • 【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦
  • 分布式 Data Warebase - 构筑 AI 时代数据基石
  • ubuntu 配置 多个 git 客户端 账户
  • Modern Effective C++:Item 6 auto推导若非己愿,使用显式类型初始化惯用法
  • PostgreSQL技术内幕19:逻辑备份工具pg_dump、pg_dumpall
  • 【AI系统】GPU 架构回顾(从2010年-2017年)
  • Linux(1)
  • SparkSQL的执行过程:从源码角度解析逻辑计划、优化计划和物理计划
  • 前端:春节倒计时的简单实现
  • 在linux下用二进制方式安装mysql8
  • 5G NR:调制与编码策略(MCS)简介
  • C# 超链接控件LinkLabel无法触发Alt快捷键
  • 智能文档处理百宝箱,文档处理的必备利器
  • Java 对象头、Mark Word、monitor与synchronized关联关系以及synchronized锁优化
  • 学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P3 ~ P4)
  • uniapp实现开发遇到过的问题(持续更新中....)
  • 电脑使用——知乎、钉钉组件访问失败解决
  • 【tensorflow的安装步骤】
  • 数据结构-图的遍历
  • ChatGPT 桌面版发布了,如何安装?
  • android 使用实现音效--Equalizer
  • Python爬虫:获取1688关键词API接口数据