一、类的作用
QTextCharFormat:用来存储 字体,字号,加粗,倾斜,下划线,颜色等属性的类 ,它通常用于 QTextDocument
或 QTextCursor
中,以设置或修改文本的格式。如设置文本的字符格式,如字体、颜色、对齐方式、段落样式等。
二、属性及函数
头文件:#include <QTextCharFormat>
继承自:QTextFormat
继承人:QTextImageFormat 和 QTextTableCellFormat
QTextCharFormat() //构造函数
QString QTextCharFormat::anchorHref() const //返回文本格式的超链接
QStringList QTextCharFormat::anchorNames() const //返回锚点名称
QFont QTextCharFormat::font() const //返回此字符格式的字体
setFont(const QFont &font) //字体。
setFontFamily(const QString &family) //字体家族。
setFontSize(int size)// 字体大小。
setFontWeight(int weight)//字体粗细。
setFontItalic(bool italic)//字体是否倾斜。
setFontUnderline(bool underline)//字体是否带下划线。
setFontStrikeOut(bool strikeOut)//字体是否带删除线。
setForeground(const QBrush &brush)//前景色(文本颜色)。
setBackground(const QBrush &brush)//背景色。
setTextOutline(const QPen &pen)//文本描边样式。
setTextUnderlineColor(const QColor &color)//下划线颜色。
setTextVerticalAlignment(Qt::Alignment alignment)//文本垂直对齐方式。
setAnchor(bool anchor)//是否为锚点。
setAnchorHref(const QString &href)//锚点链接。
setAnchorNames(const QStringList &names)//锚点名称。
setToolTip(const QString &toolTip)//工具提示。
setFontCapitalization(QFont::Capitalization caps)//字母大小写。
setFontLetterSpacing(qreal spacing)//字母间距。
setFontWordSpacing(qreal spacing)//单词间距。
三、类的使用
将类的属性作用到所选中的文字,m_edit 是 QTextEdit的类对象。
//字体是否倾斜的槽函数
void EditorWindow::on_m_actItalic_triggered(bool checked)
{
QTextCharFormat fmt; // 新建一个对象,存储字符格式信息
fmt.setFontItalic(checked); //保存字体是否倾斜的属性
ui->m_edit->mergeCurrentCharFormat(fmt);// 将fmt类的属性作用于当前选中的文字
}
/*------------三目运算符用法OK-----------------*/
// checked : 真,粗体; 假,普通
void EditorWindow::on_m_actBold_triggered(bool checked)
{
QTextCharFormat fmt; // 存储字符格式信息
fmt.setFontWeight(checked ? QFont::Bold : QFont::Normal);
// 将设置到的fmt作用于当前选中的文字
ui->m_edit->mergeCurrentCharFormat(fmt);
}
四、与Qfont区别
注意这个比Qfont字体类范围要大,可以存储Qfont;包含Qfont。
QTextEdit textEdit;//创建一个文本编辑框
QTextCursor cursor = textEdit.textCursor(); //获取文本编辑框中选中的内容
// 创建一个字体对象
QFont font("Arial", 12, QFont::Bold, true);
// 创建一个字符格式对象
QTextCharFormat format;
format.setFont(font); //将字体赋值到QTexCharFormat对象
format.setForeground(Qt::red);
format.setBackground(Qt::yellow);
format.setAlignment(Qt::AlignCenter);
// 将格式应用到光标所在的文本
cursor.setCharFormat(format);