如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?

2026-04-18 15:252阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计940个文字,预计阅读时间需要4分钟。

如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?

目录 + 引用 ConnectionUtil.h: + 引用 ConnectionUtil.cpp: + 引用 在之前的Qt项目中,我发现经常使用到只需执行一次的槽函数。也就是说,槽函数执行一次后,就需要断开对应的连接。

目录
  • 引言
    • ConnectionUtil.h:
    • ConnectionUtil.cpp:

引言

在之前的Qt项目中,我发现经常会用到槽函数只需要执行一次的情况。也就是说,槽函数执行一次后,就需要disconnect对应的连接。然而,真正操作起来实际上挺麻烦的,或者说不优雅。

如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?

因为你需要把之前connect时产生的QMetaObject::Connection对象保存起来,而保存它不能用局部变量,通常需要保存到类的成员变量中,或者其他生命周期足够长的地方,以防止在disconnect它的时候,它已经失效了。

总之,需要使用者自己维护,因而增加了使用者的负担。

如果有一个方法能够在槽函数执行完成后自动disconnect掉连接就好了。我在网上找了一段时间,却没有找到合适的解决方案,相关讨论也比较少,可能这不是一个很常见的需求吧。

阅读全文
标签:Qtco

本文共计940个文字,预计阅读时间需要4分钟。

如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?

目录 + 引用 ConnectionUtil.h: + 引用 ConnectionUtil.cpp: + 引用 在之前的Qt项目中,我发现经常使用到只需执行一次的槽函数。也就是说,槽函数执行一次后,就需要断开对应的连接。

目录
  • 引言
    • ConnectionUtil.h:
    • ConnectionUtil.cpp:

引言

在之前的Qt项目中,我发现经常会用到槽函数只需要执行一次的情况。也就是说,槽函数执行一次后,就需要disconnect对应的连接。然而,真正操作起来实际上挺麻烦的,或者说不优雅。

如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?

因为你需要把之前connect时产生的QMetaObject::Connection对象保存起来,而保存它不能用局部变量,通常需要保存到类的成员变量中,或者其他生命周期足够长的地方,以防止在disconnect它的时候,它已经失效了。

总之,需要使用者自己维护,因而增加了使用者的负担。

如果有一个方法能够在槽函数执行完成后自动disconnect掉连接就好了。我在网上找了一段时间,却没有找到合适的解决方案,相关讨论也比较少,可能这不是一个很常见的需求吧。

阅读全文
标签:Qtco