最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hello world"的样例都跑不起来,现在通过查找资料将一些问题解决掉了,放在这里记录下来,已被后用和分享:
1、QApplication: No such file or directory
(1)首先确定好QT Creator内部的环境变量设置是否正确:
“工具-选项-构建和运行”:找到“QT Versions”,点击“自动检测”下面的版本号,下边会出现一个新的配置栏,点击“桌面的Qt 版本5.5.1 ”后面的“详情”,查看“QT_INSTALL_HEADERS”后面的头文件变量是否正确,也可以到该变量中查找有无QApplication这一头文件,如果没有,建议重新安装QT,因为你从网上下载的单个文件不一定能够现有的编译器识别,最好安装配套的组件。
(2)如果以上信息都确认无误,则检查工程文件中*.pro中是否有“QT += widgets”,若没有,则需要在工程文件*.pro下增加一条:“QT += widgets”。通常问题就可以解决了;
2、:-1: error: cannot find -lGL
这个就很郁闷了,刚刚接触QT,连个hello world都没搞定呢,lGL是个什么鬼?网上一查才知道是个什么运行库,这里感谢CSDN上网友的解决办法:
http://bbs.csdn.net/topics/390845437?list=lz
sudo apt-get install libqt4-dev或者sudo apt-get install libgl1-mesa-dev或者libgl1-mesa-dev或者libglu1-mesa-dev
我把这几个包没有的都装了一遍,最后一个装的时候还把源更新了一遍才装上,这次问题就完美解决了。
3、Circular all <- first dependency dropped
这个问题就比较奇葩了,我很纳闷为什么会有这样的问题:
这个问题其实很容易解决,但解决方式有点让人吐血:出这个问题的肯定是你把工程名命名为了"first",是不是?
查过了才知道,Qt使用了first这个单词作为生成的Makefile文件的内置项,导致make在处理Makefile时产生依赖错误,只要把工程重命名即可解决
(神坑的问题……)
感谢博客园网友“24k纯开源”提供的解决办法:http://www.cnblogs.com/csuftzzk/archive/2013/07/18/3198154.html
4、 [SOLVED] Gtk-Message: Failed to load module "canberra-gtk-module"
这个是gtk库没有安装完整,重新安装即可
sudo apt-get install libcanberra-gtk3-module
sudo apt-get install libcanberra-gtk*
这样就可以解决了
5、对于包含了Q_OBJECT宏的类对象,需要现在本地执行"qmake -project"->"qmake"->"make",才能获得可执行文件,QT Creator中不能直接编译。
6、error: 'tr' was not declared in this scope
tr这个函数是QObject对象中的静态成员函数,因此使用的时候,如果不是用类来写的话,就会报这个错误,只需要在tr函数前加上“QObject::”,如:“QObject::tr("a button")”这样既可;
*一般用类来写程序时都会在定义类成员之前先包含QObject对象,所以用类就不会存在这个问题了
(今后问题肯定还会有,如果再出现任何问题,我都会及时再次更新……)