QT 桌面安装与建立运行环境是本文介绍的内容,在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded 的免费版本,在安装产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410s/gui/Qt/src 下。在做实验前把本次实验用到的三个文件拷贝到/root/2410sQt 目录下。
- [root@BC root]#cd /root/
- [root@BC root]#mkdir 2410sQt
- [root@BC root]#cd /arm2410dev/gui/Qt/src
- [root@BC src]#cp -arf tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz
- qt-x11-2.3.2.tar.gz /root/2410sQt
安装编译器arm-linux-gcc-3.4.1:
- [root@BC src]#cd /arm2410dev/gui/Qt/tools
- [root@BC tools]#tar xjvf arm-linux-gcc-3.4.1.tar.bz2 -C ./
- [root@BC tools]#vi /root/.bash_profile //打开文件
将该文件中的PATH 变量改为PATH=$PATH:$HOME/bin:/arm2410s/gui/Qt/tools
- /usr/local/arm/3.4.1/bin/,存盘后退出。
- [root@BC tools]# source /root/.bash_profile
如果安装正确的话,在任意路径下输入ar 后按Tab 键即可列出编译器文件。
Qt/Embedded 平台的搭建需要以下几步:
***步,解压安装包并设置环境变量
安装Tmake
- cd ~/2410sQt
- tar –xzf tmake-1.13.tar.gz
- export TMAKEDIR=$PWD/tmake-1.13
安装Qt 2.3.2
- cd ~/2410sQt
- tar –xzf qt-x11-2.3.2.tar.gz
- export QT2DIR=$PWD/qt-2.3.2
安装Qt/Embedded
- cd ~/2410sQt
- tar –xzf qt-embedded-2.3.10-free.tar.gz
- export QTEDIR=$PWD/qt-2.3.10
环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,下面介绍一下这些环境变量:
- TMAKEDIR : 指向用于编译Qt/Embedded 的Tmake 工具
- QT2DIR : 指向qt-2.3.2 的文件夹
- QTEDIR : 指向qt-2.3.10 的文件夹
第二步,编译Qt/Embedded。
1、Build Qt2.3.2
- cd $QT2DIR
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -no-xft //出现选项时都输入yes
- make
- cp –arf bin/uic $QTEDIR/bin/
./configure 是对Qt 进行配置,它包括很多选项,例如可以通过添加“ -no-opengl”等,如果想要进一步了解可以通过键入 ./configure --help 来获得更多的帮助信息。编译完成后需要将生成的/bin/uic 复制到$QTEDIR 下新创建的目录bin 中,因为在随后编译
Qt/Embedded 的时候会用到这个工具。
2、Build Qvfb
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/tools/qvfb
- /root/2410sQt/tmake-1.13/bin/tmake -o Makefile qvfb.pro
- make
- mv qvfb $QTEDIR/bin/
这一步build qvfb 并建立了从Qt/Embedded 2.3.10 到Qt 2.3.2 的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
#p#
3、Build Qt/Embedded
- cd $QTEDIR
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
- export QTDIR=$QTEDIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -no-xft -qvfb -depths 4,8,16,32
- yes
- 5
- make
在配置./configure 中-qvfb 用来支持Virtual framebuffer,-depths 4,8,16,32 支持4 位,8位,16 位,32 位的显示深度,此外还可以添加如-syestem-jpeg 和-gif 来提供对jpeg 和gif的支持。配置系统同时还支持对特定平台系统选项的添加,但一般来讲,凡是支持framebuffer 的Linux 系统都可以使用“linux-generic-g++”平台。详细的配置信息可以通过运行./configure --help 命令来查看。
第三步,查看运行结果
如果上面各步都能够成功的编译通过,下面就可以通过运行。Qt/Embedded 自带的demo 来查看运行结果。
在Virtual framebuffer 上运行:
- export QTDIR=$QTEDIR
- export PATH=$QTEDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/examples/launcher
- qvfb -width 640 -height 480 &
- sleep 10
- ./launcher -qws
运行结果如图9-3:
图9-3 Qt/Embedded Demo程序
将上面的步骤完成后,我们就已经建立好了在本机上开发Qt 应用程序的环境,下面我们通过编写一个“Hello Embedded”的程序来了解Qt 程序设计。
- [root@BC qt-2.3.10]# cd /root/2410sQt/
- [root@BC 2410sQt]# mkdir exp
- [root@BC 2410sQt]# cd exp
- [root@BC exp]# vi hello.cpp
#p#
使用VI 编写文件hello.cpp,程序代码如下:
- //hello.cpp
- #include <qapplication.h>
- #include <qlabel.h>
- int main(int argc, char **argv)
- {
- QApplication app (argc, argv);
- QLabel *hello = new QLabel("Hello Qt/Embedded!", 0);
- app.setMainWidget(hello);
- hello->show();
- return app.exec();
- }
现在开始逐行讲解一下每一句是什么意思,掌握了这些以后可以帮助我们更加了解Qt的程序设计。
第1 行和第2 行包含了两个头文件,这两个头文件中包含了QApplication 和 QLabel类的定义。
第5 行创建了一个QApplication 对象,用于管理整个程序的资源,它需要2 个参数,因为Qt 本身需要一些命令行的参数。
第6 行创建了一个用来显示Hello Qt/Embedded!的部件。在Qt 中,部件是一个可视化用户接口,按钮、菜单、滚动条都是部件的实例。部件可以包含其它部件,例如,一个应
用程序窗口通常是一个包含QMenuBar、QToolBar、QStatusBar 和其它部件的一个部件。
在QLabel 函数中的参数0 表示,这是一个窗口而不是嵌入到其它窗口中的部件。
第7 行设置hello 部件为程序的主部件,当用户关闭主部件后,应用程序将会被关闭。如果没有主部件的话,即使用户关闭了窗口程序也会在后台继续运行。
第8 行使hello 部件可视,一般来说部件被创建后都是被隐藏的,因此可以在显示前根据需要来订制部件,这样的好处是可以避免部件创建所造成的闪烁。
第9 行把程序的控制权交还给Qt,这时候程序进入就绪模式,可是随时被用户行为激活,例如点击鼠标、敲击键盘等。
下面我们要让我们的程序跑起来,首先要让它能够在Virtual framebuffer 中显示出来,然后再通过交叉编译在开发板上运行。
要在本机的Virtual framebuffer 中显示结果,下面几步是必须的:
1.生成工程文件(.pro)
每一个Qt 程序都对应着一个工程文件,因为tmake 工具要借此工程生成相应的Makefile 文件。生成工程文件需要使用progen 工具,它的位置在$TMAKEDIR/bin 下,使用progen 生成工程文件的方法如下:
- $TMAKEDIR/bin/progen –t app.t –o hello.pro
生成的这个hello.pro 工程文件是可以被修改的,可以编辑里面的头文件、源文件等内容。
2.生成Makefile 文件
Qt 提供了生成Makefile 文件的工具tmake,这极大地方便了应用程序的开发,节省了大量的时间,而且还可根据不同平台的需要生成适合于不同平台的Makefile 文件。
在使用tmake 工具前,必须查看相应的环境变量是否正确,由于我们要编译在本机上运行的Qt 程序,所以指定的编译器应该为“linux-x86-g++”,在命令行中输入下面的命令
来检查环境变量是否正确:
- echo $TMAKEPATH
查看返回的结果的结尾字符是否是“……/qws/linux-x86-g++”,如果不是的话需要在命令行中重新设置TMAKEPATH
- export TMAKEPATH=/tmake 的安装路径(如$TMAKEDIR)/lib/qws/linux-x86-g++
此外还要使QTDIR 指向Qt/Embedded 的安装路径,如:
- export QTDIR=$QTEDIR 或者直接指定路径
- export QTDIR=……/qt-2.3.10
完成了上面的环境变量的设置,并用echo 命令检查无误以后,就可以使用tmake 工具来生成我们需要的Makefile 文件,在命令行中输入如下命令:
- $TMAKEDIR/bin/tmake –o Makefile hello.pro
完成上面的步骤以后就可以在当前的目录中生成一个Makefile 文件,关于Makefile文件的功能和结构这里就不再做过多的介绍了,可以参考前面的章节来了解Makefile。
***在命令行中输入 “make”命令就可以对整个程序进行编译链接了,最终生成了一
个二进制的可执行文件hello。用Virtual framebuffer 显示效果如下:
图9-4 Hello Embedded
我们可以通过对QLabel *hello = new QLabel("Hello Qt/Embedded!", 0)这句进行修改,使我们的程序显示起来更为美观,修改如下:
- QLabel *hello=new QLabel("<h2><fontcolorfontcolor=blue>Hello" "<i>Qt/Embedded!</i> </font> </h2>", 0);
修改后显示效果如图所示:
图9-5 修改后Hello Embedded
小结:关于QT 桌面安装与建立运行环境的内容介绍完了,希望本文对你有所帮助!