首页 > 其他分享 >Qt 信号槽连接不成功问题原因汇总

Qt 信号槽连接不成功问题原因汇总

时间:2022-09-07 16:23:40浏览次数:72  
标签:Qt int 汇总 参数 connect 信号 连接

1. 拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏。

Qt帮助手册里搜索 “Signals & Slots”,可以看到以下说明:

想要使用信号槽,必须继承QObject,必须加Q_OBJECT宏。

2. 信号槽函数签名不匹配

主要分以下几种情形:

  • 信号槽参数类型不匹配:如int对double。需要特别指出的是,在参数类型属于某命名空间时,要把命名空间写完整!

  • 信号槽参数个数不匹配;

  • 数签名只需要参数类型,不可以写参数名称和返回值。如:void func(int a)要写成func(int)。

3. 连接方式为Qt::QueuedConnection时,参数类型没有注册。

需要使用

qRegisterMetaType<此处为变量类型名称>("此处为变量类型名称");

来注册。
在Qt帮助手册中搜索qRegisterMetaType,有相关说明。

注意在连接方式为Qt::DirectConnection(阻塞式触发),不存在此问题。因为阻塞式触发,只需要将参数进行值传递,拷贝过去即可。而以Qt::QueuedConnection(消息队列式)连接的情况下,需要将变量转成通用数据类型QVariant存储,而用QVariant存储,必须要注册此类型。

4. 两个子线程之间在运行时,从一个线程connect另外一个线程,会提示连接不成功。

解决方法:通过主线程中转信号。

5.connect时,信号槽函数参数只要给出类型,不要写参数名称。

如连接

connect(this, SIGNAL(sigOk(int)),this,SLOT(slotOk(int)))

写成下面这样是错误的:

connect(this,SIGNAL(sigOk(int value)),this,SLOT(slotOk(int value)))

根据需要,可以采用另外一种connect方式:

connect(this, &MyClass::sigOk, this, &MyClass::slotOk);

这种方式可以不写参数,更简单,但是正因为不写参数,如果出现问题,就会比较隐晦,根据实际需要使用。

 

标签:Qt,int,汇总,参数,connect,信号,连接
From: https://www.cnblogs.com/ybqjymy/p/16665991.html

相关文章

  • 3. mysql--Navicat进行ssh通道连接MySQL数据库
    1.Navicat进行ssh通道连接MySQL数据库首先,你得有一个Navicat,这个不用多说第二步,打开Navicat点击连接按钮。这个就不上图了,直接到如下页面填写信息,连接名随便起第三步:点......
  • QT之QCompleter的用法--- 最简单的使用方法
    本文讲解最简单的使用方法:QCompleter能实现自动填充功能,方便用户输入,提升用户的体验,一般和QLineEdit与QComboBox搭配起来使用.先来个最简单的示例:QStringListword_l......
  • 解决MySql无法连接问题
    某个主机上部署了很多应用进程,之前一直正常,今天某个WebApi突然报错,查看日志有如下提示<ExceptionMessage>Host'***'isblockedbecauseofmanyconnectionerrors;unb......
  • VScode 突然无法连接
    大量输出下面的内容:>Waitingforserverlog...解决:把服务器端的/home/自己的用户名/.vscode-server删除即可查看全部文件:ll-arm-rf.vscode-server再次连接......
  • qt中json字符串的读写
    1、json字符串: 2、写json:  3读json:  ......
  • 长连接与短链接
    一个可以连续发送多个数据包的连接长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。短连接是指通讯双方有数据交互......
  • Python 取整函数汇总- round()、int()、floor()、ceil()的用法
    对每位程序员来说,在编程过程中数据处理是不可避免的,很多时候都需要根据需求把获取到的数据进行处理,取整则是最基本的数据处理。取整的方式则包括向下取整、四舍五入、向......
  • QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析
    在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是代码中控制布局),(2022-09-07星仔批注,MFC从VS2015开始就有布局了,功能精炼)M$这么多年,也不发展......
  • [转载]Qt内存泄漏总结(包括检测工具)
    原文链接:http://blog.csdn.net/taiyang1987912/article/details/29271549关于堆栈不清楚的可以参考这篇文章:http://blog.csdn.net/c_base_jin/article/details/25558929一......
  • [转]QT designer中的快捷键
    今天看了看QtDesigner的帮助文档,里面提到了不少快捷键,相信在以后会用的比较多。和大家分享一下:F2:编辑控件名称F3:进入QWidget编辑模式F4:进入SIGNAL/SLOT编辑模式Ctrl+R......