启用/禁用QComboBox / QSpinBox时如何停止发出信号?

有关的公民

我有一个小的Qt绘图应用程序,并且正在基于“主”组合框启用/禁用小部件(组合/旋转框)。例如,假设master是combo1,它将combo2基于currentIndex(),enable / disables更改中的条目spin1,并为选择中spin1的某个条目设置值combo1但是,不仅有这些小部件,还有更多的部件。

聊天(及以后)中的小讨论之后,我使用Qt::QueuedConnection了every connect(),但这并没有阻止重新启用的小部件在重新启用后发出信号。这导致connect()对所有重新启用的小部件执行全部任务,导致出现多个绘图,这是我想要避免的。就像现在一样,(几乎)所有小部件都plot()在内使用connect(),因此它向一个插槽发送了多个信号。

我的问题:当重新启用小部件时,有什么方法可以防止发出信号吗?我可以plot()使用一些方法bool来检查绘图是否已执行并阻止相同类型的进一步操作,但这仍然会导致小部件发出信号并运行plot(),即使检查将阻止实际绘图,但这也不会好像是要走的路。我还希望避免运行installEventFilter()或类似方法,因为这很可能会比以前的修复速度更慢。

znoopy2k

每次连接之前都使用断开连接,以防止多个连接。始终允许断开未连接的插槽。

disconnect(spinbox1,...);
connect(spinbox1,...);

阻塞信号也是可能的,但我认为您想要第一个解决方案。

从QtDocumentation:

bool QObject :: blockSignals(bool block)如果block为true,则阻塞此对象发出的信号(即,发出信号将不会调用与其连接的任何对象)。如果block为false,则不会发生这种阻塞。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调试发出多个“激活”信号的 QComboBox

来自分类Dev

如何启用或禁用服务?

来自分类Dev

如何启用或禁用服务?

来自分类Dev

如何启用或禁用Apport?

来自分类Dev

PyQt启用/禁用QComboBox中的元素

来自分类Dev

基于多个QComboBox的文本启用或禁用QDialogButtonBox

来自分类Dev

禁用QSpinbox中的编辑功能,但启用箭头

来自分类Dev

启用剖析时禁用OpenMP

来自分类Dev

如何启用/禁用FloatingActionButton行为

来自分类Dev

如何禁用并启用点击接收...?

来自分类Dev

如何禁用/启用按钮(表面)?

来自分类Dev

如何启用和禁用按钮

来自分类Dev

如何启用/禁用每个按钮

来自分类Dev

如何正确启用或禁用操作

来自分类Dev

禁用的Cortana,如何立即启用?

来自分类Dev

打印时如何启用所有禁用

来自分类Dev

Qt测试如何在发出信号时停止执行

来自分类Dev

如何选择启用/禁用,启动/停止或检查服务状态的方式?

来自分类Dev

如何选择启用/禁用,启动/停止或检查服务状态的方式?

来自分类Dev

启用/禁用元素时触发功能

来自分类Dev

启用和禁用点击时的默认行为

来自分类Dev

启用禁用的RadGrid时发生异常

来自分类Dev

线程工作时启用/禁用按钮

来自分类Dev

jQuery在按键时禁用/启用

来自分类Dev

div折叠时启用/禁用按钮

来自分类Dev

如何启用和禁用Twitter Bootstrap按钮?

来自分类Dev

如何动态启用禁用的复选框?

来自分类Dev

如何禁用和启用ubuntu中的键盘?

来自分类Dev

jQuery:如何启用禁用的锚标记