MyTetra Share
Делитесь знаниями!
Выравнивание элементов относительно друг друга
Время создания: 10.01.2018 18:12
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - QML - Краткая памятка по QML
Запись: xintrea/mytetra_syncro/master/base/1515597153jr1fwony1u/text.html на raw.github.com

В QML есть такая особенность: выравнивать элементы можно только относительно элементов того же уровня, либо относительно вышестоящих элементов.


Казалось бы, это простое и понятное правило. Но здесь есть непонятки. Что считать вышестоящими элементами? Элементы только той ветки иерархии, в которой находится объект, или любые элементы, уровень вложенности которых меньше, чем выравниваемый элемент? С этим надо разобраться.


В следующем коде будет работать выравнивание элемента text1 относительно rectangle1. Но выравнивание text1 относительно text2 работать не будет по причине того, что text2 находится в другой "ветке" иерархии:


Rectangle {

id: rectangle1


Text {

id: text1

text: "Value text 1"

anchors.left: rectangle1.horizontalCenter

}

}


Text {

id: text2

text: "Value text 2"

anchors.left: parent.left

anchors.bottom: text1.bottom

}


И тут не имеет значения, что text1 расположен глубже по иерархии чем text2 (и мог бы выравниваться относительно text2, согласно правилу). Да, он расположен глубже, но в другой "ветке". Поэтому выравнивания text1 относительно text2 не будет производиться.


Другими словами, тот факт, что text2 стоит вровень с rectangle1, все равно не позволяет text1 выравниваться относительно text2. Элемент text1 может быть выровнен только относительно rectangle1, то есть выравнивание работает только относительно цепочки своих родителей.



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования