qt字體設置問題

(一)

1.首先將字體(我選擇windows下的宋體simsun.ttf)copy至qte的lib/font目錄下
2.設置環境變量export QT_QWS_FONTDIR=/mnt/nfs/qte-arm/lib/fonts/ 
3.在函數裏指定字體


eg:測試例程

  1 #include<QtGui/QApplication>
  2 #include<QtGui/QWidget>
  3 #include<QtGui/QLabel>
  4 #include<QtCore/QTextCodec>
  5 #include<QtGui/QPushButton>
  6 #include<QtGui/QVBoxLayout>
  7 #include<QFont>
  8 int main(int argc,char* argv[])
  9 {
 10 QApplication app(argc, argv);
 11 // app.setFont(QFont("simsun"));

 12 
 13 QFont font;
 14 font.setPointSize(26);
 15 font.setFamily(("simsun"));
 16 app.setFont(font);
 17 
 18 QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
 19 QWidget* pWidget = new QWidget;
 20 QLabel label(pWidget);
 21 // pWidget.showMaximized();

 22 pWidget->showMaximized();
 23 label.setText(QObject::tr("北京歡迎您!"));
 24 QPushButton* btn = new QPushButton(QObject::tr("close!"), pWidget);
 25 QVBoxLayout* layout = new QVBoxLayout;
 26 layout->addWidget(&label);
 27 layout->addWidget(btn);
 28 pWidget->setLayout(layout);
 29 QObject::connect(btn,SIGNAL(clicked()), pWidget, SLOT(close()));
 30 pWidget->show();
 31 return app.exec();
 32 }
 33

 

轉自:http://blog.chinaunix.net/space.php?uid=20539088&do=blog&id=115755

 

===============================================================================================================================

(二)

解決mini2440中qte4.5.1字體顯示不正常問題

 

    在移植了qte到mini2440上之後,發現其字體顯示有很大的問題。這是網上說的解決方案,證明能解決問題,摘錄如下:

來源:http://www.cnblogs.com/kenter/archive/2010/07/13/1776461.html

qt4.5.3不能顯示中文字體,無論是qvfb中還是arm系統中,後來在網上查了一些方法
終於弄好了
1,下載文泉驛正黑字體qpf字體庫

http://kenter1643.download.csdn.net/可以找到下載

2,把下載好的字體庫解壓後的qpf文件放入lib/fonts中(qtX86和arm版本以及移植的文件系統中都放入此子體)

(這個地方我照着做了放在lib/fonts中,不可以。我把他放在/usr/local/qte-arm/lib/fonts目錄下就可以了,這與系統路徑設置有關,不深究了)

編譯運行的時候:在qtcreator中在Run Settings——〉Edit run configuration:右側單擊Show Details按鈕,在打開的下拉列表中Arguments:文本框中添加參數“-qws -font wenquanyi”。
或者在終端中運行:例如:./hello-qws -font wenquanyi
這樣就可以顯示中文了
如果不想輸入後面的參數可以把lib/fonts中的其他字體全部刪除,只保留泉驛正黑字體的qpf字體庫。這樣只需要運行./hello -qws 即可 不過這樣以來就用不了其他字體了。
提示:在終端中運行程序時其後加上& 就不會獨佔終端了,可以在終端運行多個程序

如:./hello &

 

===============================================================================================================================

(三)

  qt4以後fonts裏面是沒有配置文件fontdir的,只要在fonts裏放好了字體文件,運行qt時就可以找到了,但是有一個問題需要注意,也是我碰到的一個問題,在移植qt後運行qt程序的時候如果fonts裏放了所有從解壓包裏複製過來的字體文件,會出現中文不顯示的問題,不是亂碼,就是什麼也沒有的空白,可能它在fonts文件夾裏找最佳字體的時候找了個不支持中文的,只要把不用的字體全部刪掉,留下要用的就可以了,比如只留下文泉譯的一個,就能顯示中文了,qvfb上也能顯示中文了。我試過還有個辦法是在fonts文件夾下放simsun.ttc這個字體文件,它就能找到,即使不刪其他字體也可以顯示中文,只是simsun.ttc有點大。以上是在qt-4.3.0上做的實驗。

 

===============================================================================================================================

(四)

首先轉下www.qtcn.org裏面的相關內容:
------------------------------------------------------------------------------------------------------------------------------------------------
我的QtEmbedded程序中的中文字符爲什麼顯示成方塊?
兩個可能的原因:
一是qte的庫未編譯進對中文textcodec的支持, 解決方案:修改qconfig-qpe.h, 去掉CODEC有關的宏, 重新configure和make

二是程序中選用的字體不是中文字體(默認的字體是Helvetica,沒有中文), 需要在程序中指定一箇中文字體, 如qte自帶的unifont(這個字體大家普遍的看法是看上去像殘廢), qt4版本里新加入了文泉驛的unicode字體, 可以在源碼包裏找到,比較漂亮, 推薦。
------------------------------------------------------------------------------------------------------------------------------------------------
接下來談談我是怎麼做的:
(1)configure的時候首先帶-h看下說明,發現默認是full安裝,就沒有CODEC這些問題,那麼顯示成方塊就是沒有中文字體了,我用unifont試了下發現可以了
(2)下載了qtopia-core-opensource-src-4.2.0,把qtopia-core-opensource-src-4.2.0/lib/fonts下面的東西全部copy覆蓋掉qt-embedded-free-3.3.5/lib/fonts下的內容,然後用wenquanyi字體,發現效果挺好的.
(3)我的測試程序如下:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qtextcodec.h>
#include <qfont.h>


int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    app.setDefaultCodec(codec);
    app.setFont(QFont("wenquanyi", 10));
    
    
    QPushButton quit(QObject::tr("讓世界知道我們都是中國人/r/n五千年的風和雨"), 0 );
    
    quit.resize(100, 100);
    QObject::connect(&quit, SIGNAL(clicked()), &a, SLOT(quit()));    
    a.setMainWidget(&quit);
    quit.show();

    return a.exec();
}
 (4)我也看了www.qtcn.org上面的Qtopia下安裝ttf字體的方法
安裝步驟: 
1. 將simhei.ttf拷貝到/usr/local/Trolltech/QtopiaCore-4.1.0/lib/fonts/下。 
2. 修改上述目錄下的fontdir文件。這是一個文本文件,打開後,在文件末尾加入如下一行。 
simhei simhei.ttf FT n 50 500 u 
但是又說要freetype這個font engine的插件,我係統裏面已經有了,而且configure默認的就帶了這個參數,我按照上面的做法試一試,發現字體很難看,沒有wenquanyi的字體好看,鬱悶的是怎麼知道freetype這個插件起作用沒?

 

===============================================================================================================================

(五)   轉自:http://blogt.chinaunix.net/space.php?uid=20648944&do=blog&id=3015494

# ./cloud_1B -qws

Cannot find font definition file /opt/qt-embedded-free-3.3.8/lib/fonts/fontdir - is Qt installed correctly?

複製字體文件到 /opt/qt-embedded-free-3.3.8/lib/fonts/
fontdir
unifont_160_50.qpf 
unifont_160_50_t5.qpf       
unifont_160_50_t15.qpf
unifont.bdf 

# ./cloud_1B -qws -font unifont
unifont 是一個比較小且支持中英文的字體

若想使用其他字體:
把字體文件複製到/opt/qt-embedded-free-3.3.8/lib/fonts/
並在 fontdir 中添加要添加的字體描述(這裏以 simsun.ttf 字體爲例)
simsun simsun.ttf FT n 50 0 su

fontdir 的格式說明
<字體名稱> <字體文件名> <字體渲染類型> <是否斜體> <是否粗體> <尺寸> <字體標誌>  [尺寸列表]
其中,
<字體渲染類型> : 可以爲 TTF,BDF,QPF 三種類型
<是否斜體> : y表示斜體,n表示正常體
<是否粗體> : 50 表示正常體,75表示粗體
<尺寸> : 0,則系統從[尺寸列表]中提取可以轉換的字體尺寸
<字體標誌> : a 使用ACII字符集,u 使用unicode字符集  s 使用鋸齒(anti-aliased)

# ./cloud_1B -qws -font simsun
如果不指定字體則中文會顯示成方塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章