這兩天一直在用Qt實現一個跨平台的軟件。軟件之前在Windows上編寫的,后來放到里Ubuntu 10.10下編譯。程序運行時遇到一個很棘手的問題,界面文本非常模糊。后來在網上查閱了好幾天的資料,經歷了無數次實驗,最終解決了這一問題。下面以一個Demo程序來重現這一問題。
本文中的編譯平台為:Ubuntu 10.10 x86版, g++ 4.4.5, Qt 4.7.3自己編譯的
首先看看我的Demo程序文本模糊時的截圖:
一個軟件界面的文本要是這樣子,根本無法接受。
有人說要通過qtconfig來修改默認字體,可是我修改了好多次,都不成功,還是這樣。
最后找到原因,首先是我把Qt在Linux中默認的字體“AR PL UKai CN”設置死了,如下圖所示:
為什么說設置死了呢?看上圖右下角,“字體族”一行,該行末尾后的小箭頭為紅色,這表示該屬性當前不是默認值,如果是默認值,這個小箭頭應該為灰色顯示。要解決字體模糊的問題,第一步應該將界面上所有設置死的字體族改回默認值,只需要選中要更改字體族的部件,在右側到屬性列表中點擊紅色到小箭頭,使其變灰,這樣就可以設置為默認值了。
第二步,在終端中輸入“qtconfig”(不含引號),打開qt配置程序,如下圖所示:
在右側第二個選項卡“字體”中我們可以看到,字體族當前為“ AR PL UKai CN ”,在下方的“樣例文本”中我們也可以看到,這幾個字同樣非常模糊,我們點擊字體族右邊到上下箭頭,彈出字體族選擇列表,如下圖所示:
因為我們的目標不僅要顯示英文,還要顯示中文,因此我們選擇“Song Ti”(宋體)這一項,再修改點大小為11,此時“樣例文本”就清晰多了。如下圖所示:
設置完成之后,點擊“文件”菜單,選擇“保存”來保存當前配置,如下圖所示:
此時應該能立即看到更改后的效果,如下圖所示:
Qt配置程序界面的字體已經變得清晰多了,那么我們的程序是不是也變化了呢?來看一下,如下圖所示:
從上圖我們可以看到,自己寫的程序界面中字體也非常清晰了,為了驗證中文兼容性,我還在Text Edit部件中輸入了若干漢字,同樣沒有問題,字體依然清晰。整個過程中,除了第一步修改默認字體后重新編譯了本程序,在對Qt配置進行修改后並沒有也沒必要重新編譯程序。程序界面的字體就發生了變化。
值得注意的是,qtconfig工具只在Linux下存在,Mac版的Qt庫中是否有這個工具我還沒有驗證,但Windows中肯定沒有。另外,在qtconfig工具中我設置的字體族為“Song Ti”,該字體在“點大小”小於11號時就又不清晰了。需要更小字體的朋友可以設置字體族為“Wenquanyi Bitmap Song”(基於位圖的文泉驛宋體),該字體設置為小字號時仍可顯示得很清晰。
http://blog.csdn.net/chaijunkun/article/details/6448295