关于python:qml中的捕获信号参数

Capture signal parameter in qml

我有一个基于QObject的python类,如下所示:

1
2
3
4
5
6
7
8
9
10
11
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方面,我可以听这个信号:

1
2
3
4
5
6
Validator {
    onAuthFailed: {                
    }  

    id: validator
}

但是,我不确定如何捕获从信号(Failed消息)发出的str参数。当我尝试类似于:onAuthFailed(msg)签名时,这无法编译。


我不知道Pyqt…

通常,在qml中,只需使用信号参数的名称就可以访问它们。

根据此:http://pyqt.sourceforge.net/docs/pyqt5/signals_slots.html_pyqt5.qtcore.pyqtsignal

arguments=['value']列表中传递的字符串是用于向qml公开参数的名称。所以我非常肯定,您可以在qml的处理程序中使用一个变量value

尝试:

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