在qml中捕获信号参数

时间:2016-11-14 12:46:12

标签: python qt pyqt qml

我有一个基于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)签名时,这无法编译。

1 个答案:

答案 0 :(得分:3)

我不知道PyQt ......

通常,在QML中,您只需使用其名称即可访问信号参数。

根据这个: http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html#PyQt5.QtCore.pyqtSignal

您在arguments=['value'] - 列表中传递的字符串是用于将参数公开给QML的名称。 所以我很确定,你可以在QML的处理程序中使用变量value

尝试:

onAuthFailed: console.log('auth Failed: ', value)