如何定义多个参数?支持哪些类型?当我将它与另一个装饰器结合时,为什么它有时会失败?
答案 0 :(得分:2)
我找不到真实的文档,所以我去了源代码 - pysideslot.cpp。
Slot
接受两个关键字参数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'的调用签名字符串和一个'double'的resultType字符串。
我希望这有助于下一个努力调试插槽的人。