【问题标题】:multiple arguments with PySide QtCore.Slot decoratorPySide QtCore.Slot 装饰器的多个参数
【发布时间】:2013-05-18 21:01:18
【问题描述】:

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

【问题讨论】:

    标签: javascript python qt pyside


    【解决方案1】:

    我找不到这方面的真实文档,所以我去了源代码 -- pysideslot.cpp

    Slot 有两个关键字 args,name(用于命名槽的字符串)和result(命名 Qt 类型的 python 类型对象或字符串,用于指定函数的返回类型)。如果没有提供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”。

    我希望这可以帮助下一个努力调试插槽的人。

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 2016-09-13
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2011-06-25
      • 2014-07-21
      • 2017-06-21
      • 2018-01-07
      相关资源
      最近更新 更多