2015-06-02 2 views
3

У меня есть QML ColumnLayout с несколькими детьми, и я хочу, чтобы ограничить его ширину, например, так:QML Layout не ограничивает ширину детей

ColumnLayout { 

    width: 360 
    height: 480 

    ColumnLayout { 
     id: inner 
     Layout.maximumWidth: 200 
     Layout.fillHeight: true 

     Text { 
      text: "Welcome" 
      font.pixelSize: 18 
     } 

     Text { 
      text: "Long explanation that should wrap, but ends up overflowing layout" 
      wrapMode: Text.WrapAnywhere 
     } 
    } 

    Rectangle { 
     anchors.fill: inner 
     z: -1 
     border.color: "orange" 
    } 

} 

я получаю результат, показанный на рисунке.

enter image description here

Оранжевое окно показывает размеры внутреннего элемента компоновки, которая все в порядке. Тем не менее, текст текста макета не обернут.

я могу исправить только, что при добавлении

Layout.maximumWidth: parent.width 

к моим пунктам «Текст», но это довольно неудобно подход. Я делаю что-то неправильно, или это ошибка Qt, или это какой-то подход к дизайну по какой-то причине? Я использую Qt 5.4.1.

ответ

2

текст будет обернуть только если явная ширина была установлена ​​

Docs

Text 
{ 
    width: parent.width 
} 
+0

Пожалуйста, попробуйте свой код, прежде чем отправить его: 'Invalid присвоение собственности:«contentWidth»является свойство только для чтения' – Mitch

+0

(Это 'Layout.fillWidth: true') – Mitch

+0

Я отредактировал ответ. – Nadarian

Смежные вопросы