Qt程序开发完全手册.doc_第1页
Qt程序开发完全手册.doc_第2页
Qt程序开发完全手册.doc_第3页
Qt程序开发完全手册.doc_第4页
Qt程序开发完全手册.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目目 录录 第一章 LINUX 图形用户界面 GUI 介绍 2 1 1 常用 GUI 介绍 2 1 2 关于 QT 3 1 3 QT EMBEDDED简介 4 第二章 QT 的安装 5 2 1 设置环境变量 6 2 2 使用脚本ARM BUILD 编译 QT 7 第三章 QT 的编程 7 3 1 QT EMBEDDED 开发一个嵌入式应用的过程 7 3 2 HELLO QT的初探 7 3 2 1 建立工程文件 7 3 2 2 产生源代码 12 3 2 3 添加 main cpp 文件 12 3 2 4 修改 hello pro 文件 13 3 2 5 生成 MakeFile 文件 14 3 2 6 修改 hello cpp 文件 15 3 3 将HELLO 移植到 JXARM9 2410 实验箱上 18 3 3 1 重新生成修改 Makefile 18 3 3 2 制作启动器 22 3 3 3 重新生成 cramfs 文件 23 3 3 4 烧写重新生成的 cramfs 文件到 JXARM9 2410 实验箱 23 2 第一章第一章 Linux 图形用户界面图形用户界面 GUI 介绍介绍 所谓 GUI Graphics User Interface 就是图形用户界面 图形用户界面的广泛 流行时当今计算机技术的重大成就之一 它极大的方便了非专业用户的使用 人们不需要死记硬背大量的命令 而可以通过窗口 菜单方便的操作 随着手持式设备的硬件条件的提高 嵌入式系统对轻量级 GUI 的需求越来 越迫切 近来的市场需求显示 越来越多的嵌入式系统 包括 PDA 机顶盒 DVD VCD 播放机 WAP 手机等等系统均要求提供全功能的 Web 浏览器 这 包括 HTML 4 0 的支持 JavaScript 的支持 甚至包括 Java 虚拟机的支持 而这 一切均要求有一个高性能 高可靠的 GUI 的支持 另外 在工业实时控制系统 中对 GUI 的要求也越来越高 目前许多这类系统采用比较简单的手法实现 GUI 但是 在出现 Linux 系统之后 许多工业控制系统开始采用 Linux 作为操 作系统 并在其上加入 GUI 实现 嵌入式 GUI 就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用 户界面系统 所以嵌入式 GUI 在实际应用中 有如下基本要求 轻型 占用源少 高性能 高可靠性 可配置 1 1 常用常用 GUI 介绍介绍 1 Linux 下的 GUI X Window X Window 是 Linux 以及其他类 UNIX 系统的标准 GUI X Window 系统采 用标准的客户 服务器体系结构 具有可扩展性好 可移植性好等优点 但该系 统的庞大 累赘和低效率也是大家所共知的 为了获得应用程序的可移植性 许多厂家都试图通过对 X Window 系统的 紧缩开发 使之能够在嵌入式系统上运行 国外已经开发出了大小约为 800K 的 X 服务器 这对西方国家来说基本能够满足嵌入式系统的需求了 但该系统 的源代码尚不开放 从而很难进行本地化开发 3 2 Linux 下的 GUI MicroWindows MicroWindows 是一个开放源码的项目 目前由美国一家公司在主持开发 该项目的开发非常活跃 国内也有人参与了其中的开发 并编写了 GB2312 等 字符集的支持 该项目的主要特色在于提供了比较完善的图形功能 包括一些高级的功能 比如 Alpha 混合 三维支持 TrueType 字体支持等 但作为一个窗口系统 该 项目提供的窗口处理功能还需要进一步完善 比如控件或构件的实现还很不完 备 键盘和鼠标等的驱动还很不完善 3 Linux 下的 GUI OpenGUI OpenGUI 在 Linux 系统上存在已经很长时间了 最初的名字叫 FastGL 只 支持 256 的线性显存模式 但目前也支持其他显示模式 这个库是用 C 编写 的 只提供 C 接口 4 Linux 下的 GUI MiniGUI MiniGUI 是一种面向嵌入式系统或者实时系统的图形用户界面支持系统 它主要运行于 Linux 控制台 实际可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容系统上 MiniGUI 同时也是国内最早出现的几个自由软件项目之一 是由中国人开 发的 GUI 5 Linux 下的 GUI QT Embedded QT Embedded 是著名的 QT 库开放商正在进行的面向嵌入式系统的 QT 版本 这个版本的主要特点是可移植性较好 许多基于 QT 的 X Window 程序可以非 常方便地移植到嵌入式版本 但是该系统不是开放源码的 如果你要使用这个 库 可能需要支付昂贵的授权费用 1 2 关于关于 Qt Qt 是 Trolltech 公司的一个标志性产品 Trolltech 公司 1994 年成立于挪 威 但是公司的核心开发团队已经在 1992 年开始了 Qt 产品的研发 并于 1995 年推出了 Qt 的第一个商业版 直到现在 Qt 已经被世界各地的跨平台软件 开发人员使用 而 Qt 的功能也得到了不断的完善和提高 4 Qt 是一个支持多操作系统平台的应用程序开发框架 它的开发语言是 C Qt 最初主要是为跨平台的软件开发者提供统一的 精美的图形用户编程接 口 但是现在它也提供了统一的网络和数据库操作的编程接口 正如微软当年 为操作系统提供了友好 精致的用户界面一样 今天由于 Trolltech 的跨平台 开发框架 Qt 的出现 也使得 UNIX LINUX 这些操作系统以更加方便 精美 的人机界面走近普通用户 Qt 是以工具开发包的形式提供给开发者的 这些工具开发包包括了图形设 计器 Makefile 制作工具 字体国际化工具 Qt 的 C 类库等等 Qt 的类库 也是等价于 MFC 的开发库 但是 Qt 的类库是支持跨平台的类库 Qt 支持的操作系统平台 MS Windows 95 Windows 98 WindowsNT 4 0 Windows 2000 Windows XP Unix X11 Linux Sun Solaris HP UX Compaq True64Unix IBM AIX SGI IRIX 和很多其它 X11 平台 Macintoshi Mac OSX 嵌入式的 包含有 FramBuffer 的 Linux 平台 1 3 Qt Embedded 简介简介 Qt Embedded 是一个为嵌入式设备上的图形用户接口和应用开发而订做的 C 工具开发包 它通常可以运行在多种不同的处理器上部署的嵌入式 Linux 操作系统上 除了类库以外 Qt Embedded 还包括了几个提高开发速度的工具 使用标准 的 Qt API 我们可以非常熟练的在 Windows 和 Unix 编程环境里开发应用程序 Qt Embedded 是一组用于访问嵌入式设备的 Qt C API Qt Embedded 的 Qt X11 Qt Windows 和 Qt Mac 版本提供的都是相同的 API 和工具 Qt Embedded 还包括类库以及支持嵌入式开发的工具 Qt Embedded 提供了一种类型安全的被称之为信号与插槽的真正的组件化编 5 程机制 这种机制和以前的回调函数有所不同 Qt Embedded 还提供了一个通 用的 widgets 类 这个类可以很容易的被子类化为客户自己的组件或是对话框 针对一些通用的任务 Qt 还预先为客户定制了像消息框和向导这样的对话框 Qt Embedded 包括了它自身的窗口系统 并支持多种不同的输入设备 Qt 的图形设计器 designer 可以用来可视化地设计用户接口 设计器中有一 个布局系统 它可以使你设计的窗口和组件自动根据屏幕空间的大小而改变布 局 开发者可以选择一个预定义的视觉风格 或是建立自已独特的视觉风格 使用 UNIX LINUX 操作系统的用户 可以在工作站上通过一个虚拟缓冲帧的应 用程序仿真嵌入式系统的显示终端 Qt Embedded 也提供了许多特定用途的非图形组件 例如国际化 网络和数 据库交互组件 Qt Embedded 是成熟可靠的工具开发包 它在世界各地被广泛使用 除了在 商业上的许多应用以外 Qt Embedded 还是为小型设备提供的 Qtopia 应用环境 的基础 Qt Embedded 以简洁的系统 可视化的表单设计和详致的 API 让编写代码 变得愉快和舒畅 第二章第二章 Qt 的安装的安装 一般来说 居于 Qt Embedded 开发的应用程序最终会发布到安装有嵌入式 Linux 操作系统的小型设备上 需要的软件包 tmake 工具安装包 生成 Qt Embedded 应用工程的 Makefile 文件 Qt Embedded 安装包 Qt Embedded 安装包 Qt 的 X11 版的安装包 Qt 的 X11 版的安装包 它将产生 x11 开发环境 所需要的两个工具 公司提供的软件包如下 6 2 1 设置环境变量设置环境变量 在 PC 的 Linux 的终端执行如下命令 然后打开 gedit 编译器后 修改内容 如下红色部分所示 gedit etc ld so conf home cvtech jx2410 qt2410 arm qt lib home cvtech jx2410 qt2410 arm qtopia lib usr kerberos lib usr X11R6 lib usr lib sane usr lib qt 3 1 lib usr lib mysql usr lib qt2 lib 7 2 2 使用脚本使用脚本 arm build 编译编译 Qt 这里假设以上的软件包已经全部拷贝到 PC 的 Linux 中 且存放目录为 home cvtech jx2410 qt2410 在 PC 的 Linux 的终端执行如下命令 cd home cvtech jx2410 qt2410 arm build 然后就开始编译 Qt 了 注意 这里我使用的是 Redhat9 0 然后是完全安装的 RedHat9 0 完全安 装大概需要 4 8G 的空间 如果不完全安装会导致编译出错 原因是缺少必要的 库导致的 第三章第三章 Qt 的编程的编程 3 1 Qt Embedded 开发一个嵌入式应用的过程开发一个嵌入式应用的过程 选定嵌入式硬件平台 在工作的机器上安装 Qt Embedded 工具开发包 根据目标硬件平台 交叉编译 Qt Embedded 的库 在工作的机器上进行应用程序的编码 调试 根据目标硬件平台 交叉编译嵌入式应用 在嵌入式硬件设备上调试运行应用 发布嵌入式应用 3 2 hello Qt 的初探的初探 第一次 Qt 程序实现一个功能 就是按下我们设置的 user 按钮后 显示出 hello cvtech 的打印信息 按下 close 按钮后 退出该应用程序 8 3 2 1 建立工程文件建立工程文件 在 PC 的 Linux 的 home cvtech jx2410 examples qt 目录下新建一个名为 hello 的目录 命令如下 cd home cvtech jx2410 examples qt mkdir hello 建立工程文件 hello pro 命令如下 progen t app t o hello pro 在后台启动 QT 的设计器 命令如下 home cvtech jx2410 qt2410 arm qt bin designer hello dlg a setMainWidget dlg show return a exec 3 2 4 修改修改 hello pro 文件文件 在 PC 的 Linux 的终端中 输入命令如下 vi hello pro 修改内容如下 TEMPLATE app CONFIG qt warn on release HEADERS hello h SOURCES hello cpp main cpp INTERFACES 15 3 2 5 生成生成 MakeFile 文件文件 在 PC 的 Linux 的终端中 输入命令如下 qmake hello pro 此时得到的 Makefile 文件编译出来的 hello 是在 PC 的 Linux 上可以运 行的 make 得到可执行文件 hello 在 PC 的 Linux 的终端中 输入命令如下 hello 得到界面如下 16 3 2 6 修改修改 hello cpp 文件文件 为了实现前面讲到的按下 open 按钮 出现 hello cvtech 的打印信息 我 们还需要修改 hello pro 文件 以下为源码内容 Form implementation generated from reading ui file hello ui Created Thu Nov 12 10 38 17 2009 by The User Interface Compiler uic WARNING All changes made in this file will be lost include hello h include include include include include include Constructs a hello which is a child of parent with the name name and widget flags set to f The dialog will by default be modeless unless you set modal to TRUE to construct a modal dialog 17 hello hello QWidget parent const char name bool modal WFlags fl QDialog parent name modal fl if name setName hello resize 312 280 setCaption tr Hello Cvtech cButton new QPushButton this cButton cButton setGeometry QRect 180 190 91 31 cButton setText tr close oButton new QPushButton this oButton oButton setGeometry QRect 40 190 91 31 oButton setText tr open TLabel new QLabel this TLabel TLabel setGeometry QRect 30 60 250 51 QFont TLabel font TLabel font TLabel font setPointSize 30 TLabel setFont TLabel font TLabel setText tr signals and slots connections connect oButton SIGNAL clicked this SLOT open connect cButton SIGNAL clicked this SLOT close Destroys the object and frees any allocated resources 18 hello hello no need to delete child widgets Qt does it all for us Main event handler Reimplemented to handle application font changes bool hello event QEvent ev bool ret QDialog event ev if ev type QEvent ApplicationFontChange QFont TLabel font TLabel font TLabel font setPointSize 30 TLabel setFont TLabel font return ret void hello open TextLabel1 setText tr Hello Cvtech qWarning hello open Not implemented yet 在上面的 open 函数中添加了对按下 open 按钮响应的处理功能 即按下 按钮后 打印出 Hello Cvtech 这句话到主界面中 修改完成后保存 重新 编译 make 19 再次执行 hello 按下 open 按钮 结果如图 3 3 将将 hello 移植到移植到 JXARM9 2410 实验箱上实验箱上 3 3 1 重新生成修改重新生成修改 Makefile 因为是要在实验箱上运行 那么编译器也必须是交叉编译 就需要新的 Makefile 文件 使用 tmake 产生 Makefile 在 PC 的 Linux 终端中输入命令 tmake o Makefile hello pro 修改 Makefile 文件如下 CC usr local arm 2 95 3 bin arm linux gcc CXX usr local arm 2 95 3 bin arm linux g QTDIR home cvtech jx2410 qt2410 arm qt QPEDIR home cvtech jx2410 qt2410 arm qtopia CFLAGS pipe Wall W O2 DNO DEBUG CXXFLAGS pipe DQWS fno exceptions fno rtti Wall W O2 DNO DEBUG INCPATH I QTDIR include I QPEDIR include LINK usr local arm 2 95 3 bin arm linux g 20 LFLAGS LIBS SUBLIBS L QTDIR lib L QPEDIR lib L usr local arm 2 95 3 lib lqte lqpe lqtopia lm MOC QTDIR bin moc UIC QTDIR bin uic TAR tar cf GZIP gzip 9f Files HEADERS hello h SOURCES hello cpp main cpp OBJECTS hello o main o INTERFACES UICDECLS UICIMPLS SRCMOC moc hello cpp OBJMOC moc hello o DIST TARGET hello INTERFACE DECL PATH Implicit rules SUFFIXES cpp cxx cc C c cpp o 21 CXX c CXXFLAGS INCPATH o cxx o CXX c CXXFLAGS INCPATH o cc o CXX c CXXFLAGS INCPATH o C o CXX c CXXFLAGS INCPATH o c o CC c CFLAGS INCPATH o Build rules all TARGET TARGET UICDECLS OBJECTS OBJMOC LINK LFLAGS o TARGET OBJECTS OBJMOC LIBS moc SRCMOC tmake Makefile Makefile hello pro tmake hello pro o Makefile dist 22 TAR hello tar hello pro SOURCES HEADERS INTERFACES DIST GZIP hello tar clean rm f OBJECTS OBJMOC SRCMOC UICIMPLS UICDECLS TARGET rm f core Sub libraries Combined headers Compile hello o hello cpp hello h main o main cpp hello h moc hello o moc hello cpp hello h moc hello cpp hello h MOC hello h o moc hello cpp 修改完成后保存 重新编译 make 得到新的 hello 这时候用 hello 是不 能运行的 因为我们的编译器是 arm 的编译器 下面我们需要把我们得到的 23 hello 放到实验箱的 QT 中去运行 3 3 2 制作启动器制作启动器 注意 这里用到的 QT 的文件系统是光盘中 flashupdate 下的 pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论