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细节封装于类的内部,具有 跨平台的特性