Qt程序开发完全手册范本Word文档格式.docx
- 文档编号:16269076
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:18
- 大小:338.18KB
Qt程序开发完全手册范本Word文档格式.docx
《Qt程序开发完全手册范本Word文档格式.docx》由会员分享,可在线阅读,更多相关《Qt程序开发完全手册范本Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
Linux系统之后,许多工业控制系统开始采用Linux作为操作系统,并在其上加入GUI实现。
嵌入式GUI就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。
所以嵌入式GUI在实际应用中,有如下基本要求:
轻型,占用源少
高性能
高可靠性
可配置
1.1常用GUI介绍
1.Linux下的GUI–XWindow
XWindow是Linux以及其他类UNIX系统的标准GUI。
XWindow系统采用标准的客户/服务器体系结构,具有可扩展性好、可移植性好等优点。
但该系统的庞大、累赘和低效率也是大家所共知的。
为了获得应用程序的可移植性,许多厂家都试图通过对XWindow系统的紧缩开发,使之能够在嵌入式系统上运行。
国外已经开发出了大小约为800K的X服务器。
这对西方国家来说基本能够满足嵌入式系统的需求了。
但该系统的源代码尚不开放,从而很难进行本地化开发。
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的XWindow程序可以非常方便地移植到嵌入式版本。
但是该系统不是开放源码的,如果你要使用这个库,可能需要支付昂贵的授权费用。
1.2关于Qt
Qt是Trolltech公司的一个标志性产品。
Trolltech公司1994年成立于挪威,但是公司的核心开发团队已经在1992年开始了Qt产品的研发,并于1995年推出了Qt的第一个商业版,直到现在Qt已经被世界各地的跨平台软件开发人员使用,而Qt的功能也得到了不断的完善和提高。
Qt是一个支持多操作系统平台的应用程序开发框架,它的开发语言是C++。
Qt最初主要是为跨平台的软件开发者提供统一的,精美的图形用户编程接口,但是现在它也提供了统一的网络和数据库操作的编程接口。
正如微软当年为操作系统提供了友好,精致的用户界面一样,今天由于Trolltech的跨平台开发框架Qt的出现,也使得UNIX、LINUX这些操作系统以更加方便、精美的人机界面走近普通用户。
Qt是以工具开发包的形式提供给开发者的,这些工具开发包包括了图形设计器,Makefile制作工具,字体国际化工具,Qt的C++类库等等。
Qt的类库也是等价于MFC的开发库,但是Qt的类库是支持跨平台的类库
Qt支持的操作系统平台:
◆MS/Windows95、Windows98、WindowsNT4.0、Windows2000、WindowsXP
◆Unix/X11Linux、SunSolaris、HP-UX、CompaqTrue64Unix、IBMAIX、SGIIRIX和很多其它X11平台
◆MacintoshiMacOSX
◆嵌入式的,包含有FramBuffer的Linux平台
1.3Qt/Embedded简介
Qt/Embedded是一个为嵌入式设备上的图形用户接口和应用开发而订做的C++工具开发包.它通常可以运行在多种不同的处理器上部署的嵌入式Linux操作系统上
除了类库以外,Qt/Embedded还包括了几个提高开发速度的工具,使用标准的QtAPI,我们可以非常熟练的在Windows和Unix编程环境里开发应用程序。
Qt/Embedded是一组用于访问嵌入式设备的QtC++API;
Qt/Embedded的Qt/X11,Qt/Windows和Qt/Mac版本提供的都是相同的API和工具。
Qt/Embedded还包括类库以及支持嵌入式开发的工具。
Qt/Embedded提供了一种类型安全的被称之为信号与插槽的真正的组件化编程机制,这种机制和以前的回调函数有所不同。
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开发环境所需要的两个工具)
公司提供的软件包如下:
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
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.1Qt/Embedded开发一个嵌入式应用的过程
选定嵌入式硬件平台
在工作的机器上安装Qt/Embedded工具开发包根据目标硬件平台,交叉编译Qt/Embedded的库在工作的机器上进行应用程序的编码,调试根据目标硬件平台,交叉编译嵌入式应用在嵌入式硬件设备上调试运行应用
发布嵌入式应用
3.2“hello”Qt的初探
第一次Qt程序实现一个功能,就是按下我们设置的user按钮后,显示出“hellocvtech”的打印信息,按下close按钮后,退出该应用程序。
3.2.1
目录下新建一个
建立工程文件
在PC的Linux的“/home/cvtech/jx2410/examples/qt/
名为:
“hello”的目录,命令如下:
#cd/home/cvtech/jx2410/examples/qt/
#mkdirhello
建立工程文件hello.pro,命令如下:
#progen–tapp.t–ohello.pro在后台启动QT的设计器,命令如下:
#/home/cvtech/jx2410/qt2410/arm/qt/bin/designer&
新建项目文件,选择工具栏File—>
new—>
Dialog,然后点击OK按钮,结果如下:
设置Form1的属性,修改“name”为hello,修改“caption”为HelloCvtech。
然后添加两个按钮,分别修改“name”分别为obutton和cbutton,修改
“text”分别为open和close。
然后在添加一个text图标,修改“name”为Tlabel,修改“text”为空设置完成后,如图:
完成以上工作后,我们需要添加函数,使按钮能够对其进行响应,方法如下:
选择工具栏中的Edit—>
slot,新建两个函数,分别为open()和close(),如图所示:
面的操作涉及到了QT中的信号和槽的概念,我的理解按钮的操作时信号
槽就是该操作所响应的函数。
如下图所示,完成open按钮和close按钮的。
首先点击按钮,然后点住open按钮不要松开,向上拉动到Form1的空白地方,如图:
同样的方法建立close按钮的响应关联,如图:
然后在Edit—>
slot中去除close()函数,如图:
完成以上操作后,保存图形文件,点击工具栏File—>
save,如图:
然后退出设计器。
每次修改*.ui的工程文件后,必须使用下面的方法重新生成源码,否则会出现编译出错的情况。
3.2.2产生源代码
在PC的Linux的终端中,输入命令如下:
hello.hhello.ui
3.2.3添加main.cpp文件
#vimain.cpp代码如下所示:
#include"
hello.h"
#include<
qapplication.h>
#defineQT_NO_WIZARD
intmain(intargc,char**argv){
QApplicationa(argc,argv);
hellodlg;
a.setMainWidget(&
dlg);
dlg.show();
returna.exec();
}
3.2.4修改hello.pro文件
#vihello.pro修改容如下:
TEMPLATE=app
CONFIG=qtwarn_onrelease
HEADERS=hello.h
SOURCES=hello.cpp\
main.cpp
INTERFACE=S
3.2.5生成MakeFile文件
#qmakehello.pro
此时得到的Makefile文件编译出来的hello,是在PC的Linux上可以运行的。
#make
得到可执行文件hello,在PC的Linux的终端中,输入命令如下:
#./hello
得到界面如下:
3.2.6修改hello.cpp文件
为了实现前面讲到的按下open按钮,出现“hellocvtech”的打印信息,我们还需要修改hello.pro文件,以下为源码容:
/****************************************************************
**Formimplementationgeneratedfromreadinguifile'
hello.ui'
**
**Created:
ThuNov1210:
38:
172009
**by:
TheUserInterfaceCompiler(uic)**WARNING!
Allchangesmadeinthisfilewillbelost!
*******/#include"
#include<
qlabel.h>
qpushbutton.h>
qlayout.h>
qvariant.h>
qtooltip.h>
qwhatsthis.h>
/*
Constructsahellowhichisachildof'
parent'
withthe
name'
name'
andwidgetflagssetto'
f'
Thedialogwillbydefaultbemodeless,unlessyouset'
modal'
to
TRUEtoconstructamodaldialog.
hello:
:
hello(QWidget*parent,constchar*name,boolmodal,WFlagsfl)
QDialog(parent,name,modal,fl)
{
if(!
name)
setName("
hello"
);
resize(312,280);
setCaption(tr("
HelloCvtech"
));
cButton=newQPushButton(this,"
cButton"
cButton->
setGeometry(QRect(180,190,91,31));
cButton->
setText(tr("
close"
oButton=newQPushButton(this,"
oButton"
oButton->
setGeometry(QRect(40,190,91,31));
oButton->
open"
TLabel=newQLabel(this,"
TLabel"
TLabel->
setGeometry(QRect(30,60,250,51));
QFontTLabelfont(TLabel->
font());
TLabelfont.setPointSize(30);
setFont(TLabelfont);
"
//signalsandslotsconnections
connect(oButton,SIGNAL(clicked()),this,SLOT(open()));
connect(cButton,SIGNAL(clicked()),this,SLOT(close()));
Destroystheobjectandfreesanyallocatedresources
~hello()
//noneedtodeletechildwidgets,Qtdoesitallforus}
*Maineventhandler.Reimplementedtohandleapplication
*fontchanges
boolhello:
event(QEvent*ev)
boolret=QDialog:
event(ev);
if(ev->
type()==QEvent:
ApplicationFontChange){QFontTLabelfont(TLabel->
TLabel_font.setPointSize(30);
setFont(TLabel_font);
voidhello:
open()
TextLabel1->
setText(tr("
HelloCvtech!
));
//qWarning("
open():
Notimplementedyet!
在上面的open()函数中添加了对按下open按钮响应的处理功能,即按下按钮后,打印出“HelloCvtech!
”这句话到主界面中。
修改完成后保存,重新编译#make
再次执行#./hello按下open按钮,结果如图:
3.3将hello移植到JXARM9-2410实验箱上
3.3.1重新生成修改Makefile
因为是要在实验箱上运行,那么编译器也必须是交叉编译,就需要新的
Makefile文件。
使用tmake产生Makefile,在PC的Linux终端中输入命令:
#tmake–oMakefilehello.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++
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\
OBJECTS=hello.o\main.o
INTERFACES=UICDECLS=UICIMPLS=SRCMOC=mochello.cppOBJMOC=mochello.oDIST=TARGET=helloINTERFACE_DECL_PATH=.
#######Implicitrules.SUFFIXES:
.cpp.cxx.cc.C.c
.cpp.o:
$(CXX)-c$(CXXFLAGS)$(INCPATH)-o$$<
.cxx.o:
.cc.o:
.C.o:
.c.o:
$(CC)-c$(CFLAGS)$(INCPATH)-o$$<
#######Buildrules
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Qt 程序 开发 完全 手册 范本