在 qml 中捕获信号参数
Posted
技术标签:
【中文标题】在 qml 中捕获信号参数【英文标题】:Capture signal parameter in qml 【发布时间】:2016-11-14 12:46:12 【问题描述】:我有一个基于 QObject 的 python 类如下:
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
class Validator(QObject):
authFailed = pyqtSignal(str, arguments=['value'])
def __init__(self, parent=None):
super(Validator, self).__init__(parent)
@pyqtslot
def test(self):
self.authFailed.emit("Failed")
在 qml 方面,我可以这样收听这个信号:
Validator
onAuthFailed:
id: validator
但是,我不确定如何捕获同样从信号发出的 str
参数(Failed
消息)。当我尝试类似:onAuthFailed(msg)
签名时,编译失败。
【问题讨论】:
我不知道你的问题的解决方案,我只是在这里告诉你 Python 不是被编译而是被解释的。因此,您可以拥有一个交互式解释器。 【参考方案1】:我不知道 PyQt...
通常,在 QML 中,您只需使用名称即可访问信号参数。
据此: http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html#PyQt5.QtCore.pyqtSignal
您在arguments=['value']
-list 中传递的字符串是名称,用于将参数公开给QML。
所以我很确定,你可以在 QML 的处理程序中使用变量value
。
试试:
onAuthFailed: console.log('auth Failed: ', value)
【讨论】:
谢谢!完成了这项工作!以上是关于在 qml 中捕获信号参数的主要内容,如果未能解决你的问题,请参考以下文章