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
如果不指定字体则中文会显示成方块


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值