QFont/QFontInfo方法功能(QT5.12)

本文详细介绍了Qt中的QFont类及其相关信息类QFontInfo的使用方法。包括如何创建字体对象、设置字体属性及如何通过QFontInfo获取实际使用的字体属性。
//for starf study

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include<QDebug>
#include<QFont>
#include<QFontInfo>


//QFont类指定用于绘制文本的字体。
//创建QFont对象时,需要指定希望字体具有的各种属性
//Qt将使用具有指定属性的字体,或者如果不存在匹配的字体,Qt将使用最匹配的已安装字体。
//QFontInfo 提供和 QFont 一样的查询接口
//不同的是,QFont返回设置的属性
//而QFontInfo返回实际显示的属性
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QFont ft1 = QFont();
    QFont ft2 = QFont("宋体",14,66,true); //初始化字体对象 设置family  自宽  加粗程度  确定倾斜
    qDebug()<< ft2.bold(); //如果weight()的值大于QFont::Medium(57),则返回true;否则返回false。
    qDebug()<<ft2.capitalization(); //返回文本的呈现类型  可能的值有:
    //QFont::MixedCase              正常的文本呈现选项,不应用大小写更改。
    //QFont::AllUppercase          以全大写形式呈现文本。
    //QFont::AllLowercase          以全小写形式呈现文本。
    //QFont::SmallCaps              以小写字体呈现文本。
    //QFont::Capitalize               每个单词的第一个字符都是大写字符。
    qDebug()<<ft2.defaultFamily()<<ft2.family(); //获得字体默认的family ;   获得当前字体对象设置的family
    qDebug()<<ft2.exactMatch(); //QT会根据构造时的设置选择字体,但是如果字体不存在就会选择最接近设置的字体
                                                //如果能够精确匹配,那么此函数返回true
    qDebug()<<ft2.fixedPitch(); //如果fixedPitch被设置,则返回true
    qDebug()<<ft2.fromString("宋体字体自定义"); // 自定义该字体对象的family描述
    qDebug()<<ft2.toString();//打印该字体的信息  "宋体,14,-1,5,66,1,0,0,0,0"
    qDebug()<<ft2.isCopyOf(ft1); // 如果ft1是ft2的副本且前后没有修改过,那么返回true
    qDebug()<<ft2.italic(); //如果字体的style()不是QFont::StyleNormal,则返回true
    qDebug()<<ft2.kerning(); //如果使用此字体绘制文本时应使用紧排,则返回true。
    qDebug()<<ft2.key(); //返回字体的键,即字体的文本表示形式。它通常用作缓存或字体字典的键。
    qDebug()<<ft2.lastResortFamily() ; //返回“最后一次使用”字体的family。
    qDebug()<<ft2.letterSpacing(); //返回字体的字母间距。
    qDebug()<<ft2.letterSpacingType(); //返回用于字母间距的间距类型。
            //QFont::PercentageSpacing   值为100将保持间距不变;值为200时,字符后面的间距将扩大字符本身的宽度。
            //QFont::AbsoluteSpacing   正值将字母间距增加相应像素;负值会减小间距。
    qDebug()<<ft2.overline(); //如果已设置上划线,则返回true;否则返回false。
    qDebug()<<ft2.pixelSize(); //如果字体是用setPixelSize()设置的,则返回字体的像素大小。
                                            //如果大小是用setPointSize()或setPointSizeF()设置的,则返回-1。
    qDebug()<<ft2.pointSize(); //返回字体的点大小。
                                            //如果字体大小以像素为单位指定,则返回-1。
                                            //qreal QFont::pointSizeF() const 精度更高的重载
    QFont ft3 = ft2.resolve(ft2);  //返回一个新的QFont, 该QFont具有从其他字体复制的属性
    qDebug()<<ft3.toString();
    qDebug()<< ft3.styleName(); //获得对象的字体样式
    qDebug()<<ft3.stretch(); //获得拉伸系数
    qDebug()<<ft3.style(); //获取字体样式
    qDebug()<<ft3.underline(); //判断是否设置了下划线
    qDebug()<<ft3.weight(); //返回字体字宽
    qDebug()<<ft3.wordSpacing(); //获得字体间距

    ft3.setBold(true); //设置粗体
    ft3.setCapitalization(QFont::Capitalize ); //设置为首字母大写
    ft3.setFamily("华文仿宋"); //设置字体簇
    ft3.setFixedPitch(true); //设置字体宽度相等
    ft3.setItalic(true); //填true设置字体风格为 QFont::StyleItalic  否则设置为 QFont::StyleNormal
                //QFont::StyleItalic  专门为表示斜体文本而设计的斜体字形。
                // QFont::StyleNormal 正常文本
    ft3.setKerning(true); //启用紧密排列
    ft3.setLetterSpacing(QFont::AbsoluteSpacing , 40); //设置字母间距
                                                                                //参数1设置间距样式
                                                                                //参数2设置间距值
    ft3.setOverline(true); //设置启用划线(字体中间)
    ft3.setPixelSize(49); //将字体大小设置为像素大小。使用此功能会使字体设备依赖。
    ft3.setPointSize(49); //将点大小设置为pointSize。点大小必须大于零。此功能不依赖设备
                //void QFont::setPointSizeF(qreal pointSize) 有一个更高精度的重载函数
    ft3.setStretch(2); //设置字体的拉伸系数(放大或者缩小)
    ft3.setStyle(QFont::StyleItalic); //设置样式,可选有
        //QFont::StyleNormal
        //QFont::StyleItalic
        //QFont::StyleOblique
    ft3.setStyleName("ft3style"); //给该对象的样式设置别名
    ft3.setUnderline(true); //如果启用为true,则将下划线设置为on;
    ft3.setWeight(30);// 设置字宽
    ft3.setWordSpacing(10); //将字体的单词间距设置为空格。
}

MainWindow::~MainWindow()
{
    delete ui;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值