Qt如何通过char更改所选文本char

时间:2018-06-08 09:35:23

标签: qt text-editor

我在Qt中创建了一个简单的文本编辑器 我能够编辑所选文本并制作它,例如,粗体或下划线或两者。问题是所选文本是部分粗体,正常还是其他。 因此,实现它的唯一方法是获取所选文本并通过char编辑它char(如果它已经是草书,我也希望它也是粗体,char必须是两者)。

这是我的代码的一部分,我可以将所选文本更改为粗体:

QFont font;
QTextCursor cursor = ui->textEdit->textCursor();
QTextCharFormat format;

if(cursor.hasSelection()){
    font = cursor.charFormat().font();
    if(!cursor.charFormat().font().bold()){
        font.setBold(true);
        format.setFont(font);
        cursor.setCharFormat(format);
    }
    else{
        font.setBold(false);
        format.setFont(font);
        cursor.setCharFormat(format);
   }
   ui->textEdit->setTextCursor(cursor);

草书功能完全相同。 这不适用于已编辑的文本 示例:

兰特 OMT的

现在我想选择部分文字,例如:" ndomte"并使它大胆。我的结果是:
RA ndomte XT
我想要的是:
randomt的ë XT

我该怎么做?

1 个答案:

答案 0 :(得分:2)

也许您可以使用QTextCursor::mergeCharFormat(const QTextCharFormat & modifier)http://doc.qt.io/qt-5/qtextcursor.html#mergeCharFormat

示例:

QTextCharFormat format;
format.setFontWeight(QFont::Bold);
cursor.mergeCharFormat(format);