Essential Qt 第一章 Hello Qt

      很多编程都是从HelloWorld开始第一个程序的,我们就从Hello Qt开始
#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();
}


         这段代码编译后应该是这个样子的
       
 
        第1-2行代码包含了两个头文件,QLabel和QApplication,关于QLabel就是我们看到的标签,在Qt中,绝大多数窗体都是一个类,Qt的命名习惯是字母Q+窗体种类名称,而窗体的各种功能大多数通过类的成员函数来实现。这个程序中我们需要用到QLabel和QApplication这两个类,所以用#include来包含,至于QApplication类的作用下述。
        第3行是C++的标准主函数
        第5行 生成了一个QApplication的对象app,这个程序中有关这个类的代码一共有3行,先暂时跳过,我们最后再讨论这个类
        第6-7行 生成了一个QLabel的对象label,Qt窗体在创建时默认是隐藏的,所以第7行调用QLabel的成员函数show()来显示这个窗体,这样你就可以看见他,此时你也许猜到了,他还有个成员函数hide(),作用是隐藏窗体,有兴趣的朋友可以在第7行下面加上一句label->hide()来看看效果
第8行 是这个程序第三行的有关QApplication的代码,在解释这个类作用前,可能有人会问,这个程序代码执行完了,为什么窗体还在这里?事实上这个程序代码并没有执行完成,对象(第5行生成)app的成员函数exec()是个无限循环,这保证了这个程序代码一直在执行,也就是这个标签为什么一直在这里的原因,当然直到你手动关闭掉这个标签,无限循环结束。那么这个类的作用就比较清晰了,使用他有3个步骤
1包含QApplication头文件
2生成一个对象
3调用成员函数exec()使得窗体一直存在
         关于这个类的,在Essential Qt所有的例子中都只会用到这3行代码,虽然死记硬背不提倡,但对于这样公式化的东西背一下未尝不是好版本,至于这个QApplication类的作用细节已经超出了范畴,用建议兴趣的同学看完整个Essential Qt后再来探索

       好了,通过上面的解释,我们可以把这段Hello Qt的代码翻译成“伪代码”
包含QApplication头文件
包含QLabel(标签)头文件 
int main(int argc , char** argv)
{
  生成一个QApplication对象
  生成一个QLabel(标签)对象
  调用QLabel的show()函数使得标签可见
  调用QApplication对象的exec()函数使得窗体一直结束(程序处于一直运行)
}

关于内存泄漏
         很多对内存敏感的朋友应该看出来这个程序存在的问题了,程序中使用new创建了一个对象(QLabel对象),但没有对应的delete,关于这一点,在书本上(C++GUI Qt4编程)中的解释是“这样一点内存泄漏无关大局”,事实上,对于很多C/C++程序员来说,任何内存泄漏都是无法容忍的,有人会问,Qt是否不考虑内存泄漏的问题?
        答案是否定的,Qt自带了一套非常不错的内存管理机制,这使得Qt对于内存的管理相对于一般的C++内存管理有很大不同,Qt更加的智能,更加的自动化,关于Qt如何管理内存,我们将在稍后的篇章里详细讨论这个问题,因为讨论Qt内存的问题需要一些稍后介绍的内容,出于排版上的考虑,放在了稍后几章,在正式讨论这个问题之前,先让我们“放肆“一下,暂时忽略内存泄漏的问题。当然,我这里想你郑重的承诺,Essential Qt里的例子绝对不会导致你电脑宕机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值