OOP编程实践QT剖析.pptx
《OOP编程实践QT剖析.pptx》由会员分享,可在线阅读,更多相关《OOP编程实践QT剖析.pptx(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主要内容QT简介QT桌面应用程序工程的建立QT开发环境必知要点HelloWorld程序升级版Hello World程序QT中的类信号和槽两个简单的例子第1页/共50页QT简介Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler,moc))以及一些宏,易于扩展,允许组件编程。第2页/共50页Qt的简介19901991199419992001Haavard 和Eirik灵感闪现开始设计,并提出信号和
2、槽的概念1993开发出Qt的第一个图形核心命名为Qt,并建立“奇趣科技”1995签订第一个合同,开始快速发展。1997Qt1.2发布,并且用于开发KDE。Qt 2.0发布Qt 3.0发布。2005Qt 4.0发布2008Nokia收购奇趣科技2012Digia收购QT第3页/共50页Qt的跨平台桌面平台WindowsMac OS XLinux/Unix X11第4页/共50页Qt的跨平台嵌入式平台Windows CESymbianAndroid嵌入式Linux第5页/共50页QT桌面应用程序工程的建立点击文件,选择新建文件或项目第6页/共50页QT桌面应用程序工程的建立选择应用程序,Qt Wi
3、dgets Application,然后点击选择。第7页/共50页QT桌面应用程序工程的建立设置工程的名字和路径第8页/共50页QT桌面应用程序工程的建立设置工程的编译器,及构建目录第9页/共50页QT桌面应用程序工程的建立设置工程中类的名字及其基类第10页/共50页QT桌面应用程序工程的建立点击完成。第11页/共50页QT开发环境必知要点当前工程中的文件:当前工程中的文件:QT_example.pro为工程配置为工程配置文件;头文件;源文件;文件;头文件;源文件;界面文件界面文件。配置当前工程的构建环境;运行配置当前工程的构建环境;运行环境;编辑器的特性;代码风格环境;编辑器的特性;代码风格
4、第12页/共50页QT开发环境必知要点设置构建后工程的存放路径。设置构建后工程的存放路径。第13页/共50页QT开发环境必知要点构建程序,即编译链接程序。构建程序,即编译链接程序。调试程序;在行号的左边双击鼠标设置断点,或按调试程序;在行号的左边双击鼠标设置断点,或按F9设置断点。设置断点。运行程序。运行程序。第14页/共50页HelloWorld程序通过编辑界面文件实现双击界面文件中的mainwindow.ui便出现图形界面编辑界面控件列表控件列表主窗口界面主窗口界面当前界面中包含当前界面中包含的所有控件的所有控件被选中控件的所有被选中控件的所有属性列表,可以在属性列表,可以在这里编辑各种属
5、性。这里编辑各种属性。编辑信号和槽编辑信号和槽第15页/共50页HelloWorld程序通过编辑界面文件实现将将label控件拖到主界面的控件拖到主界面的合适位置,双击修改它显合适位置,双击修改它显示的内容为示的内容为Hello World!第16页/共50页HelloWorld程序通过编辑界面文件实现构建并运行程序构建并运行程序第17页/共50页HelloWorld程序通过添加代码实现:在main函数中添加方框的语句。#include#include int main(int argc,char*argv)QApplication a(argc,argv);MainWindow w;QLab
6、el label(Hello World!,&w);w.show();return a.exec();第18页/共50页升级版HelloWorld程序通过编辑界面文件实现向主界面中拖放一个向主界面中拖放一个label控件和两个按钮控件,双控件和两个按钮控件,双击修改他们显示的内容。击修改他们显示的内容。在属性列表中将在属性列表中将“显示显示”按钮的按钮的objectname改为:改为:show;将隐藏按钮的;将隐藏按钮的objectname改为:改为:hide。第19页/共50页升级版HelloWorld程序通过编辑界面文件实现点击绿色的加号,添加信点击绿色的加号,添加信号和槽的关联。号和槽的
7、关联。第一个信号和槽的关联:第一个信号和槽的关联:发出者为发出者为show按钮,信号按钮,信号为为clicked(),接收者为接收者为label,槽函数为,槽函数为show()。第一个信号和槽的关联:第一个信号和槽的关联:发出者为发出者为hide按钮,信号按钮,信号为为clicked(),接收者为接收者为label,槽函数为,槽函数为hide()。第20页/共50页升级版HelloWorld程序通过编辑界面文件实现程序运行后,可以通过显示按钮显示程序运行后,可以通过显示按钮显示Hello world,通过隐藏按钮隐藏,通过隐藏按钮隐藏Hello World。第21页/共50页升级版HelloW
8、orld程序通过代码实现#include mainwindow.h#include#include#include int main(int argc,char*argv)QApplication a(argc,argv);MainWindow w;QLabel label(Hello World!,&w);label.move(60,40);QPushButton btn1(&w);btn1.move(40,70);QPushButton btn2(&w);btn2.move(150,70);btn1.setText(Hide);QObject:connect(&btn1,SIGNAL(cl
9、icked(),&label,SLOT(hide();QObject:connect(&btn2,SIGNAL(clicked(),&label,SLOT(show();btn2.setText(Show);w.resize(300,300);w.show();return a.exec();第22页/共50页QT应用程序开发须知通过鼠标点击创建好一个QT应用程序的工程时,我们已经得到一个可以运行的QT程序,但这个程序仅仅是一个“毛培房”。我们需要在工程中添加实现指定目标的类的代码,并修改界面文件,来完成一个实现具体功能的QT程序。贴地板,贴地板,粉刷墙,粉刷墙,桌椅,灯桌椅,灯等。等。添加实
10、现添加实现计算器的计算器的代码,并代码,并修改界面。修改界面。第23页/共50页QT应用程序开发须知在添加代码和控件时,需要解决的问题:如何使代码接收到控件的输入?如何将逻辑功能代码执行的结果反馈到控件?如何使一个控件的改变可以影响另一个控件?信号和槽信号和槽第24页/共50页QT应用程序开发须知从前面的列子可知:标签控件对应Qlabel类,下压式按钮对应QPushButton类,另外还有QApplication类和QMainWindow类,那么QT里面有些什么类?它们之间有关系吗?类的继承图类的继承图QT自带的帮助文档自带的帮助文档第25页/共50页第26页/共50页QObject类大多数Q
11、t类的基类QObject是Qt对象模型的中心。这个模型的中心特征就是一种用于无缝对象通讯的被叫做信号和槽的非常强大的机制。你能够使用connect()把信号和槽连接起来并且可以用disconnect()来破坏这种连接。用户自定义的类要支持信号和槽机制必须继承用户自定义的类要支持信号和槽机制必须继承QObject或或它的子类。它的子类。第27页/共50页QWidget类QWidget类是所有用户界面对象的基类。窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面
12、的窗口部件盖住一部分。第28页/共50页QMainWindow类QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。第29页/共50页QDialog类QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以
13、是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。第30页/共50页信号-槽(Signal-Slot)机制信号和槽机制是信号和槽机制是 QT 的核心机制的核心机制,要精通,要精通 QT 编程就必须对信号编程就必须对信号和槽有所了解。和槽有所了解。信号和槽是一种高级接口,应用于对象之间的信号和槽是一种高级接口,应用于对象之间的通信,它是通信,它是 QT 的核心特性的核心特性,也是,也是 QT 区别于其它工具包的重要区别于其它工具包的重要地方。信号和槽是地方。信号和槽是 QT 自行定义的一种通信机制,它自行定义的一种通信机制,它独立于标准独立于标准的的 C/
14、C+语言语言,因此要,因此要正确的处理信号和槽,必须借助一个称正确的处理信号和槽,必须借助一个称为为 moc(Meta Object Compiler)的)的 QT 工具工具,该工具是一个,该工具是一个 C+预处理程序,它为高层次的事件处理自动生成所需要的附加代预处理程序,它为高层次的事件处理自动生成所需要的附加代码。码。第31页/共50页所有从所有从 QObject 或其子类或其子类(例如例如 Qwidget)派生的类都能够派生的类都能够包含信号和槽包含信号和槽。当对象改变其状态时,信号就由该对象发当对象改变其状态时,信号就由该对象发射射(emit)出去,这就是对象所要做的全部事情,它不知道
15、出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号另一端是谁在接收这个信号。这就是真正的信息封装,它。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。确保对象被当作一个真正的软件组件来使用。槽用于接收槽用于接收信信 号,但它们是普通的对象成员函数号,但它们是普通的对象成员函数。一个槽并不知道是一个槽并不知道是否有任何信号与自己相连接否有任何信号与自己相连接。而且,对象并不了解具体的。而且,对象并不了解具体的通信机制。通信机制。信号-槽(Signal-Slot)机制第32页/共50页用户可以按照需要将许多信号与一个单独的槽函数相联系,一个信号也可以按需要被联系到很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OOP 编程 实践 QT 剖析
限制150内