社区
Qt
帖子详情
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
算球?
2019-10-15 02:04:00
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。
请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
...全文
235
3
打赏
收藏
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。 请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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(); 可能跟着销毁就没了,需要去官网找一下答案。
腾讯2012笔试题目
此题涉及
一个
基
类
`CBase`和
一个
派生
类
`CSub`,在`main`
函数
中创建了`CSub`
类
型的对象。需要判断构造
函数
与析构
函数
的执行顺序。 - **选项分析:** - A: 先输出子
类
构造
函数
,再输出基
类
构造
函数
,这不符合C++的...
java学习笔记总结
继承允许
一个
类
(子
类
)继承另
一个
类
(父
类
)的属性和方法,实现了代码重用。多态则是指
一个
接口可以有多种不同的实现,增强了程序的灵活性。 在Java中,异常处理也是关键部分。通过try-catch-finally语句块,可以...
c++ primer第五版第6章答案
1. **返回
类
型错误**:
函数
定义
与调用时返回
类
型不匹配。 2. **未
定义
返回
类
型**:
函数
声明或
定义
时遗漏了返回
类
型。 3. **
函数
体语法错误**:如缺失花括号 `{}`。 ### 知识点三:递归
函数
实现阶乘计算 #### 示例...
串口调试助手源程序及编程详细过程
1.建立项目 2.在项目中插入MSComm控件 ...3.利用ClassWizard
定义
CMSComm
类
控制
变量
4.在对话框中添加控件 5.添加串口事件消息处理
函数
OnComm() 6.打开和设置串口参数 7.
发
送
数据
C++
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。 【问题描述】
定义
一个
Dog
类
,包含体重和年龄两个
成员
变量
和相应的成员
函数
。声明
一个
实例dog1,体重为5,年龄为10,使用I/O流把dog1的状态写入磁盘...
Qt
21,475
社区成员
26,692
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章