锤基r18文肉:QT 继承
QT 继承
由于教授给的任务需要用到一个可以跨平台的GUI,我选择了现在刚刚兴起的QT。
QT是基于C++编写的图形界面库,会用C++的朋友学习起来应该问题不大。QT的库相比MFC我个人感觉还是要规则很多,学起来也比较容易。由于本人也是新手,刚开始学习QT没几天,所以打算在这里写下自己学习过程中的一些心得体会,以及遇到的一些问题。希望和感兴趣的朋友做个交流。
首先介绍一下几个比较好用的QT的IDE。由于本人是在windows系统平台下面编写QT程序的,我这里介绍的是在windows环境下比较流行的IDE。
QT再被NOKIA收购以后,推出了一款比较实用的综合性IDE:QT Creator。在此之前,QT也是可以内嵌在VS和Eclipse里面的。
QT的图形界面设计器QT designer是专门用来设计UI(图形界面)的。它不提供对界面控件的直接操作,只是对界面进行设计。最新的QT Creator已经内嵌了这个designer。所以可以直接在Creator中进行UI的设计。
下面对一个QT工程进行一下简要的介绍吧。这里仅对app project进行介绍,因为一般用QT也就是为了设计一个应用程序。
一个app project应该包括以下几个文件:XXX.ui,h_XXX.h,XXX.h,XXX.cpp,YYY.cpp, XXX.qrc, XXX.pro几个文件。
XXX.ui:这个是图形界面生成的文件,也就是我们通过使用QT designer设计的界面产生的文件了。这个文件内部定义了一个图形界面类,实际上是一个XML文件,如果你用记事本打开,就会看到了。
h_XXX.h:这个是对XXX.ui文件进行编译之后生成的C++头文件。该文件内部定义了一个类,这个类就是前面XXX.ui的界面构成的类。该类的内部定义了所有的控件以及对空间初始化的方法。
以上两个文件都是在用QT creator设计好UI后自动产生的。一般不需要我们修改的。
XXX.h:这个文件是主文件的头文件,我们一般是通过这个文件定义的类来调用界面类的。这里讨论两种继承方式:单一继承方式和多继承方式。QT creator默认使用的是单一继承方式。在你创建好一个工程,设计完你的UI后,QT会自动使用单一继承方式在XXX.h文件中关联UI类:
单一继承方式:
XXX.h:
class XXX: public QWidget
{
Q_OBJECT
public:
private:
}
在这个类XXX里面我们看到定义了一个私有成员 Ui_XXX类的对象ui,其中的Ui_XXX就是一个UI类,所以可以看出,此方法实际上是把UI类作为自己的一个成员变量来使用的。
如果是多继承方式,那么在XXX.h文件中,UI类将作为一个基类被
XXX.h:
class XXX: public QWidget
{
Q_OBJECT
public:
}
XXX.cpp:对XXX.h类中定义的方法进行具体实现的文件。
YYY.cpp:这个是主文件,也就是包含了main()函数的文件。
XXX.pro:qmake工程文件,这个文件就好像是makefile文件,把各文件进行关联qilai的。例如:
FROMS += ../../XXX.ui
HEADERS += XXX.h
SOURCES += YYY.cpp \ XXX.cpp
TARGET = ../bin/YYY
RESOURCES += ../../XXX.qrc
XXX.qrc:资源文件。该文件保存了UI中使用的资源信息,例如图片等。