我需要让小部件在彼此之间进行通信。
我的中心小部件有两个小部件实例:widget A
(实例A()
),widget B
(实例B()
)
当widget A
受到事件(例如:mouseRelease
)影响时,
我需要widget A
调用函数并进行一些计算和处理数据。
然后我需要这个处理过的数据传递给widget B
,
当从widget A
接收到这个数据时,它将用这个数据调用一个函数,处理它,并用它做更多的事情。
这两个小部件都是来自QWidget
的自定义小部件。
我几乎可以肯定我需要使用信号和插槽,但我不知道如何实现函数调用部分。
我在这里反复阅读了Qt的解释: http://qt-project.org/wiki/Signals_and_Slots_in_PySide但是我不知道如何连接两个同时发送和发送处理数据的小部件。
我真的很感谢你的帮助。如果你不能用Python回答C++,那么请解释它,而不是完全禁止。
更新PyQt5的@user1006989答案:
下面是一个示例,演示PyQt4中两个小部件之间的信号/插槽连接:
我认为这里可以使用两种不同的方法:使
A
和B
类紧密耦合,或者使用主窗口作为中介。在第一种情况下,您必须“让
A
知道B
”,这意味着A
引用了B
。在这种情况下,您甚至根本不需要执行signals&slot操作,只需直接调用B
的方法即可。另一种方法是让
A
发出一个带有参数的信号,该参数包含B
应接收的数据,主窗口捕获该信号并用该数据调用B
。 或者,您可以将数据放在A
的属性中,让主窗口直接从这里获取数据,而不将其作为信号参数传递。后一种方法允许您更自由地编写
A
和B
,因为A
不需要知道如何调用B
。在代码中解释如下:
相关问题 更多 >
编程相关推荐