Qt 的工作方式是:首先,把Qt语言转换成c++语言,再转换成可执行程序。手动编译的过程有以下:
只有.cpp .ui文件
转到我的文件目录下
1.生成解决方案
在文件目录下,使用开始菜单中Qt安装目录下的命令提示符程序Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)我用的是这个版本。输入qmake -project命令来生成pro解决方案文件,里面包括
TEMPLATE = app
TARGET = helloworld
INCLUDEPATH += .
# Input
FORMS += hellodialog.ui
SOURCES += main.cpp
这些信息,当然我们还需要添加进我们所需的模块库,比方说
QT += widgets
然后保存。
以上.pro文件是没有任何平台信息的,即平台无关。
生成了pro文件
用文本打开
我上面说了,要加相应的模块,如果不加会怎么样呢?
应该就是缺少相应的库了。但是在qmake的时候,它也会生成相应的makefile文件,但是里面的信息是缺少的,也就是里面的信息不足以让之后的编译器找到库。
好,我们就添加进去。
2.生成makefile文件
输入qmake即可生成makefile,makefiel.debug,makefile.release文件,此时新生成的文件是与平台相关的。
3.生成可执行文件和.o文件
输入mingw32-make,即可把读入makefile内的内容进行编译,为每一个.cpp文件生成一个对应的.o目标文件,最后将这些目标文件进行链接来生成最终的可执行文件。
至此,完成了。
这样在release文件夹内就可以看到了.exe文件了,为什么是在Release文件内呢,因为我们根本就没有调试啊。
运行
我们会发现,我们的QT UI fILE文件已经转换成了c++ header文件了。现在主流的视窗界面是通过XML语言来描述的,即,可扩展标记语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。
那么,为啥我们在设计中可视我们的设计的“窗口”呢?因为Qt creator中内已经含有其相应的解释器,可以采用拖动的方式产生我们所需的,即所见即所成。当然,它也一些弊端,不好控制,作为程序员,当然要对它控制。
我们已经知道了,.ui里就是XML的代码,经过mingw32-make,它已经转换成了c++ header文件了,这是为什么呢?因为Qt中带有一个工具,uic.exe工具,在我们生成的makefile.Debug中我们可以找到它的存在,我们就可以在命令行中调用它,以及把.ui文件转换掉,此时,再在文件夹中我们就可以看到了ui的头文件了。
也就是这个
用文本打开来看,里面就是使用C++语言来实现你所设计的“窗口”的代码,最终经过g++链接编译成可执行文件。
所以,我们在不使用设计模式设计“窗体”时,纯写Qt c++代码时,可以试着参考这个转换的代码,试着学习它的思维,它的想法,这样才是最重要的,