PySide QtCore.Slot装饰器的多个参数

时间:2013-05-18 13:01:19

标签: javascript python qt pyside

如何定义多个参数?支持哪些类型?当我将它与另一个装饰器结合时,为什么它有时会失败?

1 个答案:

答案 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字符串。

我希望这有助于下一个努力调试插槽的人。