现在的位置: 首页 > 综合 > 正文

关于《精通QT4编程》第一个例子碰到的问题的解答

2013年04月08日 ⁄ 综合 ⁄ 共 2634字 ⁄ 字号 评论关闭

鄙人不才,爱折腾,因此浪费了不少时间。现在把编译《精通Qt4编程》过程中遇到的种种问题记录下来,希望给后来者带来帮助。
    为了在ubuntu下开发Qt4程序,首先需要安装Qt4的编程环境,这在一般意义上包括Qt库,Qt designer和Qt assistant等等,如果图简单,可以直接参考http://blog.sina.com.cn/s/blog_5335d4340100dn42.html一文。
    有于上述方法所装的Qt没有IDE,虽然也习惯了vim+makefile的生活,但还是对Linux下的IDE充满了期待,网上的资料表明:QDevelop、KDvelop、Eclipse和QtCreator都是支持Qt的IDE。在这四者之中,最吸引我的是最后一个QtCreator。当然,我并没有一开始就装它,而是通过apt-get install的方式安装了QDevelop,但是装完之后发现一个致命的问题,只要在新建的.cpp文件中输入超过3个字母,整个IDE就自动关闭了,每一次都是这样。显然是无法继续coding的。上网查了查,也上Q群中吼了,有人遇到同样问题,但没有提供解决方案。只好作罢。
     为了能够用上官方的QtCreator,我浏览了qtsoftware的网站,Nokia入主Qt后果然动作不小,原来有点让人迷惑的概念都得到了重新整理,更让人惊喜的是原本Qt较为复杂且容易出错的“配置、编译、安装”三部曲也可以用一个.bin文件代替。为了能够体验这种先进的东东,我先升级了内核(因为最新的QtCreator1.1.0在2.6.24内核下会有问题),具体升级过程参考 http://blog.sina.com.cn/s/blog_5335d4340100doll.html。然后下载了一个200多M的.bin文件后直接执行,整个过程就跟在Windows下执行setup.exe一样轻松简单。当然这对初学者而言是“温柔的陷阱”,因为你在一键搞定的同时也失去了了解从源码安装的整个原理。
     安装完这个先进的SDK并简单浏览了QtCreator的介绍之后感觉这个IDE真的是非常有前途的,它将以前零散的designer和assistant全部集成起来了,不过遗憾的是不知何故,我的QtCreator居然没有装上帮助文档,这下白搭,没文档几乎无法进行开发阿。
      爬出了温柔的陷阱,我开始从一个极端走向另一个极端:相信一切简单的都是危险的,不可靠的。于是又找出了之前下载的qt4源码包,输入tar  zxvf; ./configure;make...重复以前那个痛快漫长的过程。没有写make install是因为我还没到达那一步就被莫名其妙的错误阻挡了去路。一来是因为新内核2.6.29有很多问题:声卡驱动不灵,长时间不用就黑屏且无法恢复;二来是因为出现的错误莫名其妙,无从寻找答案,而且每次都不一样;三来编译过程极耗资源,动不动导致死机。
      万万想到的是兜了一圈回到原地,重新用apt-get装上了qt4.3,又用它装了Kdevelop。在命令行方式下编译helloworld成功,然后根据《精通QT4编程》在KDevelop中做尝试,又发现了问题。
     我采取的步骤如下:
1.打开kdevelp,选择工程|新建工程|选择“C++|QMake project|Basic Qt4 Application”,选择存放位置~/qt,输入程序名称hello;
2.设置工程选项中,设置qt4的qmake和Qt设计器的绝对路径:/usr/bin/qmake和/usr/bin/designer
3.略过版本控制系统和“.h文件的模板”和".cpp的文件模板"选项,点击完成,kdevelop会自动生成一个标准的C++主程序,再次编辑修改上面的hello代码,我是直接将书上的代码拷进去覆盖原来的。
4.然后编辑运行
提示N多错误,大概如下:cd '/home/szq/qt/he' && LC_MESSAGES="C" LC_CTYPE="C" gmake -k
cd src/ && /usr/lib/qt4/bin/qmake src.pro -unix -o Makefile
cd src/ && gmake -f Makefile
compiling main.cpp (g++)'
collect2: ld returned 1 exit status
gmake[1]: *** [../bin/he] Error 1
gmake[1]: Target `first' not remade because of errors.
gmake: *** [sub-src-make_default] Error 2
gmake: Target `first' not remade because of errors.
*** Exited with status: 2 ***
    上网查了很多,最后找到了问题应该是因为lib的问题,也就是说我的有关选项没有设置正确。首先检查一下你的工程是不是指定了使用了QT4而非QT3,这是极为可能的,我的/usr/bin中就有qmake和qmake-qt4两项,在Project->Project Options中:

    然后点开右侧的QMake Manager,在src目录上点右键,选择Subproject Settings,点开Configuration标签:
   

    选择需要包含的GUI库就可以了

      中文乱码问题:接下来进行编译,执行,发现应用程序中的中文显示出来是乱码。又上网查了下,找到如下解决办法:
方法一:
将这行代码:
label.setText(QObject::tr("同一个世界,同一个梦想!"));
修改为:
label.setText(QString::fromUtf8("同一个世界,同一个梦想!"));
结果显示就对了!
方法二:
将这行代码:
 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
修改为:
 QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
结果就对了!
这两种方法,都是使用了utf8字符集!看来uft8还是比gb要强大阿。修改前后的界面如下:(奇怪的是命令行方式编译怎么可以正常显示?)
                                  

抱歉!评论已关闭.