17实验十七+Linux环境下Qt编程实验.pdf
《17实验十七+Linux环境下Qt编程实验.pdf》由会员分享,可在线阅读,更多相关《17实验十七+Linux环境下Qt编程实验.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验十七实验十七 Linux 环境下环境下 Qt 编程实验编程实验 一、实验目的一、实验目的 1、掌握简单的 Linux 应用程序的编程;2、了解嵌入式 Linux GUI 编程环境;3、掌握 Qt 程序设计方法;二、实验内容二、实验内容 1、使用 Qt 类库编写 helloworld 程序;2、使用交叉编译工具编译 helloworld 程序;3、下载并调试 helloworld 应用程序;三、实验设备三、实验设备 1、硬件:1、硬件:PC 机;DM2410 实验系统;串口线;机对机网线;2、软件:2、软件:PC 机操作系统(WINDOWS2000,REDHAT LINUX);Linux 下
2、 ARM GCC 交叉编译环境;实验系统附带文件;tmake 软件包;Qt 移植实验中的安装的共享类库软件包;四、预备知识四、预备知识 1、C 语言的基础知识;2、程序调试的基础知识和方法;3、Linux 的基本操作。五、基础知识五、基础知识 Qt 是用来开发多平台 GUI 和应用程序的 C+工具包。它除了提供 C+类库之外,还提供了很多工具,使得开发更加快速容易。Qt 支持多平台和国际化。因此,Qt 开发出来的程序有更强的适应性。Qt C+工具包自从 1995 年开始就已经成为许多商业软件的核心。Qt 被很多公司使用,如:AT&T,IBM,NASA,Xerox 和其他的一些小公司和组织。在保
3、持易用性和强大功能的前提下,Qt 3.1 增加了很多重要的函数和新的类。Qt 的类尽可能的降低开发者的工作量,并且提供统一的接口以利于学习,Qt 是完全面向对象的。1、Qt 概要 Qt 包含了丰富的部件(在 Windows 术语中叫控件),这些部件提供了一些标准的功能。Qt 引进了一种创造性的内建对象通信机制-信号和槽,来代替过去不安全的回调技术。Qt 还提供了传统的事件模型来处理鼠标按下,键盘敲击等事件。Qt 多平台应用可以使用现代程序设计需要的所有用户界面功能,如:菜单,上下文菜单,拖放,和 可停靠工具栏等。直观的命名规则和统一的设计方法简化了程序的设计。Qt 提供了一个视觉化的用户界面设
4、计工具-Qt Designer。它支持 Qt 强大的布局功能。它可以用来设计 GUI 或者 通过内建的 C+代码编辑器创建一个完整的程序。Qt 可以很好的支持二维和三维的图形。它是平台无关 OpenGL 设计 GUI 工具包的事实标准。Qt 可以使用标准的数据库创建平台无关的数据库应用。它内建了很多数据库的驱动,如:Oracle,Microsoft SQL Server,Sybase Adaptive Server,PostgreSQL,MySQL,和 ODBC-compliant 等。Qt Designer 完全整合了 Qt 的数据库功能,因此它可以提供数据库资料预览。包含了数据库的 Qt
5、相关部件,内建和自定制的部件都可以增加数据感知功能。利用 Qt 的风格和主题,Qt 在很多支持的平台上具有本地外观。一份源代码,只需要重新编译就可以运行于 Windows(95,98,NT4,ME,2000,XP),Mac OSX,Linux,Solaris,HP_UX 和其他支持 X11 的各种 Unix 系统。Qt 程序也可以运行于嵌入 Qt 的系统。Qt 的 qmake 工具可以生成于目标平台相适应的 makefiles 或者.dsp 文件。许多用户在单一平台下使用 Qt 开发,如:Windows,Mac OS X 和 Unix 系统。既然Qt 的体系结构利用了平台底层的属性,所以它在特
6、定的平台下会支持该平台特有的属性,例如:在 Windows 下支持 ActiveX,在 Unix 下支持 Motif。Qt 使用 Unicode 并且提供了大量的国际化支持。Qt 提供 QtLinguist 和 其它的一些工具来支持翻译。应用程序的文本可以很容易的使用和混合许多 Unicode 支持的语言,如:阿拉伯文,中文,英文,希伯莱文,日文,俄文等。Qt 为许多特定的领域提供了特定的类。例如:XML 模块包括了 SAX 和 DOM 解析器。通过使用与 STL 兼容的 Qt 集成类,对象可以保存在内存中。通过标准的协议,Qt 的输入输出和网络类支持本地和远程的文件处理。通过使用插件和动态库
7、,Qt 应用程序可以扩展他们的功能。插件提供了额外的解码器,数据库驱动,图像格式,风格和部件等。动态库可以提供没有范围约束的功能。这些插件和动态库作为产品来出售。Qt 是一个被广泛使用的成熟的 C+工具包。除了在商业上的应用之外,免费版本的Qt 还是 Linux 桌面环境的基础。Qt 的多平台开发系统,视觉化的开发方式,和高效的 API将使得应用程序的开发更轻松,更具有乐趣。在线参考:http:/ Qt 具有一系列丰富的部件(按钮,卷轴等)可以满足很多应用。如果有特殊的需要,你可以很容易和灵活派生出子类。Qt 提供了很多部件。所谓部件就是一个视觉元素,它们做和在一起来构成用户界面。按钮,菜单,
8、卷轴,消息窗口和 应用程序窗口都是部件的例子。Qt 的部件并不严格区分控件和容器;所有的部件即可以用作控件有可以用作器。通过继承现有的 Qt 部件可以很容易的定制自己的部件。当然在极少数情况下,为了特殊的应用,有可能要重头开始创建自己的部件。部件是 QWidget,它的子类或者由这些子类创建的自定制类的实例。一个部件可以包含很多子部件。这些子部件显示在父部件的区域内。一个没有父部件的部件我们称之为顶层部件(如一个窗口),它一般会在桌面环境的任务栏上占据一个位置。任何部件都可以使顶层部件,任何部件都可以成为其他部件的子部件。布局管理器会自动的安排子部件在父部件区域中的位置,当然你也可以手动来安排
9、。当父部件无效,隐藏或者被删除的时候,这些动作也会影响相应的子部件。标签,消息框,工具提示等可以使用不止一种的颜色,字体和语言。例如:通过使用 HTML 的子集,Qt 的文本部件就可以显示多语种的文本。图图 17-1 Qwidget 类层次的一个片段类层次的一个片段 3、信号和槽 Qt 的内部对象通讯使用信号和槽机制。信号和槽机制很容易理解和使用,并且被Qt Designer 支持。GUI 程序需要相应用户的动作。例如,当用户点击一个菜单项或者工具栏按钮的时候,程序就会执行相应的代码。一般情况下,我们希望任何类型的对象之间可以互相通讯。编程人员需要把相应的事件和代码联系起来。以前的工具包使用了
10、一种回调机制,这种机制不是类型安全的,它不够强壮并且不是面向对象的。Trolltech 提出了“信号和槽”的解决方案。它是一种强大的内部对象通讯机制,可以完全代替以前工具包使用的回调和 Message Maps 机制。信号和槽非常灵活,完全面向对象并且是使用 C+来实现的。使用以前的回调机制,为了把一个按钮和一段执行代码联系起来,则必须给这个按钮传递一个函数指针。这样,当这个按钮被按下时,这个函数就会被调用。但是以前的工具包并不保证传给这个函数的参数类型是正确的,这样就很容易发生问题。此外,回调机制把一个 GUI 元素和一个函数紧密的联系在一起,这样就很难独立的开发一个类。图图 17-2 信号
11、和槽连接的抽象图信号和槽连接的抽象图 Qt 的信号和槽却不同,当一个事件发生时,Qt 部件会发送一个信号。例如,当一个按钮被按下的时候,它就可能发送clicked信号。编程人员可以创建一个函数(槽)并调用 connect()函数把这个槽和信号联系起来。Qt 的信号和槽机制并不要求一个类知道另一个类的信息,因此我们可以开发出高度可重用的类。信号和槽是类型安全的,当类型不匹配的时候,它会给出警告。例子,假设把退出按钮的 clicked()信号和程序的 quit()槽联系在一起,那么当用户点击退出按钮将终止程序。代码可能如下:connect(button,SIGNAL(clicked(),qApp,
12、SLOT(quit();信号和槽之间的联系可以在程序运行期间动态的添加和删除。信号和槽的实现扩展了 C+语法并且充分利用了 C+的面向对象的性质。信号和槽是类型安全的,可以重载或者重新实现,而且它们在类中可以定义为公有的,保护的或者私有的。4、GUI 程序 用 Qt 可以既快速又容易的创建 GUI 程序,你可以手工编写代码也可以通过视觉化的编程工具 Qt Designer 来生成。Qt 提供了创建 GUI 程序所需的所有类和函数。你可以使用 Qt 来创建带有菜单,工具栏和状态栏的基于视窗的程序,也可以创建带有按钮和标签的基于对话框的程序。Qt支持单文档界面(SDI)和多文档界面(MDI)。此外
13、,Qt 也支持拖放和剪贴。工具栏可以在其范围内任意移动,拖放到其他地方或者处于飘浮状态。这些功能是内建的,你不需要添加额外的代码。当然,如果需要你可以改变它的性质。Qt 简化了程序的设计。例如:如果菜单项,工具按钮和快捷键执行同一个动作,那么这个动作的实现代码可以只要一份。Qt 还提供了消息框和一系列的标准对话框来与用户交互。如:选择文件,文件夹,字体和颜色等。实际上,你有可能只是简单的使用 Qt 的一个语句就可以实现这个功能。六、实验说明六、实验说明 本实验通过一个简单基本的例子来阐述 Qt 应用程序的基本结构。实验 Hello world 程序中将显示有一段飘动的彩色的“Hello Wor
14、ld”文字。实验代码如下:?hello.pro 文件内容如下:/*hello.pro*/TEMPLATE=app CONFIG =qt warn_on release HEADERS=hello.h SOURCES=hello.cpp main.cpp TARGET =hello?main.cpp 文件代码如下:/*main.cpp*/#include hello.h#include /*The program starts here.It parses the command line and builds a message string to be displayed by the He
15、llo widget.*/int main(int argc,char*argv)QApplication a(argc,argv);QString s;for(int i=1;iargc;i+)s+=argvi;if(iargc-1)s+=;if(s.isEmpty()s=Hello,World;Hello h(s);h.setCaption(Qt says hello);QObject:connect(&h,SIGNAL(clicked(),&a,SLOT(quit();h.setFont(QFont(times,32,QFont:Bold);/default font h.setBack
16、groundColor(Qt:white);/default bg color a.setMainWidget(&h);h.show();return a.exec();?hello.h 头文件代码如下:/*hello.h*/#ifndef HELLO_H#define HELLO_H#include class Hello:public QWidget Q_OBJECT public:Hello(const char*text,QWidget*parent=0,const char*name=0);signals:void clicked();protected:void mouseRele
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 17 实验 十七 Linux 环境 Qt 编程
限制150内