1,Qt 是一套跨平台的程序设计库,这套程序设计库主要用于 GUI 方面的程序设计开发,所以本系列博文主要是利用C++介绍 GUI 程序设计技术;
2,命令行应用程序:
1,命令行应用程序的特点(Command Line Interface):
1,是一种基于顺序执行结构的可执行程序;
1,有一个固定的开始、固定的结束;
2,程序执行过程中不需要与用户产生交互;
1,为什么叫做命令行应用程序,因为它体现出给人的感觉就是一 个一个的命令,比如 ls;
2,ls 这条命令其实对应着一个程序,这是一个命令行应用程序;
3,ls 一旦开始执行,就执行单一的列出文件或文件夹任务,列完后主动退出;
3,程序执行后给出最终的运行结果;
1,gcc a.c b.c c.c;
1,利用 gcc 这个命令行应用程序完成编译这三个 C 程序的任务,在编译器编译过程中不产生用户交互,编译结束后或者生成可执行程序或者给出错误信息或警告信息;
2,命令行应用程序的运行模式:
1,非常简单,就是从 main() 函数开始调用各种函数,调用完之后,我们的任务就完成了,程序运行结束;
2,特点:
1,程序的运行有固定的开始(敲回车运行某个命令的时候开始) 和固定的结束(命令行完成命令后结束);
3,命令行应用程序蕴含的软件设计方法:
1,一种面向过程的程序设计方法,将一个大的问题分解为各种小 的问题,然后将小的问题逐个解决,整个大的问题也就解决了,对应到这里就是 main() 函数要完成一个大任务,首先 function1() 完成一个小任务,然后 function2() 完成一个小任务,最后通过 function4() 完成一个任务,这样大任务就完成了;
3,命令行应用程序适用于:
1,单任务场合;
2,无交互或简单交互场合;
3,服务器应用场合:
1,自身运行所占用的资源很少;
4,命令行应用程序是早期计算机系统中的主要程序类型:
1,早期计算机系统主要用来进行科学计算,科学计算需要科学家输入数据,运行后给出结果,所以说对于科学计算来说必然有一个规定的开始、一个固 定的结束,计算机进行计算过程中,是不需要和我们当时的科学家进行交互的,科学家只需要知道一个结果;
2,命令行应用程序的诞生是有历史原因的,早期的计算机系统中就只需要命令行应用程序就可以了;
3,图形界面应用程序:
1,图形界面应用程序的诞生:
1,随着计算机技术的发展,计算机走进日常生过;
2,计算机程序开始需要处理各个领域中的问题;
1,处理大量非科学问题;
3,计算机用户已经不再是专业的计算机工作者;
2,问题:
1,如何让计算机程序更好的适应普通用户并走进日常生活?
1,用图形界面应用程序;
3,图形界面应用程序的特点(Graphic User Interface):
1,是一种基于消息驱动模型的可执行程序;
2,程序的执行依赖于用户的交互过程;
1,因为要和用户进行更好的交互;
3,程序执行过程中实时响应用户操作;
4,一般情况下程序执行后不会主动退出;
1,被动的、多任务程序;
2,和命令行应用程序最大的本质不同;
4,图形界面应用程序的运行模式:
1,设计图形用户界面是什么样子,这种设计最后会体现在我们的程序当中;
2,图形界面应用程序运行模式有一定的规律可循,一般而言会从main() 开始,显示有个性的图形界面需要首先定义主窗口,其次创建主窗口(对 于一个操作系统而言,它的主窗口样式一般都是一样的)、然后创建主窗口中的元素(按钮、菜单、工具栏)、之后显示主窗口,最后进入消息循环(等用户操作,为了让这个程序不能往下执行,则程序执行死循环), 这个循环等待着操作系统来给这个应用程序发消息;到
5,图形界面应用程序的消息处理模型:
1,本图是用户如何使用计算机的原理图;
2,普通的用户无法使用计算机,因为此时计算机只是一堆硬件,普通用户如果要使用计算机,需要借助操作系统的支持,当操作系统安装到计算机后,用户就可以使用计算机了;
3,用户的操作主要分为两类:鼠标操作,键盘操作;
4,用户对计算机操作后,操作系统内核就能够检测到用户操作,如果发现用户是点了鼠标,系统内核会根据当前操作点鼠标生成一个系统消息;
5,系统消息被系统内核发送到有焦点的应用程序;
6,图形界面应用程序中都有一个消息队列,系统消息是被放到有焦点的 应用程序中的消息队列中;
7,消息循环就会从这个队列中将系统消息取出来,然后调用消息处理函数;
8,图形界面应用程序必须编写消息处理函数用于处理对应的消息;
(9),图形用户界面应用程序多数时候就是编写消息处理函数处理消息。
6,图形界面任务程序适用于:
1,多任务场合:
1,功能比较强大;
2,编写文字、编程、画图;
2,强用户交互场合;
3,非专业计算机用户:
1,办公室职员;
2,图形界面应用程序是当代计算机中的主要程序类型;
4,图形界面程序 VS 命令行程序:
1,当代大型软件产品架构模型:
1,图形界面应用程序和命令行应用程序是互补的关系,不是竞争关系, 命令行程序由于单任务特性,一般用来开发后台应用程序,图形界面应用程序交互性比较好,用于用户界面交互层;
2,图形界面交互层用的技术有 Qt、MFC、.Net 等;
3,架构分成出网路更新模块、数据库管理模块、虚拟机引擎模块(为了扩展性、可修改可维护性)等的命令行程序,一般在安装软件下呈现为 .exe文件;
4,合理的应用图形界面应用程序和命令行应用程序往往会给我们的软件质量带来提高,这也是一个架构师的艺术,如何在某个领域选择更好的技术,要看到某种技术的优势在哪里,不要只看到新技术忽略旧技术;
5,小结: