Qt 設定全域性字型

一杯清酒邀明月發表於2024-05-31

在Qt中設定全域性字型通常涉及兩個步驟:

  • 首先載入所需的字型
  • 然後將其應用為應用程式範圍內的預設字型。

這可以透過在應用程式初始化時設定 QApplication 的字型屬性來實現。

以下是一個示例程式碼,展示瞭如何設定全域性字型:

 1 #include <QApplication>  
 2 #include <QFont>  
 3 #include <QFontDatabase>  
 4   
 5 int main(int argc, char *argv[])  
 6 {  
 7     QApplication app(argc, argv);  
 8   
 9     // 載入字型檔案  
10     // 假設字型檔案位於可執行檔案的同一目錄下,或者已經被新增到了資原始檔中  
11     // 如果是從檔案系統中載入,使用類似 "D:/path/to/your/font.ttf" 的路徑  
12     // 如果是從資原始檔中載入,使用類似 ":/fonts/yourfont.ttf" 的路徑  
13     int fontId = QFontDatabase::addApplicationFont(":/fonts/yourfont.ttf");  
14   
15     // 檢查字型是否成功載入  
16     if (fontId != -1) {  
17         // 獲取新載入的字型的家族名稱列表  
18         QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);  
19   
20         // 假設我們只載入了一個字型,或者只關心第一個字型家族  
21         if (!fontFamilies.isEmpty()) {  
22             QString familyName = fontFamilies.first();  
23   
24             // 建立字型物件並設定屬性  
25             QFont font(familyName);  
26             font.setPointSize(10); // 設定字型大小  
27   
28             // 設定應用程式的全域性字型  
29             app.setFont(font);  
30   
31             // 現在,所有新建立的視窗和控制元件都將預設使用這個字型,  
32             // 除非在建立時明確指定了其他字型。  
33         }  
34     }  
35   
36     // ... 建立和顯示主視窗等  
37   
38     return app.exec();  
39 }

  在這個例子中,我們首先使用 QFontDatabase::addApplicationFont() 方法載入字型檔案。然後,我們檢查字型是否成功載入,並獲取載入的字型的家族名稱。接下來,我們建立一個 QFont 物件,並設定所需的屬性,如字型大小和樣式。最後,我們使用 QApplication::setFont() 方法將這個字型設定為應用程式的全域性字型。

  請注意,這個設定只會影響之後建立的視窗和控制元件。如果在設定全域性字型之前已經建立了視窗或控制元件,你需要單獨為它們設定字型。此外,一些控制元件可能有自己的預設字型設定,這些設定可能會覆蓋全域性字型設定。在這種情況下,你需要在建立這些控制元件時明確指定所需的字型。


相關文章