两个QML文件之间的交互

时间:2016-05-15 19:45:51

标签: qt qml

我想使用一些qml文件(main.qml)但在此之前我需要从用户那里获得一些身份验证信息(login,pass)。所以我想在第二个窗口(login.qml)中执行此操作。我看到Qt.createComponent打开了第二个qml文件,但是我无法从这种类型的窗口中获取任何信息。

那么如何在第一个窗口中使用第二个窗口中的一些信息?

或者如何在父qml文件中动态加载这些项目(main.qmllogin.qml?)

2 个答案:

答案 0 :(得分:4)

  

那么如何在第一个窗口中使用第二个窗口中的一些信息呢?   窗口?

这只是一种方法:

main.qml

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1

ApplicationWindow {
    width: 400
    height: 400
    visible: true

    ColumnLayout {
        id: logItems
        height: 200
        Button {
            id: loginButton
            onClicked: loginForm.visible = true
            text: "Log in"
        }

        Login {
            anchors.top: loginButton.bottom
            id: loginForm
            visible: false
            onLoginInfo: {
                logInfo.text = "User:" + user + " password: " + password
            }
        }
    }

    Text {
        id: logInfo
        anchors.top : logItems.bottom
    }

}

Login.qml

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1

Item {

    signal loginInfo(string user, string password)

    ColumnLayout {

        RowLayout {

            TextField {
                id: user
            }

            TextField {
                id: password
            }
        }

        Button {
            text: "Submit"
            onClicked: loginInfo(user.text, password.text)
        }
    }
}

答案 1 :(得分:1)

  

我如何动态从单独的文件/资源​​中加载QML项目   另一个QML文件?

Qt.CreateComponent允许您使用JavaScript动态创建和使用其他文件中的QML代码。