【转】Qt 探秘——谈 ui 文件的用法
2011-08-10 14:19:30| 分类: Qt | 标签:
qt qtcreator c++ |字号 订阅
source link:
http://losemyheaven.blog.163.com/blog/static/17071980920111902618262/
相信用过 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 文件的话,我们会看到如下一段声明:
namespace Ui {
class MainWindow;
}
这的意思是说,在命名空间 Ui 里面有一个类叫 MainWindow,可是这
个类的描述在哪呢,不清楚,但肯定不在当前这个.h 文件中。但是我们可以在
后面的类描述中发现,其中会有一个 Ui::MainWindow 的私有指针,既然是这样,
估计在对应的.cpp 文件中,应该能找到出现这个 Ui::MainWindow 的描述的.h 文
件,不出所料,在对应的.cpp 中,就发现了这个文件:
#include "ui_mainwindow.h"
但是,如果这时你还没有 build 过的话,你会发现这个文件是找不到
的,那么我们就来 build 一下这个 Project 吧。结果一 build 之后,我们就能看
到这个文件了。打开后,我们会看到 Ui::MainWindow 的描述:
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
这就是这个类的描述,简短而精悍,而在它的上面就是
Ui_MainWindow 类的描述了,而这个 Ui_MainWindow 正是按着.ui 文件的设计通
过 uic 工具生成的。那么这个类该怎么用呢?
- 1
- 2
- 3
前往页