日志
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函数中设置全局字体为文泉驿字体
之七:脱离编程环境,制作安装包 把编译好的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,就拷贝哪个 |