javascript - 使用 PySide QtCore.Slot 装饰器的多个参数

标签 javascript python qt pyside

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

最佳答案

我找不到这方面的真正文档,所以我找到了源代码 - 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 字符串。

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

关于javascript - 使用 PySide QtCore.Slot 装饰器的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16624551/

相关文章:

javascript - 无法获取 Odoo 9 中 javascript 文件的内容

python - 如何拆分数据集以在 Python 中进行训练、测试和验证?

python - Python 中的 Sqlite3 模块比 Shell 中的 SELECT 慢得多

c++ - Qt 5 : update QProgressBar during QThread work via signal

javascript - 拦截真实数据响应

javascript - 如何从文本中解析/trim 电子邮件地址

javascript - 如何停止自定义事件中的事件传播/冒泡

python - 我该如何解决 - TypeError : cannot safely cast non-equivalent float64 to int64?

c++ - QTableView高级选择

qt - 使用 MSYS2/MinGW 64 从源构建 Qt 5.x - 缺少 ICU unicode header