У меня есть QGraphicsScene где я вставка различного QGraphicsItem объектов, такие как прямоугольники или многоугольники. Идея состоит в представлении электронной диаграммы с RectItem для каждого компонента, треугольной формы PolygonItem для каждого штыря этого компонента и PathItem для представления связей между контактами.Qt: изменение Z-порядка между двумя не родственными графическими элементами
Мне сложно найти способ правильно упорядочить мои предметы, чтобы ссылки всегда прятались от их штыря и штифта. Легко скрыть ссылку за ее начальным знаком, потому что начальный вывод всегда является родителем ссылки, поэтому я могу установить флаг QGraphicsItem :: ItemStacksBehindParent, когда создаю ссылку. Но для концевого штифта я застрял.
Я попытался установить Zvalue моего вывода на превосходное значение ссылки, к которой он присоединен, или вызвать функцию Qt StackBefore(), но без результата. Документ говорит мне, что z-order касается только элементов-близнецов, которые означают элемент, который имеет один и тот же родительский элемент или оба являются элементами верхнего уровня. Но все мои компоненты независимы, так есть ли способ изменить порядок стека между двумя не-братьями?
Большое спасибо за помощь.
Возможно, вам следует вычислить z-индекс каждого элемента вручную с помощью некоторого пользовательского алгоритма, а затем просто использовать 'QGraphicsItem :: setZValue'? –
@ Riateche Вы имеете в виду что-то подобное? '/ ** * Добавить данную ссылку в список прикрепленных ссылок (если он уже не был добавлен ранее) * @param л ссылку добавить */ недействительным Pin :: AddLink (Link * л) { если (! MLinks.contains (l)) { mLinks.добавление (л); если (l-> zValue()> = zValue()) setZValue (l-> zValue() + 1); } } ' Потому что это то, что я раньше имел, но также и одно из решений, которые не работали по причине, упомянутой ранее. – Arnaud
Вы сказали, что все ваши компоненты независимы, так же как и все элементы верхнего уровня? В этом случае 'setZValue' должен работать. –