Навигация и адресация QMLComponents - PullRequest
2 голосов
/ 07 апреля 2011

Я работаю над настольным приложением, использующим графический интерфейс QML с большим количеством компонентов QML.Это части иерархии:

main -> toolbar -> searchbar -> editfield

и

main -> resultlist -> header -> button1

Я не смог найти способ доступа к текстовому содержимому поля редактирования в обработчике сигналов для button1.Можно ли сделать это в QML или Javascript?

Я знаю, что могу получить доступ к элементу в части C ++, используя свойство objectName.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2011

Поскольку в QML используется динамическая область видимости ( → Doc ), дочерние элементы могут обращаться к свойствам всех предков, и не имеет значения, находятся ли они в разных файлах.

может добавить свойство editFieldText к main и привязать к нему свойство text поля редактирования.Тогда вы можете получить доступ к editFieldText отовсюду:

//=== main.qml ===
import QtQuick 1.0

Rectangle {
    id: main

    property string editFieldText

    Toolbar {
        // [...]
    }

    Resultlist {
        // [...]
    }
}


//=== EditField.qml ===
import QtQuick 1.0

TextInput {
    // bind text property to main.editFieldText
    Binding {
        target: main;
        property: "editFieldText";
        value: text
    }
}


//=== Header.qml ===
import QtQuick 1.0

Rectangle {
    Button {
        onClick: {
            console.log(main.editFieldText);
            // or simply
            console.log(editFieldText);
        }
    }
}
1 голос
/ 08 апреля 2011

Вы можете использовать свойства псевдонима, чтобы иметь editfield.text в качестве свойства main.Это свойство должно быть доступно с кнопки 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...