为何选择PyQt中的插槽

时间:2011-10-23 17:25:06

标签: qt pyqt pyqt4 signals-slots

我正在学习Qt库。最近我遇到了slots的概念,到目前为止,我将它们理解为作为对某些事件的反应而执行的函数。只是这个还是更多?

他们为什么选择这样一个奇特的名字slots来做一些普通的事情?这个词有很多含义。他们打算在Qt中考虑slots是什么意思?

谢谢

2 个答案:

答案 0 :(得分:2)

插槽带有信号。您将信号连接到插槽。这是Qt本身的核心概念,它不是PyQt特有的。

Qt文档包含详细信息:Signals & Slots

这只是一个非常方便的概念,可以在代码中实现相当清晰的图层分离。

插槽本身是普通函数(在C ++中),您可以将它们用作普通函数以及“信号接收器”。

答案 1 :(得分:2)

条款signalslot有些不匹配。

更好的选择可能是signalreceiver,或connectorslot

在C ++中,信号只能连接到已定义为插槽的函数。尝试将信号连接到普通功能就像尝试将USB电缆连接到以太网端口一样。

然而,在PyQt中,这种区别不太重要,因为任何可调用都可以连接到信号,而不仅仅是预定义的插槽。

话虽如此,更新版本的PyQt还提供了pyqtSlot decorator,可用于定义具有多个不同签名的插槽。通常,在PyQt中,连接到预定义的槽(无论是C ++还是PyQt)比使用普通的python可调用更高效。

有关PyQt中信号和插槽支持的完整详细信息,请参阅reference guide