Arhn - архитектура программирования

Макет QML не ограничивает ширину детей

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

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"
    }

}

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

введите описание изображения здесь

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

Я могу исправить это, только добавив

Layout.maximumWidth: parent.width

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

02.06.2015

Ответы:


1

Текст будет переноситься только в том случае, если была установлена ​​явная ширина.

Документы

Text
{
    width: parent.width
}
02.06.2015
  • Пожалуйста, попробуйте свой код, прежде чем размещать его: Invalid property assignment: "contentWidth" is a read-only property 02.06.2015
  • Комментарий в документах не кажется точным. Обходной путь maximumWidth действительно работает, что предполагает, что код макета может сам устанавливать ширину, и это вызывает перенос. Мне не нужно явно устанавливать ширину в коде QML. 02.06.2015
  • Кроме того, добавление width: parent.width к каждому элементу Text немного короче, но в основном так же неудобно, как добавление Layout.maximumWidth: parent.width - естественное поведение макета - заставить дочерние элементы оставаться в его границах, что довольно возможно с обертыванием меток, и именно так работают макеты в виджетах Qt. 02.06.2015
  • Я думаю, что документы правильные. Подход maximumWidth, вероятно, работает, потому что макет (ColumnLayout, а не функциональность макета текста Text) увидит, что неявная ширина текста слишком велика, и явно установит меньшую ширину. Другими словами, это фактически то же самое, что width: parent.width или Layout.fillWidth: true. Лично я предпочитаю подход, указанный в вашем вопросе, так как вы должны использовать прикрепленные свойства Layout, если ваши элементы находятся в макете. 02.06.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..