Username: Password:

嵌入式工具Qt的安装和使用
来源:linux宝库作者:linux宝库 发布时间:2007-09-30 00:00:00


  Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要研发两种产品:一种是跨平台应用程式界面框架;另外一种就是提供给做嵌入式Linux研发的应用程式平台,能够应用到PDA和各种移动设备上。Qt和Qtopia分别是其中具备代表性的两个。

  Qt是个多平台的C++图像用户界面应用程式框架,他能给用户提供精美的图像用户界面所需要的任何元素,而且他是基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,并且他还支持真正的组件编程。

  Qt是Linux桌面环境KDE的基础。笔者认为,能够说Qt和Windows下的Mfc的实质是相同的,所以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;

  ◆ Embedded—带FramBuffer的Linux平台。

  下面简单介绍一下Qt/Embedded和Qtopia在Linux上的安装和使用,更有在研发过程中可能碰到的一些问题。

  Qt 和Qtopia的安装

  假如需要安装一个带FramBuffer的Qtopia平台,需要有以下软件(所列举软件以笔者使用的为例):

  ◆ Qtopia 1.6.0;

  ◆ Tmake 1.11;

  ◆ Qt/Embedded 2.3.4(Qtopia 1.6.0是基于该研发平台上研发的);

  ◆ Qt/Embedded 2.3.2 for X11;

  ◆ Qt 3.1.2 for X11。

  在Trolltech公司的网站上能够下载该公司所提供的Qt/Embedded的免费版本。

  Qtopia平台安装分为以下几个步骤:

  1. 解包Qtopia

  在Linux命令模式下运行以下命令:

  tar xfz qtopia-source-1.6.0 (解包)

  cd qtopia-source-1.6.0

  export QPEDIR=$PWD

  (配置环境变量)

  cd..

  2. 安装Tmake

  在Linux命令模式下运行以下命令:

  tar xfz tmake-1.11.tar.gz

  export TMAKEDIR=$PWD/tmake-1.11

  export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

  export PATH=$TMAKEDIR/bin:$PATH

  3. 安装Qt/Embedded2.3.4

  在Linux命令模式下运行以下命令:

  tar xfz qt-embedded-2.3.4-commercial.tar.gz

  cd qt-2.3.4

  export QTDIR=$PWD

  export QTEDIR=$QTDIR

  export PATH=$QTDIR/bin:$PATH

  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/

  . /configure -qconfig qpe -qvfb -depths 4,8,16,32

  make sub-src

  cd ..

  也能够在configure的参数中添加-system-jpeg和gif,使Qtopia平台能支持jpeg、gif格式的图像。

  4. 安装Qt/X11 2.3.2

  在Linux命令模式下运行以下命令:

  tar xfz qt-x11-2.3.2-commercial.tar.gz

  cd qt-2.3.2

  export QTDIR=$PWD

  export PATH=$QTDIR/bin:$PATH

  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  . /configure -no-opengl

  make

  make -C tools/qvfb

  mv tools/qvfb/qvfb bin

  cp bin/uic $QTEDIR/bin

  cd ..

  根据研发者本身的研发环境,也能够在configure的参数中添加别的参数,比如-no-opengl或-no-xfs,能够键入./configure -help来获得一些帮助信息。

  5. 安装Qt/X11 3.1.2

  在Linux命令模式下运行以下命令:

  tar xfz qt-x11-commercial-3.1.x.tar.gz

  cd qt-x11-commercial-3.1.x

  export QTDIR=$PWD

  export QT3DIR=$QTDIR

  export PATH=$QTDIR/bin:$PATH

  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  ./configure -thread

  make

  cd ..

  6. 安装Qtopia

  在Linux命令模式下运行以下命令:

  cd qtopia-source-1.6.x

  export QTDIR=$QTEDIR

  export QPEDIR=$PWD

  export PATH=$QPEDIR/bin:$PATH

  cd src

  ./configure

  make

  cd ../..

  7. 安装Qtopia桌面

  cd qtopia-source-1.6.x/src

  export QTDIR=$QT3DIR

  ./configure -qtopiadesktop

  make

  mv qtopiadesktop/bin/qtopiadesktop ../bin

  cd ..

  Qt和Qt Designer的使用

  根据上面的步骤安装完成了Qt/Embedded和Qtopia之后,就能够运行这些程式了。

  运行Qt的虚拟仿真窗口:在Linux的图像模式下运行命令qvfb&;Qtopia只是个用Qt/Embedded研发的程式,运行Qtopia,在图像模式下运行命令:

  export QTDIR=$QTEDIR,

  qpe &;

  这样Qtopia的程式就运行在QVFB上,即Qt的虚拟仿真窗口。

  Qt/Embedded是针对嵌入式Linux而研发的一种研发工具,Qt封装了一些常用的类,而且这些类的名字都以Q字开头命名,如QString、QDialog等。这里主要介绍一下怎样利用Qt Designer来设计组件,并生成相应的代码。

  在Qt中,把组件分为复合体、原始体和配件。而在Qt中,组件是由一些抽象类、复杂的组件类、管理组件几何特性的类等组成。

  Qt中有三个主要的基类:QObject、Qapplication和QWidget。

  在Qt中编程,利用Signal和Slot进行对象之间的通信是Qt的主要特征。他和Windows中的消息机制很类似,但是Signal和Slot机制真正实现了一种消息的封装。当对象的状态改变时,发出Signal,通知任何的Slot接受Signal,尽管他不知道哪些函数是Slot,Slot一开始也不知道哪些Signal能够接收。Signal和Slot之间不是一一对应的关系,一个Signal能够发给多个Slot, Slot也能够接收多个Signal。Slot除了能够接收Signal以外,和其他的成员函数没有区分。这种机制比使用回调函数要灵活,但是会减慢程式的运行速度。但是在现在高速CPU的面前,这种损失是无足轻重的,而且他还能确保程式的简明性和灵活性,很便利。

  在Qt的组件中,不但定义了常用的成员变量和成员函数,还定义了任何和该组件相关的Signal和Slot。

  要将组件组合起来,最简单的方法就是使用Qt Designer。首先要启动Qt Designer,在Linux命令模式下,键入以下命令(假设Qt安装在/usr/local下):

  cd qt-2.3.2/bin

  ./designer

  这样就能够启动一个和Windows下的Delphi相类似的如图1的界面。

  


  然后新建一个QFrame,将自己需要的组件直接拖拉到这个Frame中,相信很多人都有过这样的经历,此处就不再周详描述了。完成之后存盘时,会将这个新的组件保存为一个扩展名为.ui的文档。假设所存的文档名为test.ui,用vi test.ui来查看这个文档,发现这是个用xml语言写的一个文本。下面用这个test.ui生成相应的test.h和test.cpp。同样还是在这个目录下,能够看到一个uic的工具,这个是Qt专门用来将ui文档生成.h和.cpp文档的,在终端模式下键入以下命令:

  ./uic -o test.h test.ui

  ./uic -o test.h -i test.cpp test.ui

  此时就能看到生成了相应test.h和test.cpp,这是个类。当然这只是一些表面的东西,还需要在这些代码中添加相应的Signal和Slot,完成所需要的操作。值得注意的是,相应版本生成的ui最好用相应版本的uic来生成代码。假如用Qt 3.1.2的Designer生成的ui,用Qt 2.3.2的uic来生成代码,生成的代码都会是一些空函数。

  在一般的研发过程中,首先通过这个ui生成的一个类,在Qt中通常叫做Base,如上面的例子,叫做testBase;然后再新建一个类,来继承这个Base。通常叫做实现类Impl,如testImpl。在这个实现类里面定义所需要的成员函数、Signal和Slot,因为ui可能是经常需要改变的。假如这样做,每次只需要在Designer中修改ui,而不用去理会这些成员函数、Signal和Slot了。

  编译一个Qt程式必然需要Makefile,在Qt中提供了一个专门生成Makefile的工具,就是tmake。用tmake需要根据编写的程式写一个.pro文档。.pro文档很简单,有固定的格式,下面是个例子:

  TEMPLATE = app

  CONFIG

  = qtopia warn_on release

  MOC_DIR

  =tmp

  OBJECTS_DIR =tmp

  HEADERS

  =fcrs.h\

  structs.h

  globalfunc.h

  globalvars.h \

  testimpl.h

  SOURCES

  = main.cpp

  globalfunc.cpp

  globalvars.cpp \

  testimpl.cpp

  INTERFACES = test.ui TARGET

  = fcrs

  生成这个.pro文档之后,在终端中键入下面的命令:

  tmake -o Makefile test.pro

  就自动生成了一个Makefile,使用这个Makefile编译所编写的程式就能够了。

  

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅