这几天开始学QT,装了QT4 Designer,据说Eclipse也可以作为QT的IDE,于是配置了在Eclipse下的QT开发环境(实在受不了QT Designer打开的N多个窗口)。
然后在网上找了一篇《用Eclipse开发QT4的C++程序 》http://www.cnitblog.com/yunshichen/archive/2009/08/08/60595.html,准备小试一下,结果相当失望,如此简单的例子尽然没成功。
问题:创建QT Gui Project时,Eclipse自动创建了一个空白的Form,并且自动编译生成了可执行文件。之后按照上面教程的步骤添加了几个控件,再Build All,居然出错:
Description Resource Path Location Type
错误:‘Ui’ 未声明 helloworld.h /HelloWorld line 16 C/C++ Problem
Description Resource Path Location Type
错误:expected ‘;’ before ‘ui’ helloworld.h /HelloWorld line 16 C/C++ Problem
Description Resource Path Location Type
错误:ISO C++ 不允许声明无类型的 ‘HelloWorldClass’ helloworld.h /HelloWorld line 16 C/C++ Problem
经几番摸索 ,发现“ui_helloworld.h”文件尽然是空白 的!再次摸索 ,得知该文件是通过helloworld.ui文件生成的,用的命令是:
uic helloworl.ui -o ui_helloworld.h
于是在终端中手动输入:以上命令,得到以下错误信息:
uic: File generated with too old version of Qt Designer
File 'helloworld.ui' is not valid
无奈之下,用QT4 Designer生成了helloworld.ui文件,再用uic转换,没问题! 于是把Eclipse生成的helloworld.ui和QT4 Designer生成的文件相比较,发现,Eclipse生成的文件多了如下一行:
<?xml version="1.0" encoding="UTF-8"?>
观察得知,刚创建工程时生成的helloworld.ui文件没有这一行,每次进行“添加控件”,“修改属性”等操作之后就会多出这么一行。于是删除之,再Build All,没问题了!添加控件也可以显示了。问题虽然解决 ,但每次编译之前都需要去删除一下.ui文件的头一行,也挺麻烦。。如果.ui文件有很多岂不是很烦人。可能是QT4版本的问题 ,升级一下试试,bless me!
当把QT升级到4.6版本时(参见 Eclipse+QT4.6(Linux) ),问题解决 ,不用手动”删除一下.ui文件的头一行"