Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631676
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:02:36

原文地址:Qt编写第一个程序 作者:luozhiyong131

#include  /*这一行包含了QApplication类的定义。在每一个使用Qt的应用程序中都必须使用一个QApplication对象。QApplication管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。*/

#include 

/* main()函数是程序的入口。几乎在使用Qt的所有情况下,main()只需要在把控制转交给Qt库之前执行一些初始化,然后Qt库通过事件来向程序告知用户的行为。argc是命令行变量的数量,argv是命令行变量的数组。这是一个C/C++特征。它不是Qt专有的,无论如何Qt需要处理这些变量*/

int main(int argc, char *argv[])

{

QApplication app(argc, argv); //app是这个程序的QApplication。它在这里被创建并且处理这些命令行变量.在任何Qt的窗口系统部件被使用之前创建QApplication对象是必须的。

QLabel *label = new QLabel("Hello Qt!");

label->resize(200, 30);

label->show(); //当创建一个窗口部件的时候,它是不可见的。你必须调用show()来使它变为可见的。

/*这里就是main()把控制转交给Qt,并且当应用程序退出的时候exec()就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。*/

return app.exec();

}

1. 初始化

Qt应用程序中,首先要创建一个QApplication对象,QApplication类负责图形用户界面应用程序的控制流和主设置,在main.cpp中定义如下:

int main(int argc, char **argv) {

QApplication app(argc, argv);

……

}

QApplication包含在main()函数的事件循环体中,对所有来自Window系统和其它源文件的事件进行处理和调度,还包括处理应用程序的初始化和结束,并且提供会话管理。在Qt应用程序中,不管有多少个窗口,Application对象只能有一个,而且必须在其他对象之前创建。

QApplication类中封装了很多函数,其中包括:

系统设置:setFont() 用来设置字体

事件处理:sendEvent() 用来发送事件

GUI风格:setStyles() 设置图形用户界面的风格

颜色使用:colorSpec() 用来返回颜色文件

文本处理:translate() 用来处理文本信息

创建组件:setmainWidget() 用来设置窗口的主组件

……

Qt程序中,创建窗口比较简单,只要在main.cpp文件中为ApplicationWindow建立一个指针:

ApplicationWindow *mw = new ApplicatonWindow();

ApplicationWindow是在Application.h中定义的类,它是一个QmainWindow的继承类

3.组件的创建

组件的创建需要调用相应组件的类,并在头文件中包含此类的头文件或者创建自定义类,继承以后组件类的功能

#include qpushbutton.h

class hello::public Qwidget

{

……

}

hello类继承了Qwidget类的特征,并加入了自定义的特征功能,同样需要在头文件中包含此类的头文件在main.cpp的函数中需要创建hello类的实例,或创建QPushButton类的实例,才可以使用

hello h(string);

QPushButton hello(Hello,world!,0);

如果组件本身可以作为主窗口,则无需设置主窗口。在上例中,下压按钮创建时其构造函数中的第二个参数为0,表示按钮所在窗口为主窗口,不需要设置主窗口。否则需要调用QWidget成员函数setMainWidget()来进行设置

h.setMainWidget(&h);

组件创建时一般是不可见的,这样的好处在于避免大量组件创建时造成的屏幕闪烁现象,要使组件可见需要调用QWidget类的成员函数show()来显示组件

h.show();

退出事件程序,只需要在程序结束时返回一个exec(),例如:

return a.exec();

其中aQApplication的实例,当调用exec()将进入主事件的循环中,直到exit()被调用或主窗口部件被销毁

阅读(143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~