QT-GUI程序设计.ppt





《QT-GUI程序设计.ppt》由会员分享,可在线阅读,更多相关《QT-GUI程序设计.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、什么是QT?pQt 是一个用是一个用C+编写的跨平台开发编写的跨平台开发框架,它包括跨平台类库、集成开框架,它包括跨平台类库、集成开发工具和跨平台发工具和跨平台 IDE。l一次编码,只需重新编译,便可在不同桌面,不同平台上部署l速度快,不需要虚拟机l设计界面漂亮(有人认为比VISUAL C+强的多,而且简单)pQT用途l 嵌入式设备l 消费电子l 桌面系统pQT 支持的平台QT用途及支持平台面向对象pQt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。pQt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个
2、元件 之间的协同工作变得十分简单。 QT模块lQt由模块构建l所有的模块都有一个共同的方案,并由相同的API设计思路构建。QtCorePhononQtXmlPatternsQtXmlQtWebKitQtSvgQtSqlQtScriptQtOpenVGQtOpenGLQtNetworkQtMultimediaQtGuiQT常用模块QtCore,Qt4的基本模块的基本模块,定义了其他模块使用的定义了其他模块使用的Qt核心的非核心的非GUI类类,所所有其他的模块都依赖与该模块有其他的模块都依赖与该模块;QtGui,定义了图形用户界面类定义了图形用户界面类;QtNetwork,定义了定义了Qt的网络编
3、程类的网络编程类;QtSql,定义了访问数据库的类;QtSvg,定义了显示和生成SVG(Scalable Vector Graphics)类;QtXml,定义了处理XML(eXtensible Markup Language)语言的类;QtDesigner,定义了扩展Qt设计器(QtDesigner)的类,该模块使得程序员能够为Qt设计器创建自定义的Qt窗口部件插件(widget plugins)和创建能够访问Qt设计器组件的类;QtUiTools,定义了在应用程序中直接处理ui(User Interface)文件的类,它使得应用程序能够在运行时使用ui文件构建用户界面;QtAssistant
4、,为应用程序提供了加载Qt助手(Qt Assistant)以支持在线帮助(online help)的功能;Qt3Support,定义了同Qt4以前版本Qt3兼容的类,以使得Qt3的程序能够更容易地移植到Qt4;QtTest,定义了对Qt应用程序和库进行单元测试(unit testing)的类.QtScript,该模块提供了对脚本的支持.QT C+扩展pQt 对 C+ 的扩展主要是3个方面:l 元对象系统 Qt用宏(macros,如signal,slot)和内省(introspection)扩展了C+,包含Q_OBJECT宏的文件(.h, .cpp等),需要 moc 预处理l 资源系统 .qrc
5、 文件 ,需要 rcc 进行预处理 l 界面系统 .ui 文件 ,需要 uic 进行预处理p所有的代码仍然是简明C + +QT目的l从一份代码构建的跨平台应用l简单地(重复)使用API,高开发效率,开放性,使用有趣l根据不同平台的本地观感生成相应的本地应用Windows mac OS Linux/X11商业与开源lLGPL 免费l你的应用程序可以是开源的或者是不开源的l对Qt的修改,必须反馈到社区lGPL 免费l你的应用程序必须是开源的l对Qt的修改,必须反馈到社区l商业的 收费l你的应用程序可以是不开源 的l对Qt的修改,可以不开源QT版本p 时间 win/x11l1996 1.0l1999
6、 2.0l2001 3.0l2005 4.0l现在 4.8p QT 大版本之间不兼容,同一个大版本之间兼容,比如:3.0和4.0不兼容,4.6 和4.7之间是兼容的QT产品lQT/Embedded : Qt/Embedded是一个完整的自包含基于Linux 平台的GUI和嵌入式平台开发工具。包含了早期的版本Qtopia,面向手机、PDA等消费电子产品,不依赖于庞大的Xlib,直接在Linux帧缓冲基础上开发GUI.lQT 桌面版基于Windows、LinuxQT SDK 组成p自4.5版开始,Qt首次以SDK形式发布了Qt套件,并在单独的安装程序中包含了完整的Qt SDK,包括:uQtCrea
7、tor-跨平台IDE Nokia全力打造QtCreator,将以前单独列出的QtDesigner、QtAssistant、QtLinguist全部整合到QtCreator中,作为QtCreator的一部分。QT SDK组成uQtLibrary 是一个拥有超过400C+类,同时不断扩展的库。它封装了用于端到端应用程序开发所需要的所有基础结构。优秀的Qt应用程序接口包括成熟的对象模型,内容丰富的集合类,图形有户界面编程与布局设计功能,数据库编程,网络,XML,国际化,OpenGL集成等。uQtDesigner 是一个功能强大的GUI布局与窗体构造器,能够在所有支持平台上,以本地化的视图外观与认知,
8、快速开发高性能的用户界面。uQtAssistant 是一个完全可自定义,重新分配的帮助文件或文档浏览器,又称作Qt助手。QT SDK组成uQtLinguist 是一套用来消除国际化工作流程中所带来障碍的工具,又称作Qt语言家。uQT 开发工具 qmake -生成.pro文件makefile uic - UICompiler,将ui文件转化成C文件认识的.h文件 moc -是一个用来生成一些与信号和槽相关的底层代码的预编译工具 rcc -编译资源文件为二进制代码QT 安装uSDK获得 从 http:/ Linux/x86版本: qt-sdk-linux-x86-opensource-2010.0
9、4.bin l windows版本: qt-sdk-win-opensource-2010.04.exe QT安装pLinux下安装,建议安装到FC14以后版本l 用root用户登录到系统l 将安装文件上传到linux下l 修改文件属性,改成可执行属性 #chmod 777 qt-sdk-linux-x86-opensource-2010.04.bin #./qt-sdk-linux-x86-opensource-2010.04.binp出现图形画面后,点下一步,直到安装完成,一般会默认装在/opt/qtsdk-2010.04目录下,也可以在安装时制定目录QT安装pLinux下安装完成后修改环
10、境变量在/etc/profile文件末尾加上下面四行: export QTDIR=/opt/qtsdk-2010.04/qtexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHp以上改动注意:以上改动注意: 不论是不论是PATH还是库路径,全要放在原来值的前面,让还是库路径,全要放在原来值的前面,让系统第一个找到新安装的系统第一个找到新安装的QT可执行文件,和可执行文件,和QT库。库。 第一行是qt这个目录所在的路径,第二行是qmake及uic可执行程序的路径,第三行是一个库的路径,编辑完成
11、后,保存,退出。p使环境变量立即生效,执行 #source /etc/profilep确定qt是否可用 #qmake v,看到qt版本信息,说明安装成功QT安装p Windows 下安装l 直接双击qt-sdk-win-opensource-2010.04.exe安装文件,点下一步,系统缺省安装在C:Qt2010.04目录下l 环境变量设置1)编辑Path 补上Qt的bin路径;C:Qt2010.04bin;C:Qt2010.04qtbin;C:Qt2010.04mingwbin即可,其中“X”对应安装Qt的硬盘盘符,我是安装在C盘下的。2) 新建环境变量,名称:QTDIR内容:C:Qt201
12、0.04qt3) 新建环境变量,名称: QMAKESPEC 内容:C:Qt2010.04qtmkspecswin32-g+ QT Cteatorp QtCreator是全新的跨平台集成开发环境(IDE),专为Qt开发人员的需求量身定制。它包括:(1) 高度智能的代码编辑器支持代码高亮以及自动完成功能。 (2)Qt4工程向导(ProjectWizard)使用ProjectWizard,用户可以轻松创建基于控制台控制台的应用程序、GUI应用程序以及C+类库类库等多种类型的工程。 (3) 集成帮助功能在QtCreator中可以查阅相关的Qt文档和示例程序。 (4)集成QtDesigner功能。(5)
13、模块间智能导航,来准确定位文件信息(6)使用qmake进行工程管理。(7)集成调试器 Qt Cteator 主界面pQtCreator的组成QtCreator主要由以下组件构成 菜单(MenuBar) 模式选择器(ModeSelectors) 项目浏览器(ProjectInspector) 代码编辑器(CodeEditor) 输出面板(OutputPane) 边栏(Sidebar) 快速导航面板(QuickOpenPane)pQT Creator的模式选择 欢迎模式(welcom mode) 编辑模式(edit mode) 设计模式(design mode) 调试模式(debug mode)
14、项目模式(projects),完成对项目属性的设置 帮助 模式(help mode)p QT Creator的输出模式1 l构建过程和结果(BuildIssues) 显示与构建相关的信息(如警告信息、错误信息等)。l搜索结果(SearchResults)子面板 提供了执行搜索动作后的结果输出显示,搜索的范围可 以是全局的,也可以是具体局部的。lApplication 应用程序输出的控制台,比如qdebug打印出来的调试信息。l Compile 编译输出子面板 显示编译的错误输出。QT 简单应用实例(1) p 打开Qt creator ,欢迎界面出现两个按钮Open projects、Creat
15、e Project(1)选择Cteate Project(2)选择 Qt C+ Project - Qt Gui Applicationation(3)这里也可以创建其他)这里也可以创建其他类型的工程程序类型的工程程序QT 简单应用实例(2)p点Choose 选择工程所在的目录,同时输入工程的名称C:Qt2010.04qtprojects目录,工程名称为helloqtp点next,下一步QT 简单应用实例(3)p 注意这个地方输入Class Name 和Base Class 选择:p Base Class 可以是QMainWindow QWidget QDialog,即可以使主窗口类,控件类,
16、及对话框类,这里我们选择QMainWindow(也可以选QDialog)p 点next,直到finish完成QT 简单应用实例(4)此时左面一列,处在Design 这个页面上;左面第二列是常用的可视化控件,中间是主窗口,我们可以把控件用鼠标拖动到主界面上。比如我们在主窗口中放一个标签,和一个按钮,如下:IDE最右面的上面是窗口各个部分的控件关系,比如,如果我们不需要菜单的话,我们可以用鼠标右键点击MenuBar,然后选择Remove MenuBarIDE 最右面的下面是当前选中控件关心标签的名称,和标签的TextObjectName LabelText : 输入我们自己的标签:第一个QT程序
17、Hello World !,可以将标签拉大点再在Buttons 里边拉一个按钮上去,将按钮的标签改成OK最后给两个控件设置垂直布局,按住Ctrl 选中两个控件,然后点击工具栏中的三个竖线的布局按钮Lay out Vertical ly ,布局完成.设置控件tab顺序,Edit-Edit tab order.第一个Helloworld程序做好了。选择File -save all 保存。QT 简单应用实例(6)p QT为我们生成了如下文件:Helloqt.pro: 工程文件Mainwindow.ui :控件布局文件,XML形式的文件,最终生成特殊的ui_mainwindow.h头文件Uic o u
18、i_mainwindow.h mainwindow.uiMainwindow.h : 主窗口类声明的头文件Mainwindow.cpp 实现实现mainwindow.h中的主类中的主类Main.cpp : qt 程序的主程序Mainwindow.cpp :主窗口类的实现l所有的代码都在MainWindow.cpp里实现的。l如果想实现窗口里边的控件动作,需要定义信号和槽机制实现(signal - slot),信号和槽机制,是QT编程的主要机制。QT 简单应用实例(7)p Main.cpp#include #include mainwindow.hint main(int argc, char
19、*argv) QApplication a(argc, argv); MainWindow w;/定义的主窗口类的一个实例, w.show(); / 把主窗口显示出来 return a.exec(); / 进入应用类的消息循环l Ui_mainwindows.h中定义中定义setupUI 方法,生成方法,生成Form中定义中定义的窗口控件的窗口控件pMainwindow.cpp#include mainwindow.h#include ui_mainwindow.hMainWindow:MainWindow(QWidget *parent) : QMainWindow(parent), ui(
20、new Ui:MainWindow) ui-setupUi(this);MainWindow:MainWindow() delete ui;编译、运行p 编译:选择菜单Build-Build All 注意点击屏幕输出窗口里的compile output ,查看编译过程中是否有错误,注意看p 运行: 选择菜单Build -Run, 或者直接选择IDE最左面一列的下面Run 按钮;如果程序有输出,选则Application output 输出窗口。 给OK按钮增加一个点击事件的槽函数 p 在Design 画面中,鼠标右键点击OK按钮,出现菜单,然后选择go to slotl选中Clicked(),
21、点击OK按钮,添加槽函数,lMainwindow.h 中添加函数体声明lMianwindow.cpp中增加了空函数体,其中我们添加对程序退出的调用close();void MainWindow:on_pushButton_clicked() this-close();QT跨平台移植p 将刚才的Helloqt 目录传到Linux下的某一个目录,比如说/root/qtproject目录# cd helloqt采用命令行模式编译如下:(1) 先生成Linux下的工程文件,那么原来的工程文件helloqt.pro会改名成helloqt.pro.user命令如下:# qmake project(2) 生
22、成 Linux下的Makefile文件,用qmake 命令#qmake(3) 用Make 命令编译工程文件#make(4) 运行#./helloqtp 点击OK按钮,程序退出p 结论:只要重新编译,我们的代码就可以再Linux下运行,体现了QT的跨平台特性。QT程序设计一般方法 1)、创建并初始化子窗口部件。2)、将子窗口部件放置到布局当中。3)、对Tab的顺序进行设置。4)、放置信号和槽的连接。5)、完成槽的功能完成槽的功能。休息讨论时间QT核心运行机制 Meta-Object System(元对象系统) Signals and Slots(信号和槽) Qts Property System
23、(QT属性系统)元对象系统p元对象系统是QT对C+的一种扩展,它提供了两个关键服务:信号/槽、运行时的类型信息和动态属性系统(内省机制)p元对象系统这样工作:l Q_OBJECT宏声明一些内省函数(metaObject(),TR(),qt_matacall()和少量其他的函数)。这些函数必须在所有的QObject的子类中被实现。l Qt的moc工具负责执行被Q_OBJECT宏声明的函数,同时负责执行所有的信号函数。l QObject的成员函数,例如connect()和disconnect(),使用内省函数来工作元对象系统组成三要素p QObject 类作为每一个需要利用元对象系统的类的基类,Q
24、Object 是大部分Qt 类的基类p Q_OBJECT 宏 定义在每一个类的私有数据段,用来启用元对象功能,比如,动态属性,信号和槽p 元对象编译器moc (the Meta Object Complier), moc 分析C源文件,如果它发现在一个头文件(header file)中包含Q_OBJECT 宏定义,然后动态的生成另外一个C+源文件,这个新的源文件包含 Q_OBJECT 的实现代码,这个新的 C+ 源文件也会被编译、链接到这个类的二进制代码中去,因为它也是这个类的完整的一部分。 元对象数据In addition to providing the signals and slots
25、 mechanism for communication between objects (the main reason for introducing the system), the meta-object code provides the following additional features:qobject.html#metaObject() returns the associated meta-object for the class.qmetaobject.html#className() returns the class name as a string at run
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QT GUI 程序设计

限制150内