qt信号和槽避免多次连接

这篇具有很好参考价值的文章主要介绍了qt信号和槽避免多次连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

qt同一个信号和槽多次连接,则槽函数会触发多次(默认),可能不是我们想要的结果。

有3种方法可以解决这个问题:

1. 仅在初始化函数中进行连接

因为初始化函数在在整个程序中只运行一次,所以这里面连接信号和槽,就能避免重复连接问题了。

2. 连接函数写上参数Qt::UniqueConnection

Qt::UniqueConnection的作用是:如果该信号以前没连接过,则连接它,返回true,如果以前连接过,则不再连接,返回false。例如 connect(ui.btn, &QAbstractButton::clicked, this, &QtWidgetsApplication2::btnClicked, Qt::UniqueConnection);
 

3. 槽函数触发后,在槽函数中断开(该方式可以实现动态的连接了)

 QMetaObject::Connection connectHandler = connect(pBtn, &QAbstractButton::clicked, this, &QtWidgetsApplication2::btnClicked);
 
// 先断开连接
disconnect(connectHandler); 
 
// 重新连接
connect(pBtn, &QAbstractButton::clicked, this, &QtWidgetsApplication2::btnClicked);

参考博客:Qt槽函数会被执行多次的问题原因及解决方法_C 语言_脚本之家

信号与槽该连接的时机,就看发信号的对象是否创建出来,接收对象是否创建出来。如果一个发信号的对象删除了,那么该信号和槽也就无效了的。

 文章来源地址https://www.toymoban.com/news/detail-497523.html

到了这里,关于qt信号和槽避免多次连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包