我在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 的
我该怎么做?
答案 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);