您如何定义多个参数?支持哪些类型?为什么当我将其与另一个装饰器结合使用时有时会失败?
最佳答案
我找不到有关此内容的真实文档,所以我去了源头pysideslot.cpp。Slot
具有两个关键字args,name
(用于命名插槽的字符串)和result
(用于指定函数返回类型的python类型对象或命名Qt类型的字符串)。如果未提供name
,它将尝试从您正在装饰的函数中读取它,但要小心:其他装饰器有时会破坏函数的名称,因此,如果将Slot与其他装饰器结合使用,则可能要明确指定name
arg。
您提供给Slot的所有位置参数都将通过PySide :: Signal :: getTypeName转换为字符串,然后加入一个逗号分隔的字符串中。这将成为插槽的签名,并用于路由呼叫。
例如,给定此装饰器:
@QtCore.Slot(int,str,result=float)
def func(a,b):
assert len(b)==a; upload(b); return 2.5
PySide内部构件将创建呼叫签名字符串'int,QString'和resultType字符串'double'。
我希望这有助于下一个人努力调试其插槽。
关于javascript - PySide QtCore.Slot装饰器提供多个参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16624551/