控制QML的最佳实践?

时间:2014-09-04 17:16:49

标签: c++ qt controller qml

我有 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对象的文本。

0 个答案:

没有答案