开始学习使用c++进行QT5学习
QT是一个1998年开始创办的c++库,其界面设计等能力表现不俗,后来被诺基亚收购,之后诺基亚将其开源,后来诺基亚倒闭,QT右digital接着运营。伴随着c++的发展,QT也从QT1发展到QT5,充分运用了c++的新特性。
环境搭建
QT5的安装非常简单不需要复杂的配置,我使用
Qt 5.7.0 for Windows 64-bit (VS 2013, 904 MB)配合vs2013进行,先安装vs2013再安装QT即可。
具体的可已根据自己的配置选择不同的编译器等。我的配置如下:
hello,qt!
因为我使用的是qt5但是在学习的资料上还是很多使用QT4,其实他们是可以兼容的。在新建工程的时候选择,qt widgets application
,就可以使用QT5下兼容qt4的情况。下面在详细的说。
在生成了项目之后,会自动生成六个文件:
现在先从一个基本的空项目开始学习。
基本工程文件.pro
在工程文件.pro里面:
|
|
Qt的核心模块 core 和gui 核心模块
可以看出这个文件里包含了所有的工程信息,
其中greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
这句话的作用就是自动识别QT4并使用QT4语句。使QT5兼容QT4
主程序main.cpp
在这里我们使用空项目进行学习。
删光mian.cpp
里的代码我们从最基本的开始:
使用设计师ui
删光原来的工程(剩下main.cpp和helloworld.pro)
然后删掉build-helloworld-Desktop_Qt_5_7_0_MSVC2013_64bit-Debug
文件夹。(注意如果修改了.pro的内容而没有生效的话,要删掉这个文件夹,才可以生效)
然后新建文件:
命名为mydialog
在建立完之后,会生成
同时在构建之后,ui会在debug文件里生成 ui_mydalog.h
mydialog.h
|
|
这个程序比较重要,需要比较透彻的理解名字空间:
首先:
是Ui::myDialog的前置声明,注意Ui::myDialog 和我们需要使用的类myDialog是两个不同的东西,在这里只进行了前置声明,而并没有具体的定义。
我们需要调用的类myDialog主要负责是主窗口的设计
这是一种组合设计的情况:
|
|
myDialog的私有成员,负责具体的Ui实现,使用Ui::myDialog定义了一个ui指针。在整个过程中Ui::myDialog都只是被声明,而没有被定义。
ui_mydalog.h
在这个头文件里主要定义了ui类
这段代码就是对Ui::myDialog的具体定义,看以看到,首先定义了一个Ui_myDialog类负责具体的ui细节,然后定义了Ui::myDialog直接继承Ui_myDialog的所有定义。从而完成了对ui的详细设计。
思考:
为什么要用名字空间Ui::myDialog进行,而不直接使用Ui_myDialog进行,而且使用前置定义?
原因(自我思考):
- 突出了namespace的作用
- 如果ui细节放生了变化,因为是前置声明,所以不需要很大的重新编译,降低了频繁的编译。
mydialog.cpp
自定义类的源文件
在这里主要是将myDialog的构造和析构
这是myDialog的构造函数,主要负责对publicQDialog(parent)和private ui(new Ui::myDialog)的构造
回归成最简单的定义形式比清楚:
剩下的是析构函数,负责销毁
同时,pro内的内容被更新为:
开始编辑ui文件:
ctrl+s保存之后,看带我们的ui内容被以xml的形式存储:
调用设计师ui
在设计完ui之后我们需要在主程序里调用:
编写主程序:
总结
几个程序之间的调用关系: