首页 文章

两个QML文件之间的交互

提问于
浏览
0

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

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

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

2 回答

  • 1

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

    这只是一种方法:

    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)
            }
        }
    }
    
  • 4

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

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

相关问题