社区
Qt
帖子详情
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
算球?
2019-10-15 02:04:00
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。
请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
...全文
219
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(); 可能跟着销毁就没了,需要去官网找一下答案。
HTMLCSS JavaScript学习第26天之good-cheap-fast.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、本项目仅用作交流学习参考,请切勿用于商业用途。
岩层甚低频无线通信机研究.pdf
岩层甚低频无线通信机研究.pdf
基于SpringBoot+Vue+ElementUI的高效办公自动化系统
本项目是
一个
基于SpringBoot和Vue.js的办公自动化系统,采用ElementUI作为前端框架,旨在为企业提供高效、便捷的办公管理解决方案。系统主要功能包括统一的信息
发
布平台、文件管理平台和办公自动化模块。信息
发
布平台支持公告栏、公司活动、项目进度和公司周报等功能。文件管理平台提供收文管理、
发
文管理、文件查询和档案管理等功能。办公自动化模块涵盖行政办公、审批申请、日志系统、会议管理和系统管理等多个方面,支持任务分配、请假审批、日志填写、会议管理和权限控制等功能。系统采用前后端分离架构,后端基于SpringBoot实现,前端采用Vue.js和ElementUI构建,具有良好的扩展性和可维护性。
计算机专业项目代码:ASP网上二手商品交易管理系统的设计与实现(源代码+论文).7z
毕业设计:ASP相关源码
计算机专业项目代码:ASP+ACCESS网上聊天室毕业设计(源代码+论文+开题报告+任务书+答辩PPT).7z
毕业设计ASP
Qt
16,816
社区成员
26,684
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章