1.前言
前面一章,我们简单学习了一下Qt库的使用,以及一个程序的开发流程:就是不停的调库。
这就是Qt之所以非常火的原因,因为其自带的库真的太多了,绝大多数时候都无需我们自己造轮子。
但除此之外,Qt另一个非常火的原因就是其界面的强大,前面我们使用MFC的时候可以看到,其实我们对界面的美化,能控制的范围相当有限,想要变成好看,非常难。
但Qt不一样,你可以非常容易的,将界面做的很好看,所以本章就将开始介绍Qt的界面开发流程。
2.创建项目
暂时我们还是使用qtcreator
来开发Qt项目,虽然不好用,但好歹是官方自带的,得熟悉一下。
这次我们不再创建控制台项目了,而是要创建一个窗口项目:
即Qt Widgets
,widget
意为部件,因为在Qt里面,几乎所有东西都是部件,可以任意搭配缝合,窗口应用程序更是尤为突出。
然后随便取个项目名:
依旧选择qmake
:
这里注意一下,要选择QWidget
,即创建最原始的部件窗口:
它可以任意扩展为你想要的类型对话框,以后你熟悉了之后,当然也可以选择其它两种已经初始化好的对话框:
QMainWIndows
:一个所有部件都已经具备的窗口,比如状态栏,菜单栏等等,继承自QWidget
。QDialog
:对话框窗口,可以很方便弹出,继承自QWIdget
。
然后,这次我们就不选语言了:
编译套件还是选择msvc
:
汇总这里的版本控制系统也不需要,直接完成:
然后我们就能看到自动生成的项目文件:
这里你可能首先就会感到奇怪,明明是窗口程序,为啥是main
函数?不应该是winMain
函数吗?
这就是Qt的独到之处了,Qt将各种类型项目的差异性封装了起来,统一使用一个main
函数!
当你的项目文件(.pro
)中,没有添加CONFIG+=cmdline
时,它就会链接对应的含有winMain
函数的库,那个winMain
才是真正的入口点,只不过在那个winMain
函数里面,调用了我们这里的main
函数。
所以不是没有使用winMain
,而是它被隐藏了!
生成的文件之内的,我们也先不用管,直接点击运行一下试一试!
与MFC一样,我们啥都没干,就可以生成一个窗口程序。
但相比较而言,你会发现Qt的代码非常简洁,文件很少,而MFC里面却是各种文件混杂,莫名其妙的代码一大堆。
这便是Qt的优势之处:简洁明了。
3.文件与代码详解
首先来看,这个生成的项目中有哪些文件,都是干什么的:
main.cpp
:程序源码,存放了入口函数代码。widget
:主窗口类,包含widget.h
与widget.cpp
这两个文件,用于控制主窗口的行为。widget.ui
:UI设计文件,和MFC类似,通过拖拽即可完成界面搭建。
然后我们来具体看一看文件中的代码,首先是main.cpp
文件:
代码相当简单,首先和前面控制台一样,也是声明了一个应用类,不过这个类名为QApplication
,它是QCoreApplication
的子类。
声明出对象后,然后调用exec
函数进入消息循环:
QApplication a(argc, argv);
return a.exec();
只不过在中间,还实例化了一个窗口类,并调用show
函数显示出来,这个操作学过win api
界面编程的我们应该很清楚,其实就是在调用showwindow
这个win API
函数来显示窗口。