Как Вы определяете объединенную ширину компонентов подряд {}?

Как Вы определяете объединенное width из компонентов в a Row {}?

width из самой строки не будет работать, поскольку я должен установить spacing:, и использование этого свойства создаст ошибку цикла. Это - также активное свойство, таким образом устанавливая его с

Component.onCompleted{} 

не будет также достаточен.

Какие-либо предложения?

1
задан 2 June 2016 в 15:44

1 ответ

Почему Вы думаете, что это не работает?

следующий отрывок кода работает правильно на меня:

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.

1
ответ дан 7 December 2019 в 16:31

Другие вопросы по тегам:

Похожие вопросы: