QML - Как правильно установить implicitWith для GridLayout - PullRequest
0 голосов
/ 09 мая 2019

Я использую Qml 5.12 и в основном пытаюсь установить implicitWidth для GridLayout.

Для этого у меня есть фиолетовый прямоугольник и я установил ширину прямоугольника в GridLayout.

Красный прямоугольник соответствует GridLayout, поэтому я могу видеть ширину моего GridLayout.

Вот мой код:

Rectangle { anchors.fill: gl; color: "red"; opacity: 0.22 }
Rectangle { id: rect; width: 350; height: 30; color: "purple"; }

GridLayout
{
    id: gl
    y: 35
    implicitWidth: rect.width
    columns: 2
    Label { text: "This is a test" }
    SpinBox { Layout.alignment: Qt.AlignRight }
}

Если я запускаю код, я ожидаю, что оба моих прямоугольника будут одинаковой ширины. Но фактический результат - красный прямоугольник меньше. Таким образом, implicitWidth не был внимательным.

Кто-нибудь может сказать, почему?

Спасибо!

1 Ответ

1 голос
/ 09 мая 2019

GridLayout вычисляет свои собственные implicitWidth на основе своих implicitWidth детей. Таким образом, значение, которое вы устанавливаете, перезаписывается вычисленным.

implicitWidth - это ширина, которую должен иметь Предмет (и тот, который он будет иметь, если явно не установлено значение width). Установка его на основе чего-то другого, кроме его дочерних или внутренних ценностей, не имеет большого смысла.

Здесь вы хотите, чтобы GridLayout был точным размером вашего Rectangle, поэтому просто установите его свойство width.

...