社区
Qt
帖子详情
把发送信号的那个类的变量定义在一个函数里,信号就发不出去,定义在类的成员变量,就能发出去信号,求指导
算球?
2019-10-15 02:04:00
如图所示,把watcher放在类成员里,信号就能发出去,watcher放在函数里,信号就发不出去,我是想当新开的线程执行完,watcher就被销毁了,所以发不出去信号了。图片里这种情况就是发不出去信号的。
请问各位大佬有何高见?希望各位能给一些相关的资料看看,比如就是这种情况下的,发送信号的变量被销毁了就发不出去信号了,可是之前建立了信号和槽的连接了,发信号的没了,那那个连接去哪里了?
...全文
249
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(); 可能跟着销毁就没了,需要去官网找一下答案。
【Linux】进程
信号
的
发
送
和保存
本文围绕Linux进程
信号
的
发
送
和保存展开。
信号
发
送
分普通
信号
和实时
信号
,普通
信号
写在PCB的pending位图,实时
信号
保存在结构体队列。
信号
保存涉及阻塞
信号
、未决
信号
等概念,通过位图实现。还介绍了
信号
集操作
函数
,最后验证了
信号
保存行为。
QT中的自
定义
信号
以及自
定义
函数
本文介绍了QT编程中
信号
与槽
函数
的概念和使用,包括标准
信号
槽连接方式以及如何自
定义
信号
和槽
函数
。通过
一个
实例展示了如何创建父子窗口,并通过自
定义
信号
和槽
函数
实现窗口之间的交互,即点击按钮隐藏当前窗口并显示另
一个
窗口。
qt两个
类
之间自
定义
信号
槽
博客围绕Qt两个
类
之间自
定义
信号
槽展开。介绍了在VS中新建基于QMainwindow的工程,实现单击按钮改变控件文字等功能时遇到的问题,如
类
头文件相互包含导致报错,未
定义
对象就使用
类
里
的槽使
信号
槽无接收者等,并给出了解决思路。
Qt——静态
函数
中
发
送
信号
方法总结(不需要通过
类
内部
信号
与槽实现,关键是清楚你
发
送
的
信号
源自哪个对象)
在Qt引入第三方SDK时,回调
函数
定义
在
类
外,在其中
发
送
信号
无法使用
类
中
定义
的
信号
。本文介绍通过调用静态
函数
间接
发
送
信号
的方法,跳过
类
内部
信号
与槽,直接在静态
函数
中
发
送
对外
信号
,关键是明确
信号
源自的对象。
QML与C++
成员
变量
、成员方法、
信号
之间的互操作
本文详细介绍了如何在Qt5.15环境中通过Q_PROPERTY、Q_INVOKABLE和
信号
暴露,使C++
类
的
成员
变量
、方法和
信号
能在QML中被绑定和调用。涵盖了属性导出、方法暴露以及实战示例和测试平台配置。
Qt
21,494
社区成员
26,692
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章