日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

看一遍就能玩转QT字体类(2)-QFontDatabase

發布時間:2024/1/1 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看一遍就能玩转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”。

QFontDatabase database;QStringList strList = database.families(QFontDatabase::SimplifiedChinese);for each (QString var in strList){qDebug() << var;}

執行結果:

"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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。