如何将Qt的C++ 11连接函数改写为只触发一次的槽函数的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计940个文字,预计阅读时间需要4分钟。
目录 + 引用 ConnectionUtil.h: + 引用 ConnectionUtil.cpp: + 引用 在之前的Qt项目中,我发现经常使用到只需执行一次的槽函数。也就是说,槽函数执行一次后,就需要断开对应的连接。
目录
- 引言
- ConnectionUtil.h:
- ConnectionUtil.cpp:
引言
在之前的Qt项目中,我发现经常会用到槽函数只需要执行一次的情况。也就是说,槽函数执行一次后,就需要disconnect对应的连接。然而,真正操作起来实际上挺麻烦的,或者说不优雅。
因为你需要把之前connect时产生的QMetaObject::Connection对象保存起来,而保存它不能用局部变量,通常需要保存到类的成员变量中,或者其他生命周期足够长的地方,以防止在disconnect它的时候,它已经失效了。
总之,需要使用者自己维护,因而增加了使用者的负担。
如果有一个方法能够在槽函数执行完成后自动disconnect掉连接就好了。我在网上找了一段时间,却没有找到合适的解决方案,相关讨论也比较少,可能这不是一个很常见的需求吧。
本文共计940个文字,预计阅读时间需要4分钟。
目录 + 引用 ConnectionUtil.h: + 引用 ConnectionUtil.cpp: + 引用 在之前的Qt项目中,我发现经常使用到只需执行一次的槽函数。也就是说,槽函数执行一次后,就需要断开对应的连接。
目录
- 引言
- ConnectionUtil.h:
- ConnectionUtil.cpp:
引言
在之前的Qt项目中,我发现经常会用到槽函数只需要执行一次的情况。也就是说,槽函数执行一次后,就需要disconnect对应的连接。然而,真正操作起来实际上挺麻烦的,或者说不优雅。
因为你需要把之前connect时产生的QMetaObject::Connection对象保存起来,而保存它不能用局部变量,通常需要保存到类的成员变量中,或者其他生命周期足够长的地方,以防止在disconnect它的时候,它已经失效了。
总之,需要使用者自己维护,因而增加了使用者的负担。
如果有一个方法能够在槽函数执行完成后自动disconnect掉连接就好了。我在网上找了一段时间,却没有找到合适的解决方案,相关讨论也比较少,可能这不是一个很常见的需求吧。

