Я хочу установить межстрочный интервал QTextEdit.
Невозможно получить эту информацию с помощью
QFontMetrics::lineSpacing();
Но как установить это?
Я попробовал с StyleSheets, но это не сработало:
this->setStyleSheet("QTextEdit{ height: 200%; }");
или
this->setStyleSheet("QTextEdit{ line-height: 200%; }");
Частичное решение:
Ну, я нашел решение - не так, как хотел, но, по крайней мере, он прост, и это дает почти мое намеренное поведение, достаточное для моего доказательства концепции.
На каждой новой строке есть несколько строк. Но если вы набираете текст до тех пор, пока текст не будет автоматически завернут на новую строку, у вас не будет межстрочного интервала между этими двумя строками. Этот хак работает только с текстовыми блоками, см. Код.
Просто имейте в виду это грубую силу и уродливый взлом. Но он обеспечивает какой-то линейный интервал для вашего красивого QTextEdit. Вызывайте его каждый раз, когда ваш текст изменяется.
void setLineSpacing(int lineSpacing) {
int lineCount = 0;
for (QTextBlock block = this->document()->begin(); block.isValid();
block = block.next(), ++lineCount) {
QTextCursor tc = QTextCursor(block);
QTextBlockFormat fmt = block.blockFormat();
if (fmt.topMargin() != lineSpacing
|| fmt.bottomMargin() != lineSpacing) {
fmt.setTopMargin(lineSpacing);
//fmt.setBottomMargin(lineSpacing);
tc.setBlockFormat(fmt);
}
}
}