c++ - 在QTextEdit中,对齐文本?

  显示原文与译文双语对照的内容
0 0

如果有QTextEdit框,如何以不同的方式将不同的文本Fragment排列在框中? 例如,我想要一个句子左对齐,下一个句子中的下一个句子正确对齐。 这可能如果没有,我如何在Qt中实现这种效果?

时间:原作者:4个回答

0 0

如文档所述:

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

将当前段落的对齐方式设置为 a 。 有效的对齐方式有 Qt::AlignLeftQt::AlignRightQt::AlignJustifyQt::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);

我电脑上的结果?

enter image description here

或者更接近你的问题:

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);

结果:

enter image description here

原作者:
...