首页 > 代码库 > Qt简介

Qt简介

 Qt是图形用户程序框架,一个基于C++语言的框架,一个专注于用于图形界面的框架,一个跨平台的框架,一个艺术级别的图形开发工具,这就是Qt

  Qt的优点:基于C++简易,面向对象,具有优良的跨平台特性,Qt架构健壮,性能强大,Qt使用起来简便高效,Qt的开源软件。

  Qt编程特点:

1.初始化

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

intmain(intargc,char*argv[])

{

QApplication a(argc,argv);

………

}

QApplication包含在main()函数的时间循环体中,对所有来自Window系统和其他源文件的事件进行处理和调用,还包含处理应用程序的初始化和结束,并且提供会话管理。

在Qt应用程序中,不管有多少个窗口,QApplication对象只能有一个,而且必须在其他对象之前创建。

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

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

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

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

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

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

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

2.窗口的创建

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

ApplicationWindow  *mv=new  ApplicationWindow();

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()来进行设置。

窗体(Qwidget

Qt拥有丰富的满足不同需求的窗体(按钮,滚动条等等),Qt的窗体用起来很灵活,为了满足特别的要求,他很容易就可以被子类化。

窗体是Qwidget类或其子类的实例,客户自己的窗体类需要从Qwidget的子类继承。

h.setMainWidget(&h);

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

h.show();

4.事件

X程序中,敲击键盘,鼠标指针在窗口中的移动或鼠标按键动作等,都是事件

Qt中提供了一种叫做回调的事件处理方式。它通过翻译表,将事件映射为相应的动作,当组件得到事件通知,就去表中找出相应的动作例程进行处理。这种机制需要应用程序注册有关组件的回调函数或普通的事件处理函数,已分发循环Qt的时间

Qt事件的处理过程:QApplication的事件循环体从事件队列中拾取本地窗口系统事件或其他事件,译成QEvent(),并送给QObject::event(),最后送给QWidget::event()对事件进行处理。

其实在Qt程序中,事件处理的方式也是回调,但与以往所不同的是,事件的发出和接收采用了信号(signal)和插槽(slot)机制,无需调用翻译表。利用信号和插槽进行对象间的通信是Qt的最主要特征之一。

当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管他并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signal

Signalslot机制真正实现了封装的概念,slot除了接收signal之外和其他的成员函数没有什么不同,而且signalslot之间也不是一一对应的。




本文出自 “IT技术” 博客,转载请与作者联系!

Qt简介