QT编程简介.ppt

上传人:qwe****56 文档编号:70019635 上传时间:2023-01-14 格式:PPT 页数:59 大小:1.47MB
返回 下载 相关 举报
QT编程简介.ppt_第1页
第1页 / 共59页
QT编程简介.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《QT编程简介.ppt》由会员分享,可在线阅读,更多相关《QT编程简介.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、http:/QT编程简介http:/中国十大品牌IT教育机构目录QT简介QT编程http:/中国十大品牌IT教育机构1.QT简介Qt是一个基于C+的跨平台应用程序和UI开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。由挪威Trolltech公司开发,目前已被Nokia收购 http:/ -“compile once,run anywhere”(“一次编译,到处运行”)QT -write once,compile anywhere“(“一次编程,到处编译”)http:/中国十大品牌IT教育机构基于QT开发的软件(1):KDEhttp:/中国十大品牌IT教育机构基于QT开发的软件(2):

2、GOOGLE地球http:/中国十大品牌IT教育机构基于QT的软件(3):MAYAhttp:/中国十大品牌IT教育机构基于QT的软件(4):更多Opera浏览器Skype网络电话QCadAdobePhotoshopAlbumCGAL计算几何库http:/中国十大品牌IT教育机构QT历史1996Sep24Qt1.01996OctKDE组织成立1998Apr05Trolltech的程序员在 5 天之内将 Netscape5.0 从 Motif 移植到 Qt 上1998Apr08KDEFreeQt基金会成立1998Jul12KDE1.0发布1999Jun25Qt2.0发布2000Mar20嵌入式 Q

3、t 发布2000Sep06Qt2.2发布2000Sep04Qtfreeedition开始使用 GPL2004Aug4.02008JunNokia收购QT2008Aug4.4发布,集成Webkit和Phonon2009Dec014.6发布http:/中国十大品牌IT教育机构QT优点1.优良的跨平台特性Qt支持下列操作系统:Windows,Linux,Solaris,SunOS,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX 等等。2.面向对象Qt的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。Qt 提供了一种称为 signals/sl

4、ots的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。3.丰富的 APIQt包括多达 500 个以上的 C+类,还替供基于模板的 collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。4.大量的开发文档Network/XML/OpenGL/Database/webkit/.http:/中国十大品牌IT教育机构QT开发架构http:/中国十大品牌IT教育机构QT模块QT交叉开发库包含12+模块近700API类库,模块都依赖QtCore模块

5、编译工具configure,qmake,moc,uic,rcc开发工具Qt Creator,Qt Designer,Qt Assistant,Qt Linguisthttp:/中国十大品牌IT教育机构QtCore模块提供非GUI功能的类和方法 Basic Type(Char,Date,Time,String)File system access,Date and time handling String handling,List and array handling Threads and processes,Shared resources Libraries and Plugins,Ti

6、mers提供基本图形功能的类和方法 Point,Rectangle提供Qt对象模型的核心QobjectQtCore不依赖底层窗口系统http:/中国十大品牌IT教育机构QtGui模块扩展QtCore到GUI功能UI应用基础类部件、对话框集部件布局管理UI事件类集成输入法、绘图引擎抽象类平台抽象集成平台相关的剪贴板平台相关的显示风格平台相关的事件处理、窗口重绘http:/中国十大品牌IT教育机构编译Qt应用程序qmake -project生成Qt项目文件(*.pro)qmake用.pro文件产生平台相关的Makefile文件对包含Q_OBJECT宏的头文件生成调用moc的make规则make为当

7、前平台编译应用程序执行moc、uic、rcchttp:/中国十大品牌IT教育机构Qt编译工具元对象编译器moc(meta-object compiler)每一类头文件产生一个特定的元对象用户界面编译器uic(UI compiler)从Qt Designer的XML文件生成类文件资源编译器rcc(Resource compiler)由资源文件.qrc生成C+数据文件这些工具在编译时被自动调用http:/中国十大品牌IT教育机构2.QT编程#include#includeintmain(intargc,char*argv)QApplicationapp(argc,argv);QLabel*labe

8、l=newQLabel(HelloQt!);label-show();returnapp.exec();http:/中国十大品牌IT教育机构Qt编程的特点1.初始化 在Qt的应用程序中,首先是创建QApplication对象,QApplication类是负责图形用户界面的应用程序的控制流和主设置。int main(int argc,char*argv)QApplication app(argc,argv);.http:/中国十大品牌IT教育机构Qt编程的特点2.窗口的创建 在Qt程序中,在main中为 ApplicationWindow建立一个指针如:QLabel*label=new QLab

9、el(Hello Qt!);组建创建的时候一般是不可见的,需要调用QWidget的成员函数 show()来显示组件。label-show();http:/中国十大品牌IT教育机构Qt编程的特点3.事件处理 Qt的事件处理过程:QApplication的事件循环体从事件队列中拾取本地窗口的系统的事件或其他的事件,将事件翻译成QEvent(),然后送给QObject:event(),最后给QWidget:event()分别对事件处理。在Qt编程中,对事件的处理方式也是采用回调的方式,但是在事件的发出和接收采用的是signal和slot的机制,这是Qt的主要特征。http:/中国十大品牌IT教育机构

10、Qt中3个主要的基类1.QObject QObject类是所有能够处理signal,slot和时间的Qt对象的基类2.QApplication QApplication类负责GUI应用程序的的控制流和主要的设置,它包含主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始,结束以及会话管理,还包括系统和应用程序方面的设置。3.QWidget QWidget类是所有用户接口对象的基类,它继承QObject类的属性。http:/中国十大品牌IT教育机构QT核心技术:信号槽信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C+语言,因此要正确的处理信号和槽,必须借

11、助一个称为 元对象编译器moc(Meta Object Compiler)的QT工具,该工具是一个C+预处理程序,它为高层次的事件处理自动生成所需要的附加代码。http:/中国十大品牌IT教育机构QT核心技术:信号槽观察者模式类型安全的回调方式信号和槽是多对多的关系信号和槽是一种松耦合在QObject中实现http:/中国十大品牌IT教育机构QT核心技术:信号槽信号信号 -当被观察类内部发生了观察者感兴趣的事件时,信号用来通知观察者如:一个QPushButton按键按下 一个异步处理事件处理完成 QSlider值发生改变等信号是由元对象系统自动实现的成员函数,开发者只需要申明信号函数即可。信号

12、使用emit关键字发射如:emit clicked();emit someSignal(7,“Hello”);http:/中国十大品牌IT教育机构QT核心技术:信号槽信号信号当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一 个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号-槽机制完全独立于任何GUI事件循环。只有当所有的槽返回以后发射函数(emit)才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定 的,我们不

13、能人为地指定哪个先执行、哪个后执行。http:/中国十大品牌IT教育机构QT核心技术:信号槽信号信号信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。例如,下面定义了三个信号:Q_OBJECTsignals:void mySignal();void mySignal(int x);void mySignalParam(int x,int y);从形式上讲信号的声明与普通的C+函数是一样的,但是信号却没有函数体定义,另外,信号的返回类型都是void,不要指望能从信号返回什么有用信息。信 号由moc自动产生,它们不应该在.cpp文件中实现。htt

14、p:/中国十大品牌IT教育机构QT核心技术:信号槽槽槽槽是普通的C+成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。槽的存取权限决定了谁能够与其相关联。同普通的C+成员函数一样,槽函数也分为三种类型,即public slots、private slots和protected slots。槽的声明也是在头文件中进行的。例如,下面声明了三个槽:public slots:void mySlot();void mySlot(int x);void mySignalParam(int x,int y)

15、;http:/中国十大品牌IT教育机构QT核心技术:信号槽信号和槽的实现class NewClass:public QObjectQ_OBJECTQ_OBJECT/Meta-object file needed/Code convention recommends Q_OBJECT use always,/otherwise qobject_cast failssignals:signals:/Implementation in the meta-objectvoid newSignal(int myInt,QString myString);public slots:public slots

16、:/Slots are implemented as normal member functionsvoid newSlot(int i,QString s);http:/中国十大品牌IT教育机构QT核心技术:信号槽信号和槽的连接信号和槽必须连接后,才能使得槽能接收到相应的信号 bool success=QObject:connect(senderObject,SIGNAL(valueChanged(int),observerObject,SLOT(display(int);http:/中国十大品牌IT教育机构QT核心技术:信号槽信号与槽断开连接信号与槽断开连接signal和slot的断开连接

17、 断开与一个对象的任何signal的任何连接 discount (myObject);断开与一个signal的任何连接 discount (myObject,SIGNAL(mySignal();断开一个指定的接受者 discount (myObject,0,SIGNAL(mySignal(),0);http:/中国十大品牌IT教育机构QT核心技术:信号槽http:/中国十大品牌IT教育机构标准C+编译http:/中国十大品牌IT教育机构QT元对象编译器元对象编译器MOC编译过程http:/中国十大品牌IT教育机构QT编程-QtCoreQtCore是Qt的心脏、所有的其它模块都依赖它QtCore

18、提供 Basic types Memory management QObject base class Parent/Child relationship Signal/Slot mechanism Property systemhttp:/中国十大品牌IT教育机构QT编程-QtCore基本类型int,bool,double,char(C+数据类型)QString(string类型)QList(动态数组)QStringList(代替QList)http:/中国十大品牌IT教育机构QT编程-QtCore其它核心类 QDate,QDateTime Can be compared,converted

19、 to strings QChar 16-bit Unicode character QString Unicode character string.Can be resized,may contain 8-bit 0 terminating strings or binary data QByteArray-Used instead of QString,when memory conservation is important(Qt for embedded Linux)QEventLoop Used to enter and exit event loop QEvent Base cl

20、ass for all events in Qt QHash Template providing a hash-table-based dictionary QHash-Very fast value lookuphttp:/中国十大品牌IT教育机构QT编程-QtCore其它核心类 QLibrary Used to load dynamic libraries and resolve symbols in libraries QQueue Template class implementing a FIFO queue QPoint,QRect Rectangle is defined us

21、ing the top left and bottom right QPoints QTimer One shot or periodic 1 ms timer(where applicable)QVariant Union of the common Qt types QVector Template class for dynamic arrays(flat),QLinkedList more efficient,if many insertion and deletion operations needed Iterator classes Java(QVectorIterator)an

22、d STL-like(QVector:iterator)iterators existhttp:/中国十大品牌IT教育机构QT编程-QtCore创建对象从QObject继承的对象使用new在堆上分配如:QLabel*label=new QLabel(”Some Text”,parent);不是从QObject继承的对象分配在栈上如:QStringList list;QColor color;例外:QFile和QApplication(从QObject继承)通常分配在栈上,模态对话框通常也分配在栈上。http:/中国十大品牌IT教育机构QT编程-QtCore内存管理所有QObject子对象所有权

23、都传递到父对象由父对象自动删除使用new在堆上分配手动删除子对象时,该对象会通知父对象,所以不会产生两次删除问题所有没有父对象的对象需手动删除为避免产生问题,在栈上分配该对象为一个好主意http:/中国十大品牌IT教育机构QT编程-QtCore有何问题?#include#include#include int main(int argc,char*argv)QApplication hwApp(argc,argv);QLabel hwLabel(Hello world);QWidget window;hwLabel.setParent(&window);window.show();return

24、 hwApp.exec();http:/中国十大品牌IT教育机构QT编程-QtGuiWindows 一个widget就是一个窗口(除非其有父对象),Qt提供一个QMainWindow类,使用QDesigner设计界面。http:/中国十大品牌IT教育机构QT编程-QtGui菜单QAction*actionNew=new QAction(MainWindow);actionNew-setObjectName(QString:fromUtf8(actionNew);QIcon icon;icon.addPixmap(QPixmap(QString:fromUtf8(:/:/images/image

25、s/file-16.png),QIcon:Normal,QIcon:Off);actionNew-setIcon(icon);menubar-addAction(menuFile-menuAction();/QMenuBarmenuFile-addAction(actionNew);/QMenuQObject:connect(actionExit,SIGNAL(triggered(),MainWindow,SLOT(close();http:/中国十大品牌IT教育机构QT编程-QtGui工具栏QToolBar*fileToolBar;fileToolBar=new QToolBar(MainW

26、indow);fileToolBar-setObjectName(QString:fromUtf8(fileToolBar);fileToolBar-addAction(actionOpen);http:/中国十大品牌IT教育机构QT编程-QtGui显示部件(Display Widgets)文本标签(Labels)文本浏览(Text Browsers)LCD数字显示进度条(Progress Bar)等等.http:/中国十大品牌IT教育机构QT编程-QtGui输入、选择部件(Input&Select Widgets)按钮(push buttons)选择按钮(selection buttons)

27、文本输入(Text Input)旋转输入盒(spin boxes)刻度盘(Dial)滚动条(scroll bars)滑动条(sliders)等等.http:/中国十大品牌IT教育机构QT编程-QtGui分组、编排部件(Group&Layout Widgets)http:/中国十大品牌IT教育机构QT编程-QtGui部件动作(Action Widgets)QMainWindowMenusMenu itemsInner menusTool barsTool bar items每个菜单或工具栏项都和一个动作(QAction)相关Text,icon http:/中国十大品牌IT教育机构QT编程-QtG

28、ui对话框QInputDialog单行输入QMessageBox消息显示QProgressDialog进度显示QDialog所有对话框的基类QColorDialogQFileDialogQFontDialog http:/中国十大品牌IT教育机构QT Creator集成开发环境http:/中国十大品牌IT教育机构QT实验-按钮、信号和槽http:/中国十大品牌IT教育机构QT实验 菜单http:/中国十大品牌IT教育机构QT实验 工具栏http:/中国十大品牌IT教育机构QT实验 进度条http:/中国十大品牌IT教育机构QT实验 -计算器http:/中国十大品牌IT教育机构QT实验 -音乐编

29、程http:/中国十大品牌IT教育机构QT实验 -网络编程使用QTcpServer和QTcpSocket进行TCP通讯QTcpServer进行服务端接入管理QTcpServer:listen()设置服务端QTcpServer:newConnection 信号,新客户端接入QTcpServer:nextPendingConnection 接受接入并生成通讯 QTcpSocketQTcpSocket网络通讯socketQTcpSocket:connectToHost 连接到主机QTcpSocket:read接收数据QTcpSocket:write发送数据http:/中国十大品牌IT教育机构QT实验 -网络编程http:/中国十大品牌IT教育机构QT实验 地址簿http:/中国十大品牌IT教育机构QT实验 绘图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁