本文完全转载自:
本来只想留个连接方便日后查阅,但发文助手不允许,所以把内容复制一遍
1、综述
首先看看QT官方的帮助文档:
QFont类指定用于图形文本的字体。
创建QFont对象时,您可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体,或者如果不存在匹配字体,Qt将使用最接近的匹配安装字体。实际使用的字体属性可从QFontInfo对象中检索。如果窗口系统提供精确匹配,则exactMatch ( )返回true。使用QFontMetrics获取度量值,例如使用QFontMetrics : : width ( )的字符串的像素长度。
请注意,QGuiApplication实例必须存在,才能使用QFont。您可以使用QGuiApplication : : setFont ( )设置应用程序的默认字体。
如果所选字体不包括需要显示的所有字符,QFont将尝试查找最接近的等效字体中的字符。当qpinter从字体中绘制字符时,QFont将报告其是否具有该字符;否则,QPainter将绘制一个未填充的正方形。
头文件是QFont
QFont相关
QFont 为绘画文本提供制定的字体
QFontComboBox 提供了选择字体族的下拉列表框
QFontDatabase 提供了可以在Window 操作系统下能够使用的字体
QFontDialog 用来选择一个指定的字体
QFontEngineInfo 用来描述一个指定的字体引擎插件
QFontEnginePlugin 累提供了字体仓库插件的基础累, 用于嵌入式linux
QFontInfo 包含了一个字体的常规信息
QFontDialog 用来弹出对话框 来获得指定的字体
2、实例
QFont的实际使用:
在QFont当中有两种方式设置字体大小,一种是setPixelSize,另一种是setPointSize
setPixelSize()函数使用像素作为单位来设置字体大小
setPointSize()函数规定了实际中我们肉眼看到的字体的大小,与像素无关
也就是说
使用setPixelSize函数设置大小,在像素大小不同的设备上显示的大小也不同
使用setPointSize函数设置大小,在不同设备上显示的大小是相同的
-
//设置全局字体
-
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设置字体:
-
//第一个参数是字体(微软雅黑),第二个是字体大小(单位为pt),第三个是加粗(50代表正常),第四个是斜体(true代表斜体)
-
QFont font("Microsoft YaHei", 8, 50, true);
-
ui->box->setFont(font);
-
//或者
-
QFont font("Microsoft YaHei", 8, 50);//第一个参数是字体(微软雅黑),第二个是字体大小,第三个是加粗(50代表正常)
-
font.setItalic(true);//斜体
-
ui->box->setFont(font);
-
//又或者
-
QFont font(QString::fromLocal8Bit("微软雅黑"), 9);
-
ui->box->setFont(font);
-
字体属性可以传递:
-
QFont newfont;
-
newfont = QFont("Microsoft YaHei", 8, 50);
-
或者
-
QFont font("微软雅黑",10);
-
newfont = font;
-
//将字体设为QApplication默认字体
-
QApplication::setFont(font);
对于UI控件:例如label、button,还可以在UI界面键入文字
label等控件还可以在UI属性页采用HTML格式输入:
HTML代码如下:
<html><head/><body><p align="center"><span style=" font-size:18pt; color:#008000;">你要显示的内容</span></p></body></html>
如此一来,就可以很方便的编辑了:
左键双击label即可弹出编辑框,如图:
可以对文字大小、对齐方式、字体颜色等进行设置,并且可以插入图片、连接。
当然,也可以直接在设计师界面设置字体样式:
QT设计师界面设置字体
实际使用中,有时候我们控件中的字体是控件出现之后设置上去的,想设置这种字体颜色,怎么办呢:
-
QPalette palette;
-
palette.setColor(QPalette::WindowText,Qt::red);
-
ui->label_CurrentTime->setPalette(palette); //这里设置控件字体颜色
-
ui->label_CurrentTime->setText(StrCurrentTime);//附加文本显示为上面设置的红色
tips
:在开发板上运行Qt程序时,很多时候我们对字体的设置并没有效果,这是因为开发板上的字体依赖于字库,我们要把对应字库移植到开发板指定位置,如:
然后,在运行程序时,指定字体,如:./test -font wenquanyi -qws
如果设置无效,可以将其他字体删除,然后./test -qws,
3、QT字体综述:
-
Qt 支持的中文字体的名称
-
“Arial Unicode MS”
-
“Fixedsys”
-
“SimSun-ExtB”
-
“System”
-
“Terminal”
-
“仿宋”
-
“华文中宋”
-
“华文仿宋”
-
“华文宋体”
-
“华文彩云”
-
“华文新魏”
-
“华文楷体”
-
“华文琥珀”
-
“华文细黑”
-
“华文行楷”
-
“华文隶书”
-
“宋体”
-
“幼圆”
-
“微软雅黑”
-
“新宋体”
-
“方正姚体”
-
“方正舒体”
-
“楷体”
-
“隶书”
-
“黑体”
-
代码:
-
{
-
QFontDatabase database;
-
foreach(const QString &family, database.families(QFontDatabase::SimplifiedChinese))
-
{
-
qDebug() << family;
-
}
-
}
-
以上这段代码就可以枚举出系统中所有支持中文的字体名称。
-
Qt支持的其他字体的名称
-
“Aharoni”
-
“Andalus”
-
“Angsana New”
-
“AngsanaUPC”
-
“Aparajita”
-
“Arabic Typesetting”
-
“Arial”
-
“Arial Black”
-
“Arial Narrow”
-
“Arial Unicode MS”
-
“Batang”
-
“BatangChe”
-
“Book Antiqua”
-
“Bookman Old Style”
-
“Bookshelf Symbol 7”
-
“Browallia New”
-
“BrowalliaUPC”
-
“Calibri”
-
“Calibri Light”
-
“Cambria”
-
“Cambria Math”
-
“Candara”
-
“Century”
-
“Century Gothic”
-
“Comic Sans MS”
-
“Consolas”
-
“Constantia”
-
“Corbel”
-
“Cordia New”
-
“CordiaUPC”
-
“Courier”
-
“Courier New”
-
“DaunPenh”
-
“David”
-
“DFKai-SB”
-
“DilleniaUPC”
-
“DokChampa”
-
“Dotum”
-
“DotumChe”
-
“Ebrima”
-
“Estrangelo Edessa”
-
“EucrosiaUPC”
-
“Euphemia”
-
“Fixedsys”
-
“Franklin Gothic Medium”
-
“FrankRuehl”
-
“FreesiaUPC”
-
“Gabriola”
-
“Garamond”
-
“Gautami”
-
“Georgia”
-
“Gisha”
-
“Gulim”
-
“GulimChe”
-
“Gungsuh”
-
“GungsuhChe”
-
“Impact”
-
“IrisUPC”
-
“Iskoola Pota”
-
“JasmineUPC”
-
“Kalinga”
-
“Kartika”
-
“Khmer UI”
-
“KodchiangUPC”
-
“Kokila”
-
“Lao UI”
-
“Latha”
-
“Leelawadee”
-
“Levenim MT”
-
“LilyUPC”
-
“Lucida Console”
-
“Lucida Sans Unicode”
-
“Malgun Gothic”
-
“Mangal”
-
“Marlett”
-
“Meiryo”
-
“Meiryo UI”
-
“Microsoft Himalaya”
-
“Microsoft JhengHei”
-
“Microsoft New Tai Lue”
-
“Microsoft PhagsPa”
-
“Microsoft Sans Serif”
-
“Microsoft Tai Le”
-
“Microsoft Uighur”
-
“Microsoft Yi Baiti”
-
“MingLiU”
-
“MingLiU-ExtB”
-
“MingLiU_HKSCS”
-
“MingLiU_HKSCS-ExtB”
-
“Miriam”
-
“Miriam Fixed”
-
“Modern”
-
“Mongolian Baiti”
-
“Monotype Corsiva”
-
“MoolBoran”
-
“MS Gothic”
-
“MS Mincho”
-
“MS Outlook”
-
“MS PGothic”
-
“MS PMincho”
-
“MS Reference Sans Serif”
-
“MS Reference Specialty”
-
“MS Sans Serif”
-
“MS Serif”
-
“MS UI Gothic”
-
“MT Extra”
-
“MV Boli”
-
“Narkisim”
-
“Nyala”
-
“Palatino Linotype”
-
“Plantagenet Cherokee”
-
“PMingLiU”
-
“PMingLiU-ExtB”
-
“Raavi”
-
“Rod”
-
“Roman”
-
“Sakkal Majalla”
-
“Script”
-
“Segoe Print”
-
“Segoe Script”
-
“Segoe UI”
-
“Segoe UI Light”
-
“Segoe UI Semibold”
-
“Segoe UI Symbol”
-
“Shonar Bangla”
-
“Shruti”
-
“Simplified Arabic”
-
“Simplified Arabic Fixed”
-
“SimSun-ExtB”
-
“Small Fonts”
-
“Sylfaen”
-
“Symbol”
-
“System”
-
“Tahoma”
-
“Terminal”
-
“Times New Roman”
-
“Traditional Arabic”
-
“Trebuchet MS”
-
“Tunga”
-
“Utsaah”
-
“Vani”
-
“Verdana”
-
“Vijaya”
-
“Vrinda”
-
“Webdings”
-
“Wingdings”
-
“Wingdings 2”
-
“Wingdings 3”
-
{
-
QFontDatabase database;
-
foreach(const QString &family, database.families())
-
{
-
qDebug() << family;
-
}
-
}
-
以上这段代码就可以枚举出系统支持的所有字体的名称;
-
中文字体名称对应的字体英文名称
-
宋体 SimSun
-
黑体 SimHei
-
微软雅黑 Microsoft YaHei
-
微软正黑体 Microsoft JhengHei
-
新宋体 NSimSun
-
新细明体 PMingLiU
-
细明体 MingLiU
-
标楷体 DFKai-SB
-
仿宋 FangSong
-
楷体 KaiTi
-
仿宋_GB2312 FangSong_GB2312
-
楷体_GB2312 KaiTi_GB2312
-
宋体:SimSuncss中中文字体(font-family)的英文名称
-
Mac OS的一些:
-
华文细黑:STHeiti Light [STXihei]
-
华文黑体:STHeiti
-
华文楷体:STKaiti
-
华文宋体:STSong
-
华文仿宋:STFangsong
-
儷黑 Pro:LiHei Pro Medium
-
儷宋 Pro:LiSong Pro Light
-
標楷體:BiauKai
-
蘋果儷中黑:Apple LiGothic Medium
-
蘋果儷細宋:Apple LiSung Light
-
Windows的一些:
-
新細明體:PMingLiU
-
細明體:MingLiU
-
標楷體:DFKai-SB
-
黑体:SimHei
-
新宋体:NSimSun
-
仿宋:FangSong
-
楷体:KaiTi
-
仿宋_GB2312:FangSong_GB2312
-
楷体_GB2312:KaiTi_GB2312
-
微軟正黑體:Microsoft JhengHei
-
微软雅黑体:Microsoft YaHei
-
装Office会生出来的一些:
-
隶书:LiSu
-
幼圆:YouYuan
-
华文细黑:STXihei
-
华文楷体:STKaiti
-
华文宋体:STSong
-
华文中宋:STZhongsong
-
华文仿宋:STFangsong
-
方正舒体:FZShuTi
-
方正姚体:FZYaoti
-
华文彩云:STCaiyun
-
华文琥珀:STHupo
-
华文隶书:STLiti
-
华文行楷:STXingkai
-
华文新魏:STXinwei