Выравнивание текста в QTextEdit?

Если у меня есть блок QTextEdit, как я могу по-разному выровнять разные фрагменты текста внутри блока? Например, я хотел бы, чтобы одно предложение было выровнено по левому краю, а следующее предложение в поле было выровнено по правому краю. Это возможно? Если нет, то как мне добиться этого эффекта в Qt?

1

Решение

Как сказано в документации:

void QTextEdit::setAlignment(Qt::Alignment a) [slot]

Устанавливает выравнивание текущего абзаца в a, Действительные выравнивания Qt::AlignLeft, Qt::AlignRight, Qt::AlignJustify а также Qt::AlignCenter (который центрируется горизонтально).

Ссылка на сайт: http://qt-project.org/doc/qt-5/qtextedit.html#setAlignment

Итак, как вы можете видеть, вы должны обеспечить некоторое выравнивание каждого абзаца.

Маленький пример:

QTextCursor cursor = ui->textEdit->textCursor();
QTextBlockFormat textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignRight);//or another alignment
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

Какой результат я получаю на своем компьютере?

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

Или что-то ближе к вашему вопросу:

ui->textEdit->clear();
ui->textEdit->append("example");
ui->textEdit->append("example");
QTextCursor cursor = ui->textEdit->textCursor();
QTextBlockFormat textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignRight);
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

ui->textEdit->append("example");

cursor = ui->textEdit->textCursor();
textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignCenter);
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

Результат:

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

6

Другие решения


По вопросам рекламы [email protected]