鱼C论坛

 找回密码
 立即注册

小白的Qt自学(3) Hello, FishC!

热度 46已有 3470 次阅读2014-3-9 16:23 |个人分类:Qt自学

我们接触的所有编程技术,在学习第一课时都是以Hello,world!为起始。我就非要改成Hello FishC !!>.< ,我们将从一个Hello FishC 程序说起,先讲述一个GUI(Graphical User Interface,图形用户界面)项目的创建、运行和发布的过程;然后再整个项目分析,从单一的主函数文件,到使用图形界面.ui文件,再到自定义C++类和Qt图形界面类,一步一步分析解释每行代码,让我们能够清楚的看到Qt程序的创建、管理、编译和运行项目的内部实现。当然这些将在以后逐步了解,我们还是先去研究一下如何编写Hello FishC 程序吧。

首先我们要打开VS2008,因为之前已经在VS上面搭建好了QT环境,所以我们在点击 文件->新建->项目 后会出现如下:

项目名称已经写好为: Hello FishC,单击 确定 


进入Qt工程的引导界面,点击 下一步。这就来到了选择库的界面,系统会默认自动为我们选择Qt core 和 GUI 两个库,通过这里可以看出,Qt是多么庞大的一个库,不仅有GUI, 还有NetWork,OpenGL,XML之类的。看来Qt对于这些功能也都给我们提供了相应的借口,我们以后会慢慢用到的,这里直接下一步。


下一个界面需要我们自己定义文件名,我们也可以不做修改默认名字,其中 Base class 我们选择QDialog,也就是一个对话框的类作为基类,直接点完成。


好了已经可以看到,IDE自动生成了N多个文件。用图来对照着说哈


hellofishc.ui 是该文件设计师设计的界面对应的界面文件
hellofishc.qrc 是该文件的资源管理文件,当然需要我们安装Qt Create 里面自带的Qt Edit一会再说
hellofishc.h 是该文件的HelloFishC类的头文件
hellofishc.cpp 是该文件的HelloFishC类的源文件
main.cpp 是该文件中包含的 main() 主函数

下面我们把main.cpp中的代码修改一下:  

1.#include "hellofishc.h"
2.#include <QtGui/QApplication>
3.#include <QtGui/QLabel>
4.int main(int argc, char *argv[])
5.{
6.   QApplication a(argc, argv);
7. //    HelloFishC w;
8.   QLabel * label = new QLabel("Hello FishC !");
9.   label->show();
10.//   w.show();
11.   return a.exec();
12.}
红色是添加的代码,这里用到了一个Qt封装好的类 QLabel ,我们在使用类的时候就像JAVA中导入包一样,用什么类必然有和这个类名一样的头文件,比如 QtGui/QLabel, 当然这个我们可以去 src 文件夹中找到,有兴趣的可以看看特的源码,好了我们看看运行出来的结果是什么,点击 启动调试 按钮,一个很小的窗口出现了。。。 
 
这就是我们的第一个Qt程序。这里还要对其进行一番解释。

1、2、3行就是需要引入的头文件。和普通的C++程序一样的,如果我们需要用到什么组件,就必须引入相应的头文件,如同JAVA的import一样,它的命名规范和JAVA也很相近,Qt头文件和类名是一致的。
4行是main函数函数头。学过C++的人都懂得。实际上Qt完全通过普通的main函数进入主程序,这跟MFC需要继承一个App类是不一样的。
5行大括号,第6行,创建一个QApplication对象。这个对象用于管理应用程序级别的资源,QApplication的构造函数要求两个参数,分别是main的那两个参数,一次Qt可以说是支持命令行参数的。
7行注释掉了,这里没有用到。第8行创建了一个QLabel对象,并且能够显示Hello FishC 字符串。和MFC的Label控件一样,是用来显示文本的。在Qt中,被称为一个widget,它就是windows技术里面的控件和容器。也就说widget可以将其他widget放入其中,很多的Qt程序使用QMainWindow或者QDialog作为顶级组件,上面这个例子中,顶级组件就是QLabel,我们继续看。
9行,就是让这个控件可见。组件创建出来的时候是hide的,我们需要调用show方法来手动显示出来。
10行是和7行是对应的,这里一起注释掉。
11行是将应用程序的控制权重新转交给Qt。这是的程序事件循环开始了,现在开始响应我们发出的各种事件了。
12行大括号和前面呼应作为结束程序的标志。

这里我们是用 new 来创建了一个QLabel控件,照例来讲我们应该delete掉的,但是这个程序很小,当自己关闭后,系统自动回收这个控件,只是我们以后再写程序的时候注意 new 一定要和 delete 相对应哈!谨防内存泄漏。。。。。

PS: 弄个好看点的东东, 将刚才的第8行代码坐下修改,如下:
QLabel *label = new QLabel("<h3><font color='blue'>Hello Fishc !<h3>");   
2

路过
3

鸡蛋
33

鲜花
3

握手

雷人

刚表态过的朋友 (41 人)

发表评论 评论 (9 个评论)

回复 福禄娃娃 2014-3-15 11:16
QT跨平台屌炸天
回复 hackbs 2014-8-31 12:18
以后准备去搞嵌入式?
回复 小甲鱼 2014-9-3 16:59
   QT吊炸天~
回复 狼小六_呆呆 2014-9-15 00:28
小甲鱼出了Qt教程么?
回复 叁er 2014-10-13 09:19
吊吊吊爆了
回复 qq351317878 2014-10-29 20:53
qt是什么
回复 黄志伟 2014-12-4 20:12
QT?不是lol的语音系统吗
回复 天涯客063 2015-1-10 19:21
黄志伟: QT?不是lol的语音系统吗
此QT非彼QT
回复 Zakre 2015-1-11 10:09
QT编程越来越火了啊。

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 18:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部