思路
设置当前行文本的格式 需要使用到QTextCharFormat类,设置它的文本颜色或者文本字体,然后并获取 当前文本的光标,从光标开始位置设置文本的字符格式。
代码
1、设置文本当前行的颜色
void MainWindow::setInsertTextColor(const QColor &color)
{
QTextCharFormat fmt;//文本字符格式
fmt.setForeground(color);// 前景色(即字体色)设为color色
QTextCursor cursor = ui->infoTextEdit->textCursor();//获取文本光标
cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
ui->infoTextEdit->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
}
2、设置文本当前行的字体
void MainWindow::setInsertTextFont(const QFont &font)
{
QTextCharFormat fmt;//文本字符格式
fmt.setFont(font);//字体
QTextCursor cursor = ui->m_textdisplay->textCursor();//获取文本光标
cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
ui->m_textdisplay->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
}
3、使用总结
//设置时间颜色与字体
setInsertTextFont(timeFont);
setInsertTextColor(timeColor);
ui->infoText->append(curTime.toString());
4.设置某一部分字体颜色改变
QTextCharFormat fmt;//文本字符格式
fmt.setForeground(QColor("red"));// 前景色(即字体色)设为color色
QString str1 = ui->textEdit->toPlainText();
QTextCursor cursor = ui->textEdit->textCursor();//获取文本光标
ui->textEdit->setFocus();
cursor.setPosition(0,QTextCursor::MoveAnchor);
cursor.setPosition(5,QTextCursor::KeepAnchor);
cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
ui->textEdit->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
QTextCharFormat fmt;//文本字符格式
fmt.setForeground(QColor("red"));// 前景色(即字体色)设为color色
QString str1 = ui->textEdit->toPlainText();
QTextCursor cursor = ui->textEdit->textCursor();//获取文本光标
ui->textEdit->setFocus();
cursor.setPosition(0,QTextCursor::MoveAnchor);
cursor.setPosition(2,QTextCursor::KeepAnchor);
cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
ui->textEdit->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
cursor.setPosition(6,QTextCursor::MoveAnchor);
cursor.setPosition(8,QTextCursor::KeepAnchor);
cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
ui->textEdit->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
5.选中某一段文本
//此时光标所在的位置
QTextCursor cursor = ui->textEdit->textCursor();
//选中从start到end的这一段文本
int start = cursor.position();
int end = cursor.position()+5;
cursor.setPosition(start,QTextCursor::MoveAnchor);
cursor.setPosition(end,QTextCursor::KeepAnchor);
ui->textEdit->setTextCursor(cursor);