本文完全转载自:
【QT】QT字体详解_GLL_的博客-CSDN博客_qt字体
本来只想留个连接方便日后查阅,但发文助手不允许,所以把内容复制一遍
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 LightWindows的一些:新細明體: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