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

最佳答案

我找不到有关此内容的真实文档,所以我去了源头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/

10-15 09:41