2016-04-16 33 views
1

我正在试验基于设计器的Qt用户界面。如果设计师UI遵循特殊的名称模式(“on _...”),则自动连接控件插槽。手动调用connectSlotsByName()

但是,连接似乎在UI设置后立即建立。我不希望发生这种情况。我想以编程方式修改加载后的用户界面,没有得到不必要的插槽调用。

那么,有没有可能当这些连接的建立是为了明确控制,即当connectSlotsByName()被调用?

回答

3

您可以使用QObject::blockSignals阻止不必要的信号一段时间, 这样的:

widget->blockSignals(true); 
//do work 
widget->blockSignals(false); 

也可以拨打disconnect然后connect特定信号。

+0

这些都是很好的解决方法。谢谢。我决定完全避免自动功能。 (除了上述问题之外,自建连接允许编译时间检查连接)。 – Silicomancer

+0

还有铛静态分析器的扩展,它可以在编译时检查生成的信号/插槽连接http://reviews.llvm.org/D14592和独立工具https://github.com/etaoins/qconnectlint – fghj