已阅读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 publicQObject Q OBJECTpublic Student myMark 0 intmark const returnmyMark 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 4 5QApplicationapp 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 使用qmake生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防心理疏导咨询课件
- 硅集成电路芯片工厂设计规范2025年
- 加气员工作总结
- 患者手术风险评估
- 地龙的炮制方法
- 颈椎病常见症状及护理技能
- 2025高中语文第1单元5人应当坚持正义试题含解析部编版选择性必修中
- 介绍我的家乡沿河
- 2025年人工智能基础知识知识考核试卷及答案
- 2025年焊工高级证考试题库及答案
- 高中物理必修一《牛顿第二定律》说课稿
- 高一英语完形填空专项训练100(附答案)及解析
- 客舱与驾驶舱安全规则讲解
- DL∕T 1052-2016 电力节能技术监督导则
- 输液港的使用及维护(精制手工图文)
- DL-T-5743-2016水电水利工程土木合成材料施工规范
- 常用生化检查
- 冬季绿化养护工作计划
- 2024中国绿色甲醇产业研究与前景展望-云道资本
- 项目干系人管理与沟通计划
- 政府基金公司招聘笔试题
评论
0/150
提交评论