第3课 - QT 的诞生和本质

1、GUI用户界面元素

        GUI用户界面是由固定的窗口元素所构成的 

        


        操作系统提供了创建用户界面元素所需要的函数 

        各种功能不同的函数依次调用,从而创建出界面元素 

        操作系统提供的原生函数无法直接映射到界面元素 

                 如何直观的将界面元素的概念直接映射到程序中? 


2、面向对象的GUI程序设计 

            GUI应用程序是为解决非科学计算问题而诞生的 

            GUI应用程序适用于非专业的日常生活领域 

            面向过程程序设计方法学不适合GUI程序设计 

             面向对象程序设计方法学 更适合GUI程序设计


3、另一种眼界 

            用面向对象方法学看待GUI界面元素 

            所有的界面元素都可以看作实际的对象 

            GUI用户界面是 由各不相同的对象组成的 

            -主窗口对象 

                      •  菜单对象 

                      •  按钮对象 

                      •  文本框对象 

                      • ......


            用面向对象的思想开发GUI应用程序 

                    主界面上有哪些界面元素? 

                    程序中需要几个对话框? 

                    这些类都已经支持了吗?还是需要另外开发? 

                    需要的界面元素都对应哪些类? 


            GUI开发非常适合采用面向对象方法学 

                -将界面元素定义为对应的类 

                 - 通过抽象封装可以隐藏界面元素的细节 

                -程序的 创建过程就是 组合不同界面元素对象的过程

                    


                    操作系统只是提供创建用户界面所需函数,所以我们

                    需要自己创建这些函数创建类,并且这些类可以复用


4、实例分析 

面向对象的方法创建GUI程序 

GUIDemoEx.sln (必须理解第2课的GUI程序原理实例才能体会)



创建一个应用程序a,创建一个主窗口,创建一个按钮,显示主窗口,看不到消息循环?

1)看看Application的定义文件


实际上Application类封装了消息循环

2)转到MainWindow的声明


发现继承了Widget类,再转到Widget类的声明


发现Widget不过是个抽象的概念,用来统一所有用户

界面元素(即所有用户界面元素公共特性全部抽象到

Widget里去了)

例如:每一个用户界面元素有一个ID(hwnd)

           示例中的Button对象的parent是主窗口,

           所有的用户界面元素都有这些特性

                        这样,我们就可以设计一个Widget类,所有

                        用户界面元素类都从Widget继承而来

再看MainWindow这个类,只是封装了创建主窗口的一些步骤

再看定义文件


构造函数就是用来创建一个主窗口对象,就是定义主窗口式样和创建主窗口

MainWindow封装了定义主窗口式样函数创建主窗口函数显示窗口函数消息处理函数

3)查看PushButton声明


用户界面元素,继承Widget

再看看PushButton定义


同样调用的系统提供的函数,且依赖于父窗口存在

4)编译运行

                    


            我们手工开发这些界面元素类,需要大量时间精力,

                 那么如果有人已经开发了这些类呢?


5、QT的本质 

            QT是利用面向对象方法学开发的一套GUI组件库 

            QT将不同操作系统的GUI细节封装于类的内部 

            QT提供一套垮平台的类用于开发GUI程序 

             QT遵循经典的GUI应用程序开发模式 


6、小结

            GUI程序开发更适合采用面向对象方法学

            所有的界面元素都可以看作实际的对象 

            GUI用户界面是由各不相同的对象组成的 

            QT是利用面向对象方法学开发的一套GUI组件库 

            QT将 GUI细节封装于类的内部,具有 跨平台的特性 




猜你喜欢

转载自blog.csdn.net/qq_39654127/article/details/80991982