Как установить межстрочный интервал для текстового элемента Qml?

Я не могу понять этого. Я имею в виду вертикальный интервал между строками текста в текстовом элементе Qml. Я не могу использовать форматированный текст, а GridLayout, похоже, разрушает мою упаковку, горизонтальное выравнивание и возможность проверки усечения. Это внутри прямоугольника.

Text{   
        width:10
        wrapMode: Text.Text.Wrap
        text:"This will be broken into multiple lines. How could I set the vertical spacing between them?"
     }

Я имею в виду:

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

Vs

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


person swaggg    schedule 18.11.2018    source источник
comment
предоставьте минимальный воспроизводимый пример   -  person eyllanesc    schedule 19.11.2018
comment
Я бы с удовольствием, но пример того, что ... GridLayout что-то разрушает? Но кроме этого, есть ли способ определить интервал между строками / абзацами без него?   -  person swaggg    schedule 19.11.2018
comment
Я хочу увидеть код, который порождает проблему, поскольку я думаю, что это зависит от его реализации, поэтому в случае вопросов типа: мой код не работает OP должен предоставить минимальный воспроизводимый пример, можете ли вы поделиться минимальный воспроизводимый пример?   -  person eyllanesc    schedule 19.11.2018
comment
Я понимаю, но это скорее общий вопрос. Я выложу код, чтобы было понятнее. Я мог бы привести пример того, как GridLayout разрушает вещи, но с моей стороны потребуется некоторая работа, чтобы обрезать существующий код и т. Д.   -  person swaggg    schedule 19.11.2018
comment
Итак, я имею в виду общее свойство, которое я мог бы здесь использовать. LineHeight, я думаю, определяет высоту строк, а не расстояние между ними, и, похоже, нарушает мой макет. Я не могу найти такое свойство в документации.   -  person swaggg    schedule 19.11.2018
comment
Вы можете показать картинку того, что вы получаете и что хотите получить.   -  person eyllanesc    schedule 19.11.2018
comment
Я разместил код? Вам непонятен вертикальный интервал между строками текста?   -  person swaggg    schedule 19.11.2018
comment
Нет, мне это не понятно.   -  person eyllanesc    schedule 19.11.2018
comment
Я включил в свой вопрос ссылки на 2 изображения.   -  person swaggg    schedule 19.11.2018
comment
@swaggg на обоих снимках экрана, диалоговые окна обозначают его как line spacing. Просто повторно используйте этот язык в своем вопросе, без вреда для него. :-)   -  person TrebledJ    schedule 19.11.2018
comment
@eyllanesc, ты слишком много думаешь. :П   -  person TrebledJ    schedule 19.11.2018
comment
@TrebuchetMS Нет, моя идея заключалась не в том, чтобы решить проблему (сегодня я занимаюсь только модерацией :-)), а в том, чтобы понять, чего вы хотите, если вы посмотрите историю, вы увидите, что исходное состояние вопроса неясно.   -  person eyllanesc    schedule 19.11.2018
comment
Errrr, в названии написан межстрочный интервал. Затем я описываю это как вертикальный межстрочный интервал   -  person swaggg    schedule 20.11.2018


Ответы (1)


Хорошая привычка - проверить документацию. Просматривая его, вы могли увидеть свойство под названием lineHeight < / а>. Я считаю, что это то, что вы ищете. Из документации:

lineHeight : real

Устанавливает высоту строки для текста. Значение может быть в пикселях или множителем в зависимости от lineHeightMode.

Они также расскажут вам, как его использовать

Значение по умолчанию - 1,0. Высота строки должна быть положительным значением.

Использование lineHeight в качестве множителя позволяет имитировать следующие перечисления межстрочного интервала в MSWord.

Single
1.5 lines
Double
Multiple

Вот пример:

import QtQuick 2.0
import QtQuick.Window 2.0

Window {
    visible: true
    width: 200
    height: 300
    
    Text {
        id: text
        width: 175
        anchors.centerIn: parent
        
        //  text: "HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO HELLO"
        text: "Cat ipsum dolor sit amet, sleep nap. You call this cat food. Push your water glass on the floor."
        
        font.family: "Monaco"    // Monaco ❤️
        wrapMode: Text.WordWrap  // Make the text multi-line
        horizontalAlignment: Text.AlignHCenter

        //  lineHeight: 1.0  // single-spacing (default)
        lineHeight: 1.5  // 1.5 line-spacing
        //  lineHeight: 2.0  // double-spacing
        //  lineHeight: 3.0  // triple-spacing
        
    }
}

Вот результаты использования разных значений lineHeight (на типичной MacOS)

Одинарный интервал

1x межстрочный интервал

1,5x, двойной (2x), тройной (3x)

1,5x межстрочный интервал  2x межстрочный интервал  3x межстрочный интервал


Однако, если вы хотите имитировать другие перечисления межстрочного интервала:

At least
Exactly

вам нужно будет изменить высоту в пикселях. Вы можете сделать это, установив для lineHeightMode значение Text.FixedHeight. Вот так

Window {
    visible: true
    width: 200
    height: 300
    
    Text {
        id: text
        width: 175
        anchors.centerIn: parent
        
        text: "Cat ipsum dolor sit amet, sleep nap. You call this cat food. Push your water glass on the floor."
        
        font.family: "Monaco"    // Monaco ❤️
        wrapMode: Text.WordWrap  // Make the text multi-line
        
        
        lineHeightMode: Text.FixedHeight
        lineHeight: 6            // exaggerated, text will be scrunched up
        
    }
}

Ровно 6

Ровно 6

person TrebledJ    schedule 19.11.2018
comment
Спасибо за развернутый ответ! Как я сказал в своем комментарии: я просто имею в виду общее свойство, которое я мог бы здесь использовать. LineHeight, я думаю, определяет высоту строк, а не расстояние между ними, и, похоже, нарушает мой макет. Наверное, из-за того, как сломались якоря. свойства есть, но это нормально. - person swaggg; 20.11.2018
comment
О боже, я, должно быть, слепой. ???? Ну, я полагаю, вы могли бы манипулировать пространством между строками, используя lineHeight тем или иным способом. - person TrebledJ; 20.11.2018
comment
На самом деле, я попытался установить это примерно как 2x, прежде чем задавать здесь свой вопрос, и в результате моя метка полностью выпала из моего прямоугольника, поэтому я предположил, что свойство делает что-то совершенно другое. Я предполагаю, что это было связано с моей настройкой привязки, поскольку позже я обнаружил, что комбинирование привязок с динамическим изменением размера шрифта на основе размера корневого элемента в моем виджете также изменило положение метки по отношению к фоновому прямоугольнику. В любом случае ... Приятно знать, что это нормально работает. - person swaggg; 20.11.2018