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