jeffreylee的个人主页

http://www.qtcn.org/bbs/u/139371  [收藏] [复制]

jeffreylee

宁静致远

  • 20

    关注

  • 27

    粉丝

  • 117

    访客

  • 等级:侠客
  • 身份:论坛版主
  • 总积分:158
  • 男,1971-01-21

最后登录:2023-07-06

更多资料

日志

Qt4工程向Qt5迁移那些事(汇总,持续更新)

2013-03-18 11:18
之一:批量转换文件编码到utf-8
Qt5要求,源文件编码格式统一使用utf-8,使用Qt5.0.1中的Qt Creator 2.7,打开Qt4.8的工程,查看源文件时提示,无法识别源文件编码格式,转换utf-8编码失败。源文件中的汉字显示为乱码。
我使用的操作系统是Ubuntu12.04
1.安装 文件转码工具 enca
$sudo apt-get install enca    
2.查看当前文件编码    
enca -L zh_CN main.cpp  
Simplified Chinese National Standard; GB2312     Surrounded by/intermixed with non-text data    
3.转换    命令格式如下    
$enca -L 当前语言 -x 目标编码 文件名    
例如要把当前目录下的所有文件都转成utf-8    
enca -L zh_CN -x utf-8 *    
检查文件的编码 enca -L zh_CN file     
将文件编码转换为"UTF-8"编码  enca -L zh_CN -x UTF-8 file
如果不想覆盖原文件可以这样         enca -L zh_CN -x UTF-8 < file1 > file2
之二:解决编译错误 /usr/bin/ld: cannot find -lGL
怀疑是我自己手工安装gcc4.7造成的吧,Ubuntu12.04默认gcc版本是4.6
sudo apt-get install libgl1-mesa-dev
安装完毕问题解决
之三:QString::toAscii()
QString::toAscii()不在被Qt5支持,因为与toLatin1()功能完全相同,依次迁移到Qt5,必须把toAscii()全部替换为:toLantin1()
之四:QSystemTrayIcon没有在Ubuntu的Unity桌面正确位置显示
我的程序运行后,托盘图标显示到左上角了,原来是这样
由于在Unity中,Ubuntu对系统托盘采取了白名单机制,只有在白名单内的程序才能在系统托盘处显示图标,这显然不符合我们的要求。因为我们还需要开启一些中国特色的软件,如WINE、AIR程序等。
1.所以需要解除这一设置:
如果你想所有的程序都可以显示,则在终端运行下面命令:
gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"
若你想自定义程序的话,运行下面的命令(YOUR_APPLICATION是程序名):
gsettings set com.canonical.Unity.Panel systray-whitelist
"['JavaEmbeddedFrame', 'Mumble', 'Wine', 'YOUR_APPLICATION']"
还原到系统默认状态:
gsettings set com.canonical.Unity.Panel systray-whitelist  "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray']"
显示查看当前设置信息
gsettings get com.canonical.Unity.Panel systray-whitelist

2.当然你也可以安装一些工具来进行设置:
sudo apt-get install dconf-tools
然后运行:
dconf-editor
在desktop>unity>panel中把systray-whitelist的值改为['all']即可。
虽然经过这样设置后,进入Ubuntu的Unity的系统托盘了,但是我看见有些程序也没这样设置,进能进入系统托盘,比如GoldenDict程序
2013年7月4日注:Qt5.1.0 release发布,托盘图标使用这个方法,显示位置正确,但无法显示图标和菜单,只好把这个配置取消,让系统托盘图标临时显示在左边吧。
之五:Qt5中如何播放mp3
phonon多媒体模块以及在Qt5中不存在,使用multimedia模块代替,因此在pro文件中把QT+=phonon 修改为 QT+=multimedia
播放代码如下:
QMediaPlayer *playernew QMediaPlayer;
player->setMedia(QUrl(mp3));//mp3是类似http://www.qtcn.org/good.mp3 URL链接
player->play();
之六:Qt程序的全局字体
在linux下,设计出来的Qt程序显示汉字,效果很差,默认字体字形不好看不说,还颜色不一致,有的浅灰,有的黑色,默认字体渲染的很差,我的系统是Ubuntu 12.04
在main函数中设置全局字体为文泉驿字体
  1. #ifdef Q_OS_LINUX
        QFont font;
        font.setFamily("WenQuanYi Micro Hei");
        qApp->setFont(font);
    #endif

之七:脱离编程环境,制作安装包
把编译好的release版本的exe文件拷贝进一个空目录,执行,提示缺dll就拷贝过来,一直运行起来,把整个目录拷贝到无编译环境的机器,出错如下:
This application has requested the Runtime to terminate it in an unusual way
不能运行,拷贝\Qt5.0.1\5.0.1\mingw47_32\plugins,进执行目录,问题解决,需要哪个plugins,就拷贝哪个



分类:默认分类|回复:0|浏览:2747|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-18 02:01
©2005-2016 QTCN开发网 版权所有 Gzip disabled