QT的的字体使用(全局自带字体特别好用)
WIN10下的默认字体居然是Segoe UI,造成各Windows版本显示不一致,可以这样修改Windows的默认字体(重启后生效):
[HKEY_LOCAL_MACHINE>>SOFTWARE>>Microsoft>>WindowsNT>>CurrentVersion>>FontSubstitutes:Segoe UI = Tahoma]
但是最好还是软件自己指定显示字体,这样才能做到可控,这样设置全局字体:
QFont font; font.setFamily("MS Shell Dlg 2"); // Tahoma 宋体 qApp->setFont(font);
检测全局字体:
qDebug() << qApp->font().rawName(); qDebug() << qApp->font().family(); qDebug() << qApp->font().defaultFamily(); qDebug() << qApp->font().styleName(); qDebug() << qApp->font().toString(); qDebug() << qApp->font().key();
输出结果(QT的默认字体居然是MS Shell Dlg 2):
"unknown"
"MS Shell Dlg 2"
"Arial"
""
"MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"
"MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"
---------------------------------------------------------------------
另外还可把字体作为资源文件携带,然后再使用,比方说我觉得微软雅黑就不错:
//将字体文件名传给addApplicationFont,得到字体的Id
int fontId = QFontDatabase::addApplicationFont("./res/msyh.ttf");
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString msyh = QFontDatabase::applicationFontFamilies ( fontId ).at(0);
QFont font(msyh,10);
//将此字体设为QApplication的默认字体
QApplication::setFont(font);
但是看官方文档说明:
The QFontDatabase class provides information about the fonts available in the underlying window system.
注意,window system不是指windows,而是指所有的窗口系统。
---------------------------------------------------------------------
QFont 为绘画文本提供制定的字体
QFontComboBox 提供了选择字体族的下拉列表框
QFontDatabase 提供了可以在Window 操作系统下能够使用的字体
QFontDialog 用来选择一个指定的字体
QFontEngineInfo 用来描述一个指定的字体引擎插件
QFontEnginePlugin 累提供了字体仓库插件的基础累, 用于嵌入式linux
QFontInfo 包含了一个字体的常规信息
QFontDialog 用来弹出对话框 来获得指定的字体
---------------------------------------------------------------------
参考:
http://mobile.51cto.com/symbian-272552.htm (底下还有系列文章)
http://blog.csdn.net/Liuqz2009/article/details/7208637
版权声明:本文为博主原创文章,未经博主允许不得转载。
QFont 类代表字体,实现在 QtGui 共享库中。
构造
QFont 类有以下几个常用的构造函数:
其中第二个构造函数的各个参数的含义解释如下。
1) family: 字体的名称。
2) pointSize: 字体的点大小,如果这个参数小于等于0,则自动设为 12。
3) weight: 字体的粗细。
4) italic: 字体是否为斜体。
这些参数也可以在字体对象构造以后通过属性来修改。
属性
QFont 类的常用属性如下所示:
字体的属性 获取所用成员函数 设置所有成员函数
名称 QString family() const; void setFamily(const QString &family);
点大小 int pointSize() const; void setPointSize(int pointSize);
像素大小 int pixelSize() const; void setPixelSize(int pixelSize);
粗细 int weight() const; void setWeight(int weight);
粗体 bool bold() const; void setBold(bool enable);
斜体 bool italic() const; void setItalic(bool enable);
下划线 bool underline() const; void setUnderline(bool enable);
其中设置粗体属性实际上就是将字体的粗细设为一个确定的值。点大小与像素大小是指定字体大小的两种方式。如果指定了点大小,则像素大小属性的值就是 -1;反之如果指定了像素大小,则点大小属性的值就是 -1。
如果指定的字体在使用时没有对应的字体文件,Qt 将自动选择最接近的字体。如果要显示的字符在字体中不存在,则字符会被显示为一个空心方框。