1. 程式人生 > >QT字型詳解

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 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設定字型:   
//第一個引數是字型(微軟雅黑),第二個是字型大小,第三個是加粗(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