相同信号到同一对象的2个插槽的Qt用例?

时间:2010-01-08 14:56:30

标签: c++ qt

我是Qt的全新手。在我阅读documentation时,我遇到了这样的配置:

connect( Object1, Signal1, Object2, slot1 )
connect( Object1, Signal1, Object2, slot2 )

这可能是什么用例?

来自Erlang / Python背景的我看起来很奇怪。它必须与C ++继承曲折相关。我想。

3 个答案:

答案 0 :(得分:4)

这适用于您有一个按钮更改另一个按钮的两个部分的情况。这可能听起来很愚蠢,但它相当于从第一个插槽调用第二个插槽功能。

假设,单击播放/暂停按钮可使停止按钮处于活动状态或处于活动状态,并且还会更改工具提示。这可以通过一个插槽轻松完成,但您可能希望选项在其他时间独立完成。为了促进重用,您可以使用上述方法将一个信号连接到2个插槽。

答案 1 :(得分:3)

它允许其他对象分别触发slot1和slot2。

connect( Object1, Signal1, Object2, slot1 );
connect( Object1, Signal1, Object2, slot2 );
connect( Object3, Signal1, Object2, slot1 );
connect( Object4, Signal1, Object2, slot2 );

答案 2 :(得分:0)

它实际上是一种非常强大的MVC方式...假设您想要“连接”视图来侦听对象而不是发出数据......

您可以将PieChart视图连接到:

connect( MySourceModel, SIGNAL(newDataAreThere()), PieChartView, SLOT(notifyNewDataReceived()));

稍后在您的应用程序中,会创建另一个模块,并且还需要监听数据......没问题:

connect( MySourceModel, SIGNAL(newDataAreThere()), AnotherView, SLOT(notifyNewDataReceived()));

你可以连接/断开你的观点,模特甚至不知道谁在听他......这不是他的问题...

我希望我的小例子是可以理解的;)