




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QT编程,博创科技,2008博创科技,北京博创兴业科技有限公司BEIJNGUNIVERSALPIONEERINGTECHNOLOGYCo.,LTD,博创科技嵌入互动,Qt概述,Qt是Trolltech公司的标志性产品,是一个跨平台的C+图形用户界面(GUI)工具包Qt应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置Qt/Windows(WindowsXP,2000,NT4,Me/98)Qt/Mac(MacOSX)Qt/X11(Linux,Solaris,HP-UX,IRIX,AIX等)Qt对不同平台的专门API进行了专门的封装(文件处理,网络等),Qt特征,引入一种用于无缝对象通讯的被称为信号和槽的非常强大的机制可查询和可设计的属性,强大的事件和事件过滤器,根据上下文进行国际化的字符串翻译,完善的时间间隔驱动的计时器使得在一个事件驱动的图形界面程序中很好地集成许多任务成为可能。以一种自然的方式组织对象所有权的分层次和可查询的对象树。被守护的指针,QGuardedPtr,当参考对象被破坏时,可以自动地设置为无效,不像正常的C+指针在它们的对象被破坏的时候变成了“摇摆指针”。,Qt编程核心技术,QT对象模型元对象系统信号和插槽属性QObject类对象树事件处理,元对象系统,是一个C+扩展,使得QT更适合真正的组件GUI编程使用元编译器moc产生能被标准C+编译器访问的附加C+代码带有moc预编译器的C+基本上提供了面向对象的C的灵活性或类似于Java的运行环境,并保持了C+的执行效率和扩展性实现功能对象间通信的信号/插槽机制运行时的类型信息动态属性系统,信号和插槽,在Qt程序中,利用信号(signal)和插槽(slot)机制进行对象间的通信事件处理的方式也是回调当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管它并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signalsignal和slot机制真正实现了封装的概念,slot除了接收signal之外和其它的成员函数没有什么不同,而且signal和slot之间也不是一一对应的。,Signal和Slot的声明(1/2),在Qt程序设计中,凡是包含signal和slot的类中都要加上Q_OBJECT的定义classStudent:publicQObjectQ_OBJECTpublic:Student()myMark=0;intmark()constreturnmyMark;publicslots:voidsetMark(intnewMark);signals:voidmarkChanged(intnewMark);private:intmyMark;,Signal和Slot的声明(2/2),signal的发出一般在事件的处理函数中,利用emit发出signal,在下面的例子中在在事件处理结束后发出signalvoidStudent:setMark(intnewMark)if(newMark!=myMark)myMark=newMark;emitmarkChanged(myMark);,Signal和Slot的连接(1/2),在signal和slot声明以后,需要使用connect()函数将它们连接起来。connect()函数属于QObject类的成员函数,它能够连接signal和slot,也可以用来连接signal和signal,函数原形如下:boolQObject:connect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*member)static其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件,Signal和Slot的连接(2/2),在使用connect()函数进行来接的时候,还需要用到SIGNAL()和SLOT()这两个宏,使用方法如下:QLabel*label=newQLabel;QScrollBar*scroll=newQScrollBar;QObject:connect(scroll,SIGNAL(valueChanged(int),label,SLOT(setNum(int);,Signal和Slot的连接方式,取消Signal和Slot连接,取消一个连接disconnect(lcd,SIGNAL(overflow(),this,SLOT(handleMathError();取消一个连接不是很常用,因为Qt会在一个对象被删除后自动取消这个对象所包含的所有的连接,属性,属性也是一个类的成员在类声明中用宏Q_PROPERTY来声明只能在继承于QObject的子类中声明设置和得到属性的成员函数如下:QObject:setProperty()QMetaObject:propertyNames()QMetaObject:property(),QObject类,QObject是Qt类体系的唯一基类,是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObjectconnect():提供信号槽机制对象树:QObject在对象树中组织它们自己。当你以另外一个对象作为父对象来创建一个QObject时,它就被添加到父对象的children()列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界面应用对象的需要。事件:事件是由窗口系统或qt本身对各种事务的反应而产生的。当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。,事件运行机制,事件循环,QApplication,QApplication和QWidget都是QObject类的子类QApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的,QWidget,QWidget类是所有用户接口对象的基类,它继承了QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类,一个完整的Qt程序,1#include2#include3intmain(intargc,char*argv)45QApplicationapp(argc,argv);6QLabel*label=newQLabel(HelloQt!);7label-show();8returnapp.exec();9,QtDesigner,QtDesigner,直接使用代码来直接编写GUI无疑是非常痛苦的,好在QT提供了界面开发工具:QTdesignerQt应用程序除了使用手工编写代码的方式外,还可以用过QtDesinger来完成QtDesigner的功能十分强大,界面类似于VB,而且还提供了大量可供编程使用的组件,基于QtDesigner程序设计(1/4),在使用QtDesigner程序开发时,一般要涉及到下面几个步骤:1.创建和初始化子部件2.设置子部件布局3.设置Tab键次序(不是必须)4.建立信号与插槽的连接5.编写事件处理函数,基于QtDesigner程序设计(2/4),1.创建并布置部件,2.对部件使用布局管理,3.建立信号与插槽的连接,基于QtDesigner程序设计(3/4),编辑两个部件之间信号与插槽之间的连接方式,基于QtDesigner程序设计(4/4),QtDesigner下不同风格的预览,QtDesigner的工作过程,QtDesigner将工程文件组织成.ui的文件由.ui文件生成.h文件.ui-xmlUIC-oform.hform.ui需要注意的是,在QT3中使用例如UIC-oform.cpp-iform.hform.ui这样的方式来生成表单的CPP文件,但在QT4中,UIC已经作了修改,不能输出表单的CPP文件由C+编译器编译所有.h和.cpp文件,QtDesigner功能框图,Qt程序开发流程,Qt程序开发过程,使用designer设计界面,添加窗口组件建立信号槽连接编写事件处理函数保存工程为.ui文件,得到一个主窗口类2.编写main.cpp文件进行主窗口类的实例化及显示3.设置编译所需的环境变量QTDIR=,Qt程序开发过程,4.使用q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省邯郸县2025年上半年公开招聘村务工作者试题含答案分析
- 文化符号命名系统-洞察及研究
- 2025年数字人语音合成师面试题
- 火力发电厂课件及
- 2025年机关团委面试备考指南与答案
- 2026届湖北省随州市普通高中化学高一上期中调研模拟试题含解析
- 灌区知识培训方案课件
- 激发读书兴趣的课件
- 激光电气基础知识培训课件
- 激光加热产品知识培训课件
- 子痫患者护理查房
- 2024仁爱科普版八年级英语上册 Unit 1 Healthy Mind and Body(知识梳理与考点训练)解析版
- 医疗护理员职业技能竞赛试题及答案
- 出货标签管理办法
- 中石化计划管理办法
- 我国军兵种介绍课件
- 小学劳动技术课课件
- 电动汽车原理与构造- 课件全套 第1-9章 绪论 -电动汽车的智能化技术
- 医院医德医风管理制度
- 滑雪公益教学课件
- 车辆检测与维修驾驶员聘用合同
评论
0/150
提交评论