2014-08-30 3 views
1

Я изучаю учебник по QML, и они начали использовать Item в качестве основы для каждого компонента, который они создают, после использования Rectangle для первой части учебника.Попытка понять использование предмета немного лучше?

Дело в том, что color не соответствует действительности. Я не понимаю, почему.

Затем я посмотрел на кучу примерных определений компонентов в режиме онлайн из разных мест, и они, кажется, все используют Item как класс верхнего уровня, а затем сразу после, Rectangle. Какой смысл обертывать Rectangle в Item? Почему бы просто не использовать Rectangle как класс высшего уровня?

+0

Вы должны думать о 'Item' как базовом классе для всех остальных компонентов. Все остальные типы QtQuick (за исключением окон на данный момент) происходят из Item (QQuickItem на стороне C++). У него нет 'color', так как он не реализует никакой формы. Вид немолотого вещества. –

ответ

1

Вы можете придумать Предмет как не визуального Прямоугольника, который немного легче и быстрее для системы, чтобы рисовать, так что рисовать нечего. На самом деле не имеет большого значения, используете ли вы Item или Rectangle в качестве элемента верхнего уровня - это просто хорошая практика программирования, чтобы не использовать больше ресурсов, чем вам нужно.

Вы по достоинству оцените Item больше, если вы начнете создавать свои собственные невизуальные элементы в какой-то момент.

+0

Это последнее предложение укрепило его. – Aerovistae

4

Из документации Qt:

Для создания компонентов (или отображать простую сцену), есть различные элементы, которые могут быть использованы в качестве компонента верхнего уровня. К отображается простая сцена, прямоугольник, поскольку компонент верхнего уровня может хватает. Прямоугольник, FocusScope, Component, QtObject, Item, являются некоторыми из наиболее часто используемых элементов в качестве компонента верхнего уровня.

Таким образом, вы можете использовать любой элемент в качестве компонента верхнего уровня.

Обратите внимание, что визуальные элементы QML, такие как Rectangle, TextEdit, Image, ... наследовать от Item. Item полезен для группировки предметов вместе. Вы можете использовать Item для создания невидимого контейнера для хранения других компонентов. Таким образом, он облегчает обработку детей и обрабатывает такие свойства, как ширина и высота фокуса.

Я думаю, что Item как компонент верхнего уровня похож на шаблон для создания произвольных QML-компонентов. Когда ваш пользовательский компонент загружается в другую сцену QML, компонент сохранит свойства компонента верхнего уровня. Таким образом, вы можете иметь общий и невизуальный элемент, например Item, как элемент верхнего уровня и выставлять произвольные свойства.