10.6.2 开发Qt图形界面程序
Qt工具包是一个功能非常丰富的框架,几乎支持编程开发的各个方面。本节只对利用Qt开发图形界面程序做初步的介绍,希望通过本节的学习,读者能够对利用Qt开发图形界面有一个总体的印象。Qt工具包以C++类库的形式向外界提供功能接口,进行Qt界面开发需要具备基本的C++语言知识并了解面向对象的基本理论。
进行图形界面的开发需要解决的基本问题就是如何使用图形界面元素以及如何将界面元素与事件对应起来。在Qt中,所有的界面元素都称为窗口饰件,即Widget,它们都直接或者间接地从Qwidget继承而来。要定制新的窗口元素,可以从Qwidget中选择一个功能相近的派生类,通过继承来增加或者重新定义已有的方法,达到定制新窗口元素功能的目的。如果找不到合适的派生类,可以直接从Qwidget派生。Qwidget提供窗口元素中的一些基本操作,包括事件处理函数、窗口饰件外观设置函数等。关联窗口元素产生的事件和相应的事件处理函数可以采用两种方法:
①重载(Overload)其中已有的事件处理函数。
②利用信号/槽的机制关联信号(事件)和信号对应的事件。
第1种方法适合于已经存在的事件处理函数。第2种方法更灵活,也是最常使用的方式。信号/槽机制是Qt工具包最显著的特色,它提供了一种对象之间互相通信的机制。信号是对象(类)向外界发送的任意消息、事件,不仅仅是界面元素产生的一般消息(鼠标、键盘等)。信号有名称,可以带参数。槽是可以接收消息的特殊函数。对于消息来说,定义时不必指明将消息发送给谁,即不需要指定消息的接收方;对于槽来说,定义时也不必指明从哪里接收消息,即不需要指定消息的发送方。那如何将消息和对应的消息处理函数———槽对应起来呢通过Qobject的connect函数可以完成消息和槽的关联。一个消息可以发送给多个槽,一个槽也可以接收多个消息。如果槽接收的消息来自对象内部,就实现了对象内部的通信;如果槽接收的消息来自对象外部,就实现了对象之间的通信。
信号槽机制不是Qwidget特有的,任何从Qobject类(Qwidget的基类)继承的子类都可以使用这种机制。与利用回调函数(Callback Functioin)来处理消息相比,信号/槽机制能安全的、更好地体现了对象的封装特性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。