【C1】基本学习【S1】Hello,Qt!

来源:互联网 发布:js中kjur undefine 编辑:程序博客网 时间:2024/05/21 08:01

    第一章,Hello Qt
    让我们以一个非常简单的Qt程序作为开始。我们首先讲逐行的来学习,然后来看看如何编译和运行这个程序。

Code:
  1. #include <QApplication>   
  2. #include <QLabel>   
  3. int main(int argc, char *argv[])   
  4. {   
  5.     QApplication app(argc, argv);   
  6.     QLabel *label = new QLabel("Hello Qt!");   
  7.     label->show();   
  8.     return app.exec();   
  9. }  

    第1,2行包含了QApplication和QLabel这两个类的定义。对于每个Qt类,都有一个与类名相同且首字母大写的头文件,头文件包含了类的定义。
    第5行创建了一个QApplication对象来管理应用程序的资源。它的构造函数需要argc和argv这两个参数,因为Qt本身支持一些命令行参数。
    第6行创建了一个显示"Hello Qt!"的QLabel类的Widget。在Qt和Unix术语,一个widget是一个在用户界面中可视的元素。这个术语起源于"window gadget"并且是Windows中的术语"control"和"container"的同义词。按钮,菜单,滚动条,和框架都是widget的例子。widget可以包含其它的widget;例如,一个应用程序窗口通常是一个包含了一个QMenuBar,一些QToolBar,一个QStatusBar,和一些其它的widget。大多数应用程序使用QMainWindow或者QDialog作为应用程序窗口,但是Qt非常有弹性,可以让任何widget作为窗口。在这个例子中,QLabel widget是应用程序窗口。 
    第7行使这个label可视。widget通常创建时是隐藏的,所以为了避免闪烁,我们在显示它们前就diy它们。
    第8行把控制权交给了Qt掌控的那个application对象。从这开始,这个程序进入事件循环。这是一种备用模式,程序等待用户的动作,例如按下鼠标和键盘按下。用户的动作会产生各种程序能响应的事件(也称作消息),通常执行一个或更多的函数。例如,当用户点击一个widget,一个"mouse press"和一个"mouse release"事件就产生了。在这方面,GUI应用程序与传统的批处理程序非常不同,典型的批处理程序处理输入产生输出,并且中止与否不受人的干预。
    简单而言,我们不必麻烦的在main函数的末尾delete掉QLabel对象。在这么小的程序下这小小的内存泄露是无害的,当程序中止时操作系统会回收内存。
    现在该是在你自己的机器中实践的时候了。首先,你需要安装Qt的SDK了。(安装和编译的过程翻译就略了,以后都这样。我们当然可以只下载好Qt库,然后在VC6,VS STUDIO等IDE中引用Qt库,但当然最后还是使用Qt自己的IDE)。

    在我们继续进入到下一个例子之前,让我们找点乐子,把下面这行代码

Code:
  1. QLabel *label = new QLabel("Hello Qt!");   
  2.   

    替换为

Code:
  1. QLabel *label = new QLabel("<h2><i>Hello</i> "  
  2.                            "<font color=red>Qt!</font></h2>");   
  3.   

    然后rebuild整个应用程序。正如这个例子描述的,使用一些简单的HTML可以使Qt应用程序用户界面鲜明起来。

原创粉丝点击