Я пытаюсь найти способ пропорционально расположить элементы, указав вес каждого элемента.Например, способ, которым Android выполняет свои макеты .
. Способ, которым я пытаюсь достичь этого, выглядит примерно так:
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
GridLayout {
columns: 4
width: 640
height: 480
Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
}
Я бы ожидал ширинусредний прямоугольник должен быть суммой двух других прямоугольников, но вместо этого все они имеют одинаковую ширину.
Использование реляционных привязок в вложенных свойствах Layout, кажется, всегда приводит к странным циклам связывания.Я знаю, что вместо этого я мог бы использовать строку с реляционными привязками, но я бы предпочел использовать макеты, если это возможно.
РЕДАКТИРОВАТЬ
Кажется, это работает так, как яхочу, но я не знаю, почему это работает.Он ведет себя так, как будто значение preferredWidth
является весом предмета.
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
RowLayout {
width: 640
height: 480
Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}