相信用过Qt Designer的朋友,对Qt Project中的.ui文件并不陌生。这个文件在Qt Designer中并不能直接修改其源代码,而只能通过Qt Designer的图形工具对其进行操作。对于这一点,我不得不要赞一下设计Qt Designer的人,因为这大大可以避免.ui文件中出现语法错误的概率,同时使得程序员能省下大量的程序界面设计时间进而缩短整个程序项目的开发。
从另一方面,我之所以想要谈谈这个.ui文件,是因为这个文件的使用方法不同于当今许多移动开发平台的类似文件的使用方法。从这一点上,我认为是一个相当好的创新。
我相信大家都知道,每个Qt Project都是纯C++的,而如果我们用普通的文档编辑器打开.ui文件时,我们会发现.ui文件其实是个自定义标签的XML文件,那么这个文件对于整个Qt Project来说,怎么发挥它的作用呢?难道说Qt的C++编译器能把它直接转换成C++语言,然后进行编译吗?带着这个问题,我进行了探索,发现却是另一种结果。
我们可以先用Qt Creator创建一个带有ui文件的GUI Project,创建过程中Qt Creator会让我们选择这个窗口类是基于QMainWindow、QWidget还是QDialog。我们随便选一个,在这我选的是QMainWindow。然后,我们可以得到5个文件,一个.pro文件,一个.ui文件,一个.h文件,两个.cpp文件,其中一个是main.cpp,其包含着Qt程序的入口函数main。
而这时,如果我们打开.h文件的话,我们会看到如下一段声明: