最近在写一个程序,其中需要用到文本编辑功能,如加粗,斜体,下划线,设置字体、字号等,但在实现类似WPS的“增大字号”和“减小字号”时,
只能将选中区域改变为同一大小的字体,无法实现选中区域不同大小的文字改变相同度量值,代码如下:
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);
该如何修改才能实现下图中
你将整个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); // 移动游标到下一行
}