Что является именем объекта: свойство в QML, почему необходимый, и как это отличающийся, чем идентификатор: свойство?

  1. Что является именем объекта: свойство в QML?
  2. Какие компоненты имеют это свойство?
  3. Почему это необходимо?
  4. Как это отличающийся, чем идентификатор: свойство?
  5. Почему не может я просто использовать идентификатор: свойство вместо этого?
4
задан 2 June 2016 в 15:44

2 ответа

Это свойство содержит название объекта. Имя объекта является свойством QString QObject который значения по умолчанию к пустому QString.

Вы обычно устанавливаете это свойство, когда необходимо найти элементы QML от QT этим способом, которым к сигналам, свойствам и функциям элемента QML можно получить доступ от QT (C++) код.

тесты Автопилота используют это свойство для анализирования приложения.

От Взаимодействие с Объектами QML от C++ :

компоненты QML являются чрезвычайно деревьями объектов с детьми, которые имеют одноуровневые элементы и их собственных детей. Дочерние объекты компонентов QML могут быть расположены с помощью QObject:: имя объекта свойство с QObject:: findChild () . Например, если корневой объект в MyItem.qml имел дочерний Прямоугольный объект:

import QtQuick 2.0

Item {
    width: 100; height: 100

    Rectangle {
        anchors.fill: parent
        objectName: "rect"
    }
}

ребенок мог быть расположен как это:

QObject *rect = object->findChild<QObject*>("rect");
if (rect)
    rect->setProperty("color", "red");

Примечание, что объект может иметь несколько детей с тем же именем объекта. Например, ListView создает несколько экземпляров своего делегата, поэтому если его делегат будет объявлен с конкретным именем объекта, ListView будет иметь несколько детей с тем же именем объекта. В этом случае, QObject:: findChildren () может использоваться для нахождения всех детей с именем объекта соответствия.

Предупреждение : В то время как возможно использовать C++, чтобы получить доступ и управлять объектами QML глубоко в дерево объектов, мы рекомендуем не проявить этот подход за пределами тестирования приложения и разработки прототипа. Одна сила QML и интеграции C++ является способностью реализовать пользовательский интерфейс QML отдельно от логики C++ и бэкенда набора данных и этой стратегии повреждения, если сторона C++ достигает глубоко в компоненты QML для управления ими непосредственно. Это мешало бы, например, подкачало бы компонент представления QML для другого представления, если бы новый компонент пропускал необходимое имя объекта. Для реализации C++ лучше знать как можно меньше о реализации пользовательского интерфейса QML и составе дерева объектов QML.

, Если имя объекта необходимо для тестирования, это определенно стоит того. objectName’s не должен, очевидно, быть добавлен если не необходимый. При добавлении их должны сопровождаться общие инструкции QML для производительности .

Источник: , Каково влияние на память добавления имен объектов к объектам QML?

6
ответ дан 1 December 2019 в 09:09

1: это привыкло к объектам поиска по имени

2: Все они, это прибывает из QObject

3: это используется автопилотом для анализирования приложения от тестовых сценариев

4: я не действительно уверен

5: Я не думаю, что идентификатор является поддающимся обнаружению от внешних инструментов (как автопилот)

2
ответ дан 1 December 2019 в 09:09

Другие вопросы по тегам:

Похожие вопросы: