【发布时间】:2017-01-04 09:15:03
【问题描述】:
我有一个小型 Qt 绘图应用程序,我正在启用/禁用基于“主”组合框的小部件(组合框/旋转框)。例如,假设 master 是combo1,它会根据currentIndex() 更改combo2 中的条目,启用/禁用spin1,并为spin1 设置一个值,如果combo1 中的某个条目是选择。不过,还有更多的小部件。
在chat(及以后)的小讨论之后,我将Qt::QueuedConnection 与每个connect() 一起使用,但这并没有阻止重新启用的小部件在重新启用时发出信号。这导致我的许多connect() 都为所有重新启用的小部件执行,导致多个绘图,我想避免这种情况。就像现在一样,(几乎)所有小部件都在connect() 中使用plot(),因此它是一个插槽的多个信号。
我的问题:有没有办法在重新启用小部件时防止发出信号?我可以让plot() 使用一些bool 来检查绘图是否已执行并防止相同类型的进一步操作,但这仍然会导致小部件发出信号并运行plot(),即使检查会阻止实际的绘图,但这似乎不是要走的路。我还希望避免运行 installEventFilter() 或类似的,因为这很可能会比之前的修复更慢。
【问题讨论】:
-
@Trevir 是的,这有帮助。但我不得不为
QSpinBox选择editingFinished(),为QComboBox选择activated(int)。如果您将此作为答案,我会将其标记下来。 -
很高兴,它有帮助,但我不会把别人的功劳归功于他人 ;-)。