Получить значение или свойство из элемента Stackview, когда он появился в Qml - PullRequest
0 голосов
/ 24 февраля 2020

Есть ли способ получить значение или свойство из элемента Stackview, когда он появился в Qml? Я хочу получить отредактированное имя в «EditProfile.qml», когда оно подключено к «Profile.qml» в приведенном ниже проекте.

main.qml

StackView {
    id: stackView
    Component.onCompleted: push('Profile.qml', {name : 'David'})
}

Profile.qml

Page {
    property string name: ''
    Column {
        Text {                
            text: 'name' + name
        }
        Button {
            text: 'Edit'
            onClicked: stackView.push('EditProfile.qml', {name : name})
        }
    }
}        

EditProfile.qml

Page {
    property alias name: txtName.text
    Column {
        TextEdit {         
            id: txtName
            text: name
        }
        Button {
            text: 'Back'
            onClicked: stackView.pop()
        }
    }
}     

1 Ответ

0 голосов
/ 24 февраля 2020

Внимательно прочитав руководство по QT, я нашел ответ. Функция push возвращает нажатый элемент. итак:

Profile.qml

Page {
    id: root
    property string name: ''
    Column {
        Text {                
            text: 'name' + name
        }
        Button {
            text: 'Edit'
            onClicked: {
                var item = stackView.push('EditProfile.qml', {name : name})
                item.exit.connect(change);
                function change(text) {
                    item.exit.disconnect(change);
                    root.name = text;  
                }
            }
        }
    }
}      

EditProfile.qml

Page {
    signal exit(var text)
    property alias name: txtName.text
    Column {
        TextEdit {         
            id: txtName
            text: name
        }
        Button {
            text: 'Back'
            onClicked: {
                exit(txtName.text)
                stackView.pop()
            }
        }
    }
}     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...