Не используйте QPlainTextEdit
для интенсивного форматирования текста. Используйте вместо него двоюродного брата QTextEdit
.
Использование кода и изменение его с QPlainTextEdit
на QTextEdit
решило проблему.
К вашему сведению , это также упоминалось в сообщении об ошибке , на которое вы ссылались. Может быть, вы пропустили это или забыли упомянуть об этом в своем вопросе?
Замена QPlainTextEdit на QTextEdit показывает ожидаемый результат.
QTextEdit te; // note the change in type
te.setPlainText("block1\nblock2\nblock3");
QTextCursor cursor = te.textCursor();
cursor.select(QTextCursor::Document);
QTextBlockFormat fmt;
fmt.setBackground(QColor(Qt::yellow));
fmt.setBottomMargin(6); // let's not overexaggerate anything
fmt.setIndent(1);
fmt.setTopMargin(12);
fmt.setLeftMargin(1);
cursor.setBlockFormat(fmt);
Вот результат использования QPlainTextEdit
(на MacOS).
А вот и результат использования QTextEdit
(на MacOS).
Обратите внимание, что ни одну из функций-членов не нужно изменять, так что это плюс. Переход с QPlainTextEdit
на QTextEdit
не должен быть большой болью.
Дальнейшее чтение : Этот другой SO пост вроде помог. Также было бы хорошо прочитать, если вы планируете использовать больше текстовых классов Qt.