Запретить перерисовку подложных элементов в пользовательском элементе управления QtQuick Qml
У меня есть два пользовательских компонента QML, унаследованных от QDeclarativeItem
,
В конструкторах моих компонентов я установил следующие параметры:
setFlag(QGraphicsItem::ItemHasNoContents, false);
setCacheMode(QGraphicsItem::ItemCoordinateCache);
В моем приложении у меня есть элемент одного типа над элементом другого типа. Эти элементы не имеют общих свойств, но когда один из них перерисовывается, другой тоже перерисовывается.
Если я поставлю какой-то стандартный элемент над моими элементами (например, Text
или же Rectangle
) и измените его свойства, это не заставляет мои элементы перерисовываться. Итак, я полагаю, я забыл установить какой-либо флаг в моих компонентах.
Как предотвратить перерисовку одного элемента при изменении другого?
Я использую Qt 4.8 и QtQuick 1.1
1 ответ
В любой растровой системе рендеринга рисование выполняется в буфере резервного хранилища. Таким образом, когда что-то меняется в QGraphicsView
все элементы, которые не полностью скрыты, должны быть нарисованы в обратном Z-порядке. Если какой-либо видимый элемент изменяется, то все видимые элементы, которые пересекают его, должны быть перерисованы.
То, что вы видите, выглядит как нормальное поведение. Если вы не предоставите некоторый код, невозможно сказать иначе.