首页 理论教育ARM嵌入式系统编译、调试与发布技巧

ARM嵌入式系统编译、调试与发布技巧

【摘要】:Qt使用控件事件机制,用户可以为控件添加不同的事件响应处理函数,当控件产生相应事件后会调用事件响应函数处理。带有功能响应的Qt应用程序程序第12行使用了connect()函数设置quitButton按钮的单击事件与quit()函数关联。Qt图形库是一个组织严谨的C++类库,其结构如图10.8所示。图10.8Qt类库结构示意图Qt类库中包含了上百个类,结构十分复杂。图10.8展示了Qt类库的基本结构。QObject类是所有应用组件的基类,QEvent类是所有Qt事件响应类的基类。

从上述两个程序实例可以看出,无论是使用按钮还是标签,在程序中都没有实现任何功能。Qt使用控件事件机制,用户可以为控件添加不同的事件响应处理函数,当控件产生相应事件后会调用事件响应函数处理。下面给出一个响应按钮单击事件的例子。

【例10.3】带有功能响应的Qt应用程序

程序第12行使用了connect()函数设置quitButton按钮的单击事件与quit()函数关联。connect()函数是QObject类的一个静态函数,可以看出一个Qt应用中所有的事件都是通过QObject对象管理的。SIGNAL()和SLOT()是Qt预定义的两个宏,SIGNAL()宏用于设置一个信号,SLOT()宏设置一个槽。当控件产生某个事件后会发出一个信号,而槽可以理解为信号的处理函数,程序界面上有唯一的一个名为Quit的按钮,当单击Quit按钮后,程序会退出。

Qt图形库是一个组织严谨的C++类库,其结构如图10.8所示。

(www.chuimin.cn)

图10.8 Qt类库结构示意图

Qt类库中包含了上百个类,结构十分复杂。图10.8展示了Qt类库的基本结构。Qt类库中的类可以分成两种类型,一种是直接或者继承自Q t类,另一种是独立的,不从任何类集成。独立的类在Qt库中一般用来完成独立的功能,例如操作XML文件的QXmlReader类。

直接从Qt类继承的类主要可以分成QObject类和QEvent类。QObject类是所有应用组件的基类,QEvent类是所有Qt事件响应类的基类。其他的还有QCursor、QPen、QTab等类描述的窗口组件可以在窗体的任意地方出现,因此直接从Qt基类继承。

QWidget类是组件容器,所有可以结合在一起的组件都从该类继承。QWidget类继承自QObject类,因为所有的窗体组件都是应用组件的一部分。

Qt类库组织合理,在使用的时候按照类的集成关系操作。如QButton、QSlider等组件可以被加入到QWidget对象中,而QProcess、QTimer组件是不能加入到QWidget对象中的。