我正在尝试编写一个连接到不同pyqt信号的插槽。我仍然无法理解的是两个装饰器@pyqtSignature()和@pyqtSlot()之间的区别。
连接到QPushButton的pyqt点击信号的示例,它继承自QAbstractButton,在使用@pyqtSignature("")时使用了以下语法on_widgetName_signalName
:
@pyqtSignature("")
def on_bn_gpx_select_file_clicked(self):
"""
Run when QPushButton is pressed, or do something
"""
pass
现在使用@pyqtSlot()
@pyqtSlot()
def on_bn_gpx_select_file_clicked(self):
"""
Run when QPushButton is pressed, or do something
"""
pass
我的问题是,两个装饰器之间的区别是什么?我应该何时使用@pyqtSignature或@pyqtSlot()
谢谢
答案 0 :(得分:3)
pyqtSignature
装饰器是old-style signal and slot syntax的一部分,由PyQt-4.5中的new-style signal and slot syntax取代。
两个装饰器都有相同的用途,即将python方法显式标记为Qt槽并为其指定C ++签名(最常见的是为了选择特定的重载)。两个装饰器之间唯一相关的区别是pyqtSlot
具有更多的pythonic API。
永远不需要在新代码中使用pyqtSignature
- 它只是向后兼容性才真正需要。