Если у меня есть блок QTextEdit, как я могу по-разному выровнять разные фрагменты текста внутри блока? Например, я хотел бы, чтобы одно предложение было выровнено по левому краю, а следующее предложение в поле было выровнено по правому краю. Это возможно? Если нет, то как мне добиться этого эффекта в Qt?
Как сказано в документации:
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);
Результат: