社区
Qt
帖子详情
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
算球?
2019-10-15 02:04:00
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。
请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
...全文
223
3
打赏
收藏
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。 请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ly1chee
2019-10-16
打赏
举报
回复
watcher作为一个局部对象,作用域结束之后就销毁了,信号当然发不出去。一个QObject对象析构的时候会把所有已连接的信号断开,QObjectPrivate::connectionLists和QObjectPrivate::senders分别是当前对象信号的接收方和信号的发送方,析构的时候会遍历这2个列表把所有连接都断开,有兴趣你可以看看QObject析构函数的源码。
如果你是想当线程结束之后销毁watcher,可以试试这句代码:QObject::connect(watcher, &QFutureWatcher<int>::finished, watcher, &QObject::deleteLater);
dinjay
2019-10-16
打赏
举报
回复
不明白你想实现什么效果,如果只是想发送信号,那放倒成员变量里就行了。如果想随着线程一起销毁,那你可以new出来一个watcher,然后线程退出的时候delete这个watcher就行了
这是一个正经昵称
2019-10-15
打赏
举报
回复
我没记错的话Qt带信号槽的都是来自QObject的,所以去官网文档查应该能得到你想要的。 在槽函数中定义一个临时变量,执行完就销毁了,自然就没有信号发出了,至于连接,官网有段这么描述的: 该函数(指connect())返回一个QMetaObject:Connection,它表示连接的句柄,如果它成功地将信号连接到插槽。如果连接句柄无法创建连接,例如,如果QObject无法验证信号或方法的存在,或者它们的签名不兼容,则连接句柄将无效。您可以通过将句柄转换为bool来检查该句柄是否有效。 我把你的类换QTimer举例,定义一个局部 QTimer t; 往往在函数返回后就销毁了,保存connect句柄,可以看到在函数返回前句柄还是 true,返回后就变成了 false,句柄失效。 销毁就是那段内存都没了,所以想保持连接就需要分配内存到别的地方,不被自动销毁,static QTimer t;或者QTimer *t = new QTimer;都可以使连接保持有效。 连接去哪了这个问题,connect函数应该实际上是QObject::connect(); 可能跟着销毁就没了,需要去官网找一下答案。
最全的C和C++语言笔试面试题汇总
最全的C和C++语言笔试面试题汇总,我大四时候找工作时候他帮上了很多忙,
里
面的题目经常考到。希望对大家有帮助。
c++ primer第五版第6章答案
c++ primer第五版第6章答案
串口调试助手源程序及编程详细过程
1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard
定义
CMSComm
类
控制
变量
4.在对话框中添加控件 5.添加串口事件消息处理
函数
OnComm() 6.打开和设置串口参数 7.
发
送
数据
C++
类
的
成员
变量
和成员
函数
C++
类
的
成员
变量
和成员
函数
类
是一种数据
类
型,它
类
似于普通的数据
类
型,但是又有别于普通的数据
类
型。
类
这种数据
类
型是
一个
包含
成员
变量
和成员
函数
的
一个
集合。
类
的
成员
变量
和普通
变量
一样,也有数据
类
型和名称,占用固定长度的内存空间。但是,在
定义
类
的时候不能对
成员
变量
赋值,因为
类
只是一种数据
类
型,本身不占用内存空间,而
变量
的值则需要内存来存储。
类
的成员
函数
也和普通
函数
一样,都
C++
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。 【问题描述】
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。声明
一个
实例dog1,体重为5,年龄为10,使用I/O流把dog1的状态写入磁盘文件。再声明另
一个
实例dog2,通过读文件把dog1的状态赋给dog2。 分别用文本方式和二进制方式操作文件,看看结果有何不同;再看看磁盘文件的ASCII码有何不同。 注意:dog2的状态同时输出到屏幕上。本题的答案只需要提交一种文件方式即可。 程序的输出结果: Weight:5 Age:1
Qt
21,437
社区成员
26,687
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章