你如何定义多个参数?支持哪些类型?为什么当我将它与另一个装饰器结合时它有时会失败?
问问题
584 次
1 回答
2
我找不到这方面的真实文档,所以我去了源代码—— pysideslot.cpp。
Slot
接受两个关键字参数,name
(一个字符串来命名槽)和result
(一个python类型对象或字符串命名一个Qt类型,用于指定函数的返回类型)。如果name
未提供,它会尝试从您正在装饰的函数中读取它,但要小心:其他装饰器有时会破坏您的函数名称,因此如果您将 Slot 与另一个装饰器组合,您可能需要显式指定name
参数。
您提供给 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”。
我希望这可以帮助下一个努力调试插槽的人。
于 2013-05-18T13:01:18.600 回答