这两天一直在用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

Qt在Linux环境下应用程序字体模糊的解决方法(先改成使用默认字体,然后使用qtconfig配置)的更多相关文章

  1. ***在Linux环境下mysql的root密码忘记解决方法(三种)-推荐第三种

    MySQL密码的恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态 ...

  2. 在Linux环境下mysql的root密码忘记解决方法

    MySQL密码的恢复方法之一 .首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下 ...

  3. Linux环境下mysql的root密码忘记解决方法(2种)

    方法一: 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以 ...

  4. QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)

    QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...

  5. windows及linux环境下永久修改pip镜像源的方法

    一.在windows环境下修改pip镜像源的方法(以python3.5为例) (1):在windows文件管理器中,输入 %APPDATA% (2):会定位到一个新的目录下,在该目录下新建pip文件夹 ...

  6. Linux环境下RPM包相互依赖的解决办法

    Linux环境下安装Oracle11gR2提示缺少"Package: elfutils-libelf-devel-0.125    FAILED"包,按照提示安装该包时又提示缺少依 ...

  7. window 和 linux 环境下杀死tomcat进程——也可以解决其他端口被占用的问题

    1.应用场景 在Windows或者linux操作系统中,我们在启动一个tomcat服务器时,经常会发现8080端口已经被占用的错误,而我们又不知道如何停止这个tomcat服务器. 2.window环境 ...

  8. Linux环境下MySql安装和常见问题的解决

    MySql安装 首先当然是要连接上linux服务器咯,然后就是下面的命令甩过去,梭哈,一通运行就是啦   梭哈 下载: sudo wget http://dev.mysql.com/get/mysql ...

  9. Linux环境下Redis安装和常见问题的解决

    Redis是一款非常非常非常好用的缓存数据库,在保存需要定期更新的Token值,或者在保证高并发安全可靠性的场景下,基本上说是必用了. 安装过好多次Redis了,也用过阿里云Redis数据库,但是每次 ...

随机推荐

  1. JS学习笔记(三)函数

    js中的方法名一般都是首字母小写,其余单词首字母大写的规范. 声明 function 函数名(参数列表) { // 函数体 return 返回值; } 调用 函数名(); (js中花括号喜欢用这种方式 ...

  2. java获取当前路径的几种方法

    1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//use ...

  3. oracle数据库获取指定表的列的相关信息

    1.很多时候我们需要从数据库中获取指定表的所有列的相关属性,如 name,commens,datatype,datalength,pk等.下面就是制定的语句. select c.TABLE_NAME ...

  4. Lc.exe已退出 代码为-1问题解决方法

    对于用vs作为开发工具的同学来说,可能常常会碰到“Lc.exe已退出 代码为-1”的问题,造成这个结果的一般是因为加入了第三方的插件程序造成的,今天一一讲解如何解决. 工具/原料 vs各版本开发工具 ...

  5. JavaScript 网页链接调用Android程序

    如何让网页链接实现启动Android的应用,网上有说重写WebView相关的shouldOverrideUrlLoading方法,但是这种理论上能实现,因为你的网页不是仅仅被你自己的webview来浏 ...

  6. html+css基础

    完整的HTML结构 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  7. wecenter—开启CURL扩展,让服务器支持PHP curl函数(远程采集)

    curl().file_get_contents().snoopy.class.php这三个远程页面抓取或采集中用到的工具, 默迹还是侵向于用snoopy.class.php,因为他效率比较高且不需要 ...

  8. hdu 4033 Regular Polygon 计算几何 二分+余弦定理

    题目链接 给一个n个顶点的正多边形, 给出多边形内部一个点到n个顶点的距离, 让你求出这个多边形的边长. 二分边长, 然后用余弦定理求出给出的相邻的两个边之间的夹角, 看所有的加起来是不是2Pi. # ...

  9. android-数据持久化

    动态文件 String FILE_NAME = "tempfile.tmp"; try { //读 FileInputStream fis = openFileInput(FILE ...

  10. ComboBox控件绑定数据源

    最近在研究机房收费系统的组合查询的方法时,看到了ComboBox控件可以进行数据绑定,我觉得这个功能真的很不错,可以给我省去很多的麻烦. 下面是我组合查询窗体界面 一.数据转换方法 现在我们开看一下我 ...