我有 login.qml 窗口,其中我有一个声明如下的控制器:
Button {
id: btnOK
anchors.top:senhaInput.bottom
anchors.left: senhaInput.left
anchors.topMargin: 10
width: (senhaInput.width * 0.60) - 5
text: "Entrar"
isDefault: true
onClicked: {
lblMsgErro.text = ""
lblMsgErro.visible = false;
controller.autenticar();
}
}
QLoginController {
id: controller
login: loginInput.text
senha: senhaInput.text
onAuthenticated: {
if (userId) {
console.log("Autenticado ID: " + userId);
var component = Qt.createComponent("main.qml");
var win = component.createObject();
win.userId = userId;
win.showFullScreen();
close();
} else {
senhaInput.text = "";
console.log("Falha na autenticação: Usuário e/ou senha inválidos.");
lblMsgErro.text = "Usuário e/ou senha inválidos.";
lblMsgErro.visible = true;
loginInput.focus = true;
}
}
}
controller.autenticar(); 方法发出** onAuthenticated“”信号。
在这个other answer中,有人说将控制器声明为QML对象并不是一个好习惯,并且显示了使用控制器的另一种方式。
所以,我在这里问:如何从C ++控制器信号中控制QML组件(如隐藏文本或关闭窗口);那么,达到与在QML文件中完成的结果相同的结果?现在我可以管理从QML到C ++的东西,但我不知道如何做其他方式(C ++到QML)。例如:设置Label对象的文本。