下面来逐行表明一下前面的谁人Hello, world!措施,尽量很简朴,但却可以对Qt措施的布局有一个清楚的认识。此刻再把代码贴过来:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello, world!");
label->show();
return app.exec();
}
第1行和第2行就是需要引入的头文件。和普通的C++措施没有什么两样,假如要利用某个组件,就必需要引入相应的头文件,这雷同于Java的import机制。值得说明的是,Qt中头文件和类名是一致的。也就是说,假如你要利用某个类的话,它的类名就是它的头文件名。
第3行是空行 🙂
第4行是main函数函数头。这与普通的C++措施没有什么两样,学过C++的都大白。因此你可以看到,实际上,Qt完全通过普通的main函数进入,这差异于wxWidgets,因为wxWidgets的Hello, world需要你担任它的一个wxApp类,并包围它的wxApp::OnInit要领,系统会自动将OnInit编译成进口函数。不外在Qt中,就不需要这些了。
第5行,噢噢,大括号…
第6行,建设一个QApplication工具。这个工具用于打点应用措施级此外资源。QApplication的结构函数要求两个参数,别离来自main的那两个参数,因此,Qt在必然水平上是支持呼吁行参数的。
第7行,建设一个QLabel工具,而且可以或许显示Hello, world!字符串。和其他库的Label控件一样,这是用来显示文本的。在Qt中,这被称为一个widget(翻译出来是小对象,不外这个翻译并欠好…),它等同于Windows技能内里的控件(controls)和容器(containers)。也就是说,widget可以安排其他的 widget,就像Swing的组件。大大都Qt措施利用QMainWindow可能QDialog作为顶级组件,但Qt并不强制要求这点。在这个例子中,顶级组件就是一个QLabel。
第8行,使这个label可见。组件建设出来之后凡是是不行见的,要求我们手动的使它们可见。这样,在建设出组建之后我们就可以对它们举办各类定制,以制止呈现之后在屏幕上面会有闪烁。
第9行,将应用措施的节制权移交给Qt。这时,措施的事件轮回就开始了,也就是说,这时可以相应你发出的各类事件了。这雷同于gtk+最后的一行gtk_main()。
第10行,大括号……措施竣事了。
留意,我们并没有利用delete去删除建设的QLabel,因为在措施竣事后操纵系统会接纳这个空间——这只是因为这个QLabel占用的内存较量小,但有时候这么做会引起贫苦的,出格是在大措施中,因此必需小心。
好了,措施表明完了。凭据正常的流程,下面应该编译。前面也提过,Qt的编译不能利用普通的make,而必需先利用qmake举办预编译。所以,第一步应该是在工程目次下利用
qmake -project
呼吁建设.pro文件(好比说是叫helloworld.pro)。然后再在.pro文件目次下利用
qmake helloworld.pro (make)
可能
qmake -tp vc helloworld.pro (nmake)
生成makefile,然后才气挪用make可能是nmake举办编译。不外因为我们利用的是IDE,所以这些步调就不需要我们手动完成了。
值得说明一点的是,这个qmake可以或许生成尺度的makefile文件,因此完全可以操作qmake自动生成makefile——这是题外话。
好了,下面修改一下源代码,把QLabel的建设一句改成
QLabel *label = new QLabel("<h2><font color=’red’>Hello</font>, world!<h2>");
运行一下:
同Swing的JLabel一样,Qt也是支持HTML理会的。
好了,这个Hello, world就说到这里!明晰一下Qt的措施布局,在一个Qt源代码中,一下两条语句是必不行少的:
QApplication app(argc, argv);
//...
return app.exec();
出处: http://devbean.blog.51cto.com/448512/194137