Как Вы определяете объединенное width
из компонентов в a Row {}
?
width
из самой строки не будет работать, поскольку я должен установить spacing:
, и использование этого свойства создаст ошибку цикла. Это - также активное свойство, таким образом устанавливая его с
Component.onCompleted{}
не будет также достаточен.
Какие-либо предложения?
Почему Вы думаете, что это не работает?
следующий отрывок кода работает правильно на меня:
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
id: root
width: units.gu(100)
height: units.gu(100)
Row {
id: row
spacing: 2
Rectangle { color: "red"; width: 50; height: 50 }
Rectangle { color: "green"; width: 20; height: 50 }
Rectangle { color: "blue"; width: 50; height: 20 }
}
Component.onCompleted: {
console.log(row.width)
}
}
я вижу 124
отображенный на консоли (50+2+20+2+50). Таким образом, ширина строки дает Вам не только ширину каждого объединенные элементы, но также и принимает во внимание интервал между ними.
при необходимости в ширине объединенных элементов без интервала можно использовать следующий метод:
console.log(row.width - (row.children.length - 1)*row.spacing)
Обновление :
, Чтобы только получить ширину компонентов в строке необходимо выполнить итерации по всем детям:
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
id: root
width: units.gu(100)
height: units.gu(100)
Row {
id: row
spacing: 2
Rectangle { color: "red"; width: 50; height: 50 }
Rectangle { color: "green"; width: 20; height: 50 }
Rectangle { color: "blue"; width: 50; height: 20 }
property var children_width
Component.onCompleted: {
children_width = Qt.binding(function() { var i, w=0; for (i in children) {w += children[i].width}; return w });
}
}
Component.onCompleted: {
console.log(row.children_width)
}
}
новое children_width
значение свойства 120
.