我正在学习Qt库。最近我遇到了slots
的概念,到目前为止,我将它们理解为作为对某些事件的反应而执行的函数。只是这个还是更多?
他们为什么选择这样一个奇特的名字slots来做一些普通的事情?这个词有很多含义。他们打算在Qt中考虑slots
是什么意思?
谢谢
答案 0 :(得分:2)
插槽带有信号。您将信号连接到插槽。这是Qt本身的核心概念,它不是PyQt特有的。
Qt文档包含详细信息:Signals & Slots。
这只是一个非常方便的概念,可以在代码中实现相当清晰的图层分离。
插槽本身是普通函数(在C ++中),您可以将它们用作普通函数以及“信号接收器”。
答案 1 :(得分:2)
条款signal
和slot
有些不匹配。
更好的选择可能是signal
和receiver
,或connector
和slot
。
在C ++中,信号只能连接到已定义为插槽的函数。尝试将信号连接到普通功能就像尝试将USB电缆连接到以太网端口一样。
然而,在PyQt中,这种区别不太重要,因为任何可调用都可以连接到信号,而不仅仅是预定义的插槽。
话虽如此,更新版本的PyQt还提供了pyqtSlot decorator,可用于定义具有多个不同签名的插槽。通常,在PyQt中,连接到预定义的槽(无论是C ++还是PyQt)比使用普通的python可调用更高效。
有关PyQt中信号和插槽支持的完整详细信息,请参阅reference guide。