1
我正在试验基于设计器的Qt用户界面。如果设计师UI遵循特殊的名称模式(“on _...”),则自动连接控件插槽。手动调用connectSlotsByName()
但是,连接似乎在UI设置后立即建立。我不希望发生这种情况。我想以编程方式修改加载后的用户界面,没有得到不必要的插槽调用。
那么,有没有可能当这些连接的建立是为了明确控制,即当connectSlotsByName()被调用?
我正在试验基于设计器的Qt用户界面。如果设计师UI遵循特殊的名称模式(“on _...”),则自动连接控件插槽。手动调用connectSlotsByName()
但是,连接似乎在UI设置后立即建立。我不希望发生这种情况。我想以编程方式修改加载后的用户界面,没有得到不必要的插槽调用。
那么,有没有可能当这些连接的建立是为了明确控制,即当connectSlotsByName()被调用?
您可以使用QObject::blockSignals
阻止不必要的信号一段时间, 这样的:
widget->blockSignals(true);
//do work
widget->blockSignals(false);
也可以拨打disconnect
然后connect
特定信号。
这些都是很好的解决方法。谢谢。我决定完全避免自动功能。 (除了上述问题之外,自建连接允许编译时间检查连接)。 – Silicomancer
还有铛静态分析器的扩展,它可以在编译时检查生成的信号/插槽连接http://reviews.llvm.org/D14592和独立工具https://github.com/etaoins/qconnectlint – fghj