qt 文本编辑器 如何对选中区域不同大小的字体同时增大或减小字号

最近在写一个程序,其中需要用到文本编辑功能,如加粗,斜体,下划线,设置字体、字号等,但在实现类似WPS的“增大字号”和“减小字号”时,

img

只能将选中区域改变为同一大小的字体,无法实现选中区域不同大小的文字改变相同度量值,代码如下:

    QTextCharFormat fmt;
    int fontnum=ui->cbb_fontnum->currentText().toInt();
    fontnum=fontnum+12;
    ui->cbb_fontnum->setCurrentText(QString::number(fontnum));
    fmt.setFontPointSize (fontnum);
    ui->textEdit->mergeCurrentCharFormat (fmt);

该如何修改才能实现下图中

img


选中区域不同大小字体改变相同度量值,类似WPS的“增大字号”和“减小字号”功能。

你将整个textedit设置的同样的字体当然会出现这样的问题。
参考以下代码,按行设置字体大小+1

QTextCursor cursor = textEdit->textCursor();
cursor.movePosition(QTextCursor::Start);  // 移动游标到文本开头

// 遍历每一行
while (!cursor.atEnd()) {
    QTextBlock block = cursor.block();  // 获取当前行
    QTextCharFormat format = block.charFormat();  // 获取当前行的字符格式

    // 获取当前行的字体大小
    qreal currentFontSize = format.fontPointSize();
    qDebug() << "Current font size: " << currentFontSize;

    // 创建新的字符格式,设置字体大小+1
    QTextCharFormat newFormat;
    QFont font = format.font();  // 获取当前字体
    font.setPointSize(currentFontSize + 1);  // 设置字体大小+1
    newFormat.setFont(font);

    // 将新的字符格式应用到当前行
    cursor.setPosition(block.position());
    cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
    cursor.setCharFormat(newFormat);

    cursor.movePosition(QTextCursor::NextBlock);  // 移动游标到下一行
}