qt学习1

QT第一天

 第一天,我花了二十分钟上百度百了几个PPT下来,主要包括:
《QT编程简介.ppt》,
《QT入门教程.pdf》,
《Linux下QT编程入门.pdf》
《C++ + GUI + QT4编程(第二版)》。
先从QT编程简介看起,前面QT的特性什么的不说了,重点是编译一个QT程序,需要
qmake  -project
 生成Qt项目文件(*.pro)
qmake
  用.pro文件产生平台相关的Makefile文件
  对包含Q_OBJECT宏的头文件生成调用moc的make规则
make
  为当前平台编译应用程序
 
第一步 QT安装
我首先要确定我的电脑上是否安装有QT,执行qmake --version,输出结果为:
Qmake version: 1.07a (Qt 3.3.6)
Qmake is free software from Trolltech AS.
 看来系统里是安装了的,并且版本是3.3.6,这样好像省事一点,不用安装了。只是版本不是QT4。
那么在本次过程中先暂不安装了,后面会再找时间把QT4安装上来。

第二步 跑一个最简单的程序
 我一直认为,学习要能以最快的速度,达到我们第一个预期的可见的效果,这样更能激发学习的激情与乐趣,如果要让一个人花上一个星期才能开始写一个简单的程序,那这个人可能在第三天的时候就放弃了,因为感觉太难。而对我来讲,因为QT都装好了,那我要在三十分钟内搞定第一个程序。
那接下一,我把PPT里的第一个代码例子复制了出来,新建了一个目录,将代码存成了hello.cpp文件,代码如下:
 #include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();
}
 执行“qmake -project”指令,会在当前目录下生成一个文件,我这里生成的名字叫label.pro,这个文件名字好像是根据当前的目录的名字来生成的。
然后执行qmake,在当前目录下生成了Makefile文件
再执行最后一步操作,make, 事实证明,学习的道路是崎岖的,不是一帆风顺的,此时提示出了一堆错误:
hello.cpp:1:24: 错误:QApplication:没有那个文件或目录
hello.cpp:2:18: 错误:QLabel:没有那个文件或目录
hello.cpp:6: 错误:程序中有游离的 ‘\302’
hello.cpp:6: 错误:程序中有游离的 ‘\240’
hello.cpp:6: 错误:程序中有游离的 ‘\302’
hello.cpp:6: 错误:程序中有游离的 ‘\240’
hello.cpp:6: 错误:程序中有游离的 ‘\302’
hello.cpp:6: 错误:程序中有游离的 ‘\240’
hello.cpp:8: 错误:程序中有游离的 ‘\302’
hello.cpp:8: 错误:程序中有游离的 ‘\240’
hello.cpp:8: 错误:程序中有游离的 ‘\302’
hello.cpp:8: 错误:程序中有游离的 ‘\240’
hello.cpp:9: 错误:程序中有游离的 ‘\302’
hello.cpp:9: 错误:程序中有游离的 ‘\240’
hello.cpp:9: 错误:程序中有游离的 ‘\302’
hello.cpp:9: 错误:程序中有游离的 ‘\240’
hello.cpp:9: 错误:程序中有游离的 ‘\302’
hello.cpp:9: 错误:程序中有游离的 ‘\240’
hello.cpp: In function ‘int main(int, char**)’:
hello.cpp:6: 错误:‘QApplication’ 在此作用域中尚未声明
hello.cpp:6: 错误:expected `;' before ‘app’
hello.cpp:8: 错误:‘QLabel’ 在此作用域中尚未
我们的代码好像只有10行不到,错误这么多,其中”程序中有游离的“这个错误应该是拷贝的时候特殊字符引起的,把代码重新敲一遍应该就没问题了,剩下仍然有好几个错误,按经验来讲,通常我们应该先看第一个错误,后面的一大堆错误可能都是由第一个错误引起的。 
我到/usr目录下执行了一下“find ./  -name QApplication” 指令,发现没找到这个文件。
于是我又执行了一次“grep QApplication ./* -r” 查找这个类,耐心的等了几分钟,发现找到了这个类的定义,在“/usr/lib/qt-3.3/include/qapplication.h”文件中,那可能是示例代码里头文件名不正确。我对代码前两行进行了修改:
#include <qapplication.h>
#include <qlabel.h>

然后我们再对代码进行编译,发现还有错误,提示如下:
hello.cpp:7: 错误:对 ‘QLabel::QLabel(const char [10])’ 的调用没有匹配的函数
/usr/lib/qt-3.3/include/qlabel.h:163: 附注:备选为: QLabel::QLabel(const QLabel&)
/usr/lib/qt-3.3/include/qlabel.h:66: 附注:         QLabel::QLabel(QWidget*, const QString&, QWidget*, const char*, uint)
/usr/lib/qt-3.3/include/qlabel.h:64: 附注:         QLabel::QLabel(const QString&, QWidget*, const char*, uint)
/usr/lib/qt-3.3/include/qlabel.h:62: 附注:         
QLabel::QLabel(QWidget*, const char*, u
 看样子应该是类的构造函数参数不匹配造成的,找了一个其中最接近的构造函数,把构造Lable的那行改为如下:
 QLabel label("Hello Qt!",  NULL);
 再次make,终于成功。
执行./label,好像没有什么事情发生,怪了,仔细看了一下桌面,在左上角找到了不显眼的地方找到了我们的成果物:
 

结论: 
开头虽然不是很顺便,但是没有超出我们的预期,QT3.3与QT4可能有区别,PPT中的不一定有误,所以下一步需要将QT3.3换成QT4,再来进行验证。


你可能感兴趣的:(qt)