看一遍就能玩转QT字体类(2)-QFontDatabase
目錄
1.QFontDatabase概述
2.獲取系統所有字體族信息
3.給應用程序添加可使用的字體
4.卸載添加的字體
5.判斷指定字體是否具有某種屬性或特征
6.獲取支持中文抒寫系統的字體
7.其它常用API
1.QFontDatabase概述
QFontDatabase類提供了關于底層窗口系統中可用字體的信息。
這個類最常見的用途是查詢數據庫中每個字體族families()的列表和pointSizes()和styles()。pointSizes()的另一個替代方法是smoothSizes(),它返回指定字體和風格的sizes。
如果字體族可以從兩個或更多的制造商,制造商名稱包括在字體族名稱中;例如:“Helvetica [Adobe]”和“Helvetica [Cronyx]”。當你指定一個字體族,你可以使用舊的連接字符“foundry-family”格式或括起來的“family [foundry]”格式;例如:“Cronyx-Helvetica”或“Helvetica [Cronyx]”。如果字體族有制造商,它總是使用括起來的格式返回,就像families()返回的值一樣。
font()函數返回給定字體族、樣式和點大小的QFont。
字體族和樣式的組合,可以被檢測它是斜體還是粗體,并檢索它的粗細。類似地,我們可以調用isBitmapScalable(), isSmoothlyScalable(), isScalable()和isFixedPitch()。
使用styleString()獲取樣式的文本版本。
QFontDatabase類也支持一些靜態函數,例如standardSizes()。您可以使用writingSystemName()檢索書寫系統的描述,并使用writingSystemSample()檢索書寫系統中的字符樣本。
2.獲取系統所有字體族信息
下面這個示例演示了如何獲取字體族列表、每個字體族的樣式列表以及每個字體族和樣式組合可用的點大小。?
QFontDatabase database; foreach (const QString &strFamily, database.families()) {qDebug()<<strFamily.toStdString().c_str();foreach (const QString &strStyle, database.styles(strFamily)) {QString strSizes;foreach (int points, database.smoothSizes(strFamily, strStyle))strSizes += QString::number(points) + " ";qDebug()<<"\t"<<strStyle.toStdString().c_str()<<"\t"<<strSizes.toStdString().c_str();} }
由于系統字體族太多,這里只展示一下部分輸出結果:
Arial
?? ? Normal ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
Roman
?? ? Normal ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
宋體
?? ? Normal ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
微軟雅黑
?? ? Normal ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?? ? Bold Italic ?? ? 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72?
?
3.給應用程序添加可使用的字體
[static] int QFontDatabase::addApplicationFont(const QString &fileName)
從fileName指定的文件中加載字體,并使其對應用程序可用。返回一個ID,可以用removeApplicationFont()再次刪除字體,或者檢索字體中包含的姓氏列表。
如果字體無法加載,則函數返回-1。
[static] int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)
從fontData指定的二進制數據中加載字體,并使其對應用程序可用。返回一個ID,可以用removeApplicationFont()再次刪除字體,或者檢索字體中包含的姓氏列表。
如果字體無法加載,則函數返回-1。
[static] QStringList QFontDatabase::applicationFontFamilies(int id)
返回由id標識的給定應用程序字體的字體族列表。
4.卸載添加的字體
[static] bool QFontDatabase::removeAllApplicationFonts()
刪除之前使用addApplicationFont()和addApplicationFontFromData()添加的所有應用程序本地字體。
如果卸載字體成功,則返回true;否則返回false。
[static] bool QFontDatabase::removeApplicationFont(int id)
刪除先前加載的以id標識的應用程序字體。如果成功卸載字體,則返回true;否則返回false。
5.判斷指定字體是否具有某種屬性或特征
bool QFontDatabase::bold(const QString &family, const QString &style) const
如果具有名為family和且樣式為style的字體是粗體,則返回true;否則返回false。
bool QFontDatabase::italic(const QString &family, const QString &style) const
如果具有名為family和且樣式為style的字體是斜體,則返回true;否則返回false。
6.獲取支持中文抒寫系統的字體
QStringList QFontDatabase::families(WritingSystem writingSystem = Any) const
返回支持writingSystem的可用字體族的排序列表。
如果一個家族存在于幾個鑄造廠中,該字體的返回名稱為“family [foundry]”。例如:“Times [Adobe]”,“Times [Cronyx]”,“Palatino”。
執行結果:
"Fixedsys"
"Malgun Gothic Semilight"
"Microsoft YaHei UI"
"Microsoft YaHei UI Light"
"SimSun-ExtB"
"System"
"Terminal"
"仿宋"
"華文中宋"
"華文仿宋"
"華文宋體"
"華文彩云"
"華文新魏"
"華文楷體"
"華文琥珀"
"華文細黑"
"華文行楷"
"華文隸書"
"宋體"
"幼圓"
"微軟雅黑"
"微軟雅黑 Light"
"微軟雅黑 Light"
"新宋體"
"方正蘭亭超細黑簡體"
"方正姚體"
"方正粗黑宋簡體"
"方正舒體"
"楷體"
"等線"
"等線 Light"
"等線 Light"
"隸書"
"黑體"
7.其它常用API
QString QFontDatabase::styleString(const QFont &font)
返回描述字體樣式的字符串。例如"Bold Italic", "Bold", "Italic" or "Normal"。可以返回空字符串。
QString QFontDatabase::styleString(const QFontInfo &fontInfo)
返回一個描述fontInfo樣式的字符串。例如"Bold Italic", "Bold", "Italic" or "Normal"。可以返回空字符串。
QStringList QFontDatabase::styles(const QString &family) const
返回字體族可用樣式的列表。一些例子樣式:"Light", "Light Italic", "Bold", "Oblique", "Demi"。列表可以是空的。
[static] QFont QFontDatabase::systemFont(SystemFont type)
為與系統外觀進行適當集成,返回給定類型大小寫的最適當字體。
[static] QString QFontDatabase::writingSystemName(WritingSystem writingSystem)
返回writingSystem的名稱(例如在對話框中顯示給用戶)。
[static] QString QFontDatabase::writingSystemSample(WritingSystem writingSystem)
從writingSystem返回一個帶有示例字符的字符串。
QList<WritingSystem> QFontDatabase::writingSystems() const
返回可用書寫系統的排序列表。這是根據系統上安裝的所有字體的信息生成的列表。
QList<WritingSystem> QFontDatabase::writingSystems(const QString &family) const
返回給定字體族支持的書寫系統的排序列表。?
?
總結
以上是生活随笔為你收集整理的看一遍就能玩转QT字体类(2)-QFontDatabase的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WorkNC导光条编程加工
- 下一篇: Eclipse中导入项目后页面报错org