我想使用一些qml文件(main.qml
)但在此之前我需要从用户那里获得一些身份验证信息(login,pass)。所以我想在第二个窗口(login.qml
)中执行此操作。我看到Qt.createComponent
打开了第二个qml文件,但是我无法从这种类型的窗口中获取任何信息。
那么如何在第一个窗口中使用第二个窗口中的一些信息?
或者如何在父qml文件中动态加载这些项目(main.qml
,login.qml
?)
答案 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代码。