14_QT编程

上传人:dao****ing 文档编号:243000637 上传时间:2024-09-13 格式:PPT 页数:31 大小:743.50KB
返回 下载 相关 举报
14_QT编程_第1页
第1页 / 共31页
14_QT编程_第2页
第2页 / 共31页
14_QT编程_第3页
第3页 / 共31页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text stylesgood1,Second levelgood2,Third levelgood3,Fourth levelgood4,Fifth levelgood5,博创科技 嵌入互动, 200,8,博,创科技,QT,编程,博创科技, 200,8,博创科技,北 京 博 创 兴 业 科 技 有 限 公 司,BEIJNG UNIVERSAL PIONEERING TECHNOLOGY Co . , LTD,博创科技 嵌入互动,Qt,概述,Qt,是,Trolltech,公司的标志性产品,是一个跨平台的,C+,图形用户界面(,GUI,)工具包,Qt,应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置,Qt/Windows(Windows XP, 2000, NT 4, Me/98),Qt/Mac(Mac OS X),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,也同样不知道要接收怎样的,signal,signal,和,slot,机制真正实现了封装的概念,,slot,除了接收,signal,之外和其它的成员函数没有什么不同,而且,signal,和,slot,之间也不是一一对应的。,Signal,和,Slot,的声明(,1/2,),在,Qt,程序设计中,凡是包含,signal,和,slot,的类中都要加上,Q_OBJECT,的定义,class Student : public,QObject,Q_OBJECT,public:,Student() ,myMark,= 0; ,int,mark() const return,myMark,; ,public slots:,void,setMark(int,newMark,);,signals:,void,markChanged(int,newMark,);,private:,int,myMark,;,;,Signal,和,Slot,的声明(,2/2,),signal,的发出一般在事件的处理函数中,利用,emit,发出,signal,,在下面的例子中在在事件处理结束后发出,signal,void,Student:setMark(int,newMark,),if (,newMark,!=,myMark,) ,myMark,=,newMark,;,emit,markChanged(myMark,);,Signal,和,Slot,的连接(,1/2,),在,signal,和,slot,声明以后,需要使用,connect(),函数将它们连接起来。,connect(),函数属于,QObject,类的成员函数,它能够连接,signal,和,slot,,也可以用来连接,signal,和,signal,函数原形如下:,bool,QObject:connect,(,const,QObject,* sender, const char * signal,const,QObject,* receiver, const char * member,) static,其中第一个和第三个参数分别指出,signal,和,slot,是属于那个对象或组件,Signal,和,Slot,的连接(,2/2,),在使用,connect(),函数进行来接的时候,还需要用到,SIGNAL(),和,SLOT(),这两个宏,使用方法如下:,QLabel,*label = new,QLabel,;,QScrollBar,*scroll = new,QScrollBar,;,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,中的,TObject,connect(),:提供信号槽机制,对象树:,QObject,在对象树中组织它们自己。当你以另外一个对象作为父对象来创建一个,QObject,时,它就被添加到父对象的,children(),列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界面应用对象的需要。,事件:,事件是由窗口系统或,qt,本身对各种事务的反应而产生的。,当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。,事件运行机制,事件循环,QApplication,QApplication,和,QWidget,都是,QObject,类的子类,QApplication,类负责,GUI,应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的,QWidget,QWidget,类是所有用户接口对象的基类,它继承了,QObject,类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上,QWidget,类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,,QPushButton,、,QlistBox,等都是它的子类,一个完整的,Qt,程序,1 #include ,2 #include ,3,int,main (,int,argc, char *,argv,),4 ,5,QApplication,app (,argc,argv,);,6,QLabel,*label = new,QLabel,(Hello Qt!);,7 label-show ();,8 return app. exec ();,9 ,Qt Designer,Qt Designer,直接使用代码来直接编写,GUI,无疑是非常痛苦的,好在,QT,提供了界面开发工具:,QTdesigner,Qt,应用程序除了使用手工编写代码的方式外,还可以用过,Qt,Desinger,来完成,Qt Designer,的功能十分强大,界面类似于,VB,,而且还提供了大量可供编程使用的组件,基于,Qt Designer,程序设计(,1/4,),在使用,Qt Designer,程序开发时,一般要涉及到下面几个步骤:,1.,创建和初始化子部件,2.,设置子部件布局,3.,设置,Tab,键次序(不是必须),4.,建立信号与插槽的连接,5.,编写事件处理函数,基于,Qt Designer,程序设计(,2/4,),1.,创建并布置部件,2.,对部件使用布局管理,3.,建立信号与插槽的连接,基于,Qt Designer,程序设计(,3/4,),编辑两个部件之间信号与插槽之间的连接方式,基于,Qt Designer,程序设计(,4/4,),Qt Designer,下不同风格的预览,Qt Designer,的工作过程,Qt Designer,将工程文件组织成,.,ui,的文件,由,.,ui,文件生成,.h,文件,.,ui,-xml,UIC -o,form.h,form.ui,需要注意的是,在,QT3,中使用例如,UIC -o,form.cpp,-i,form.h,form.ui,这样的方式来生成表单的,CPP,文件,但在,QT4,中,,UIC,已经作了修改,不能输出表单的,CPP,文件,由,C+,编译器编译所有,.h,和,.,cpp,文件,Qt Designer,功能框图,Qt,程序开发流程,Qt,程序开发过程,使用,designer,设计界面,添加窗口组件,建立信号槽连接,编写事件处理函数,保存工程为,.,ui,文件,得到一个主窗口类,2.,编写,main.cpp,文件进行主窗口类的实例化及显示,3.,设置编译所需的环境变量,QTDIR =,Qt,程序开发过程,4.,使用,qmake,生成,.pro,工程文件,rootIntel,qt4qmake -project,5.,通过,qmake,自动生成,Makefile,文件,rootIntel,qt4qmake,6. make,生成可执行文件,7.,运行,谢谢各位,技术支持电话:,010,82110740/1/2/3,转,822,技术支持邮箱:,supportup-,技术支持论坛:,http:/www.up-
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!