У меня есть класс QQuickItem
, созданный в Python:
class MyPage(QQuickItem):
def __init__(self, parent=None) -> None:
super().__init__(parent)
error_encountered = Signal(str)
@QtCore.Slot(QUrl, result=None)
def load_report(self, file_path: QUrl) -> None:
print(f"Called with: {file_path}")
self.error_encountered.emit("Uh oh!")
Вышеупомянутый класс зарегистрирован как:
qmlRegisterType(MyPage, "MyPage", 1, 0, "MyPage")
Мой QML выглядит так:
MyPage {
signal errorEncountered(string text)
Component.onCompleted: error_encountered.connect(errorEncountered)
onErrorEncountered: console.log(text)
}
Однако я получаю следующую ошибку:
qrc:/qml/main.qml:93: ReferenceError: error_encountered is not defined
Шаблон для PySide2 для подключения к сигналам из QML в исходный код немного отличается в Python от C++, и мне трудно его понять. В C++ у меня был бы сигнал, определенный как void errorEncountered(const QString& errorMessage);
, а в моем QML я мог бы просто сделать onErrorEncountered: console.log(errorMessage)
.