上一章得到了qtopia-2.2.0/qtopia/image/opt/Qtopia这个结果,这里面实际上包含了所有的应用程序。接着就要把这些代码放到板子的根文件系统中,这里不建议初学的读者从零开始建立一个根文件系统,而直接通过超级终端将
开发板/opt/目录下的Qtopia用新编译的替换掉,这样自己的qtopia就在开发板上安装好了。在超级终端执行命令 #qtopia &,程序运行如下:
我们以一个HelloWord为例,来了解下如何编译一个Qtopia2.2.0应用程序放到开发板上运行:
5.1 在linux终端中键入以下命令创建该目录:
#mkdir -p /root/qtopia2_apps
5.2 在qtopia_apps目录下创建hello作为本示例的项目目录,在终端输入以下命令:
#cd /root/qtopia2_apps
#mkdir hello
5.3 使用designer 工具设计图形界面,Qt/Qtopia都有designer工具,可以设计所见即所得的图形界面。主界面命名为hello_from.ui,输入以下命令并以ui文件名作为参数:
# cd hello
#/root/yizhi/qtopia-free-2.2.0/qt2/bin/designer ui_hello.ui
5.4 在弹出的new from界面中,选择”widget”然后点击ok,我们将创建一个基于QWidget的窗体:
5.5 这时将会显示窗口的编辑界面,我们修改窗体的大小使得开发板屏幕能够完整显示我们的程序,修改窗口属性:
5.6在窗口上放置控件,在工具栏上点击药放置的控件,在再窗口空白处点击一下即可:修改控件的属性的方法是点击控件,在左侧的属性窗口进行修改,修改button显示信息为”close”
5.7 为按钮添加点击事件的处理,我们首先创建一个slot函数。用于处理button的click事件,新建slot的步骤如下:
5.7.1 点击edit菜单,选择Slots”,将弹出如下所示的编辑对话框:
5.7.2 在上面的对话框中,点击”New slot”按钮,然后在slot编辑框中输入”btn_closeclicked()”,然后点击ok保存并退出如下图;
至此,slot添加完毕,现在讲slot函数与按钮点击事件对应起来;
5.8 点击工具栏的Connect Signal/Slots图标,然后参照下图所示进行操作,在按钮上按下鼠标左键不放然后拖到窗口的空白处放开鼠标,操作完成后会弹出Edit Connects对话框:将clicked()事件和slots连接起来,点击ok即可
至此,界面设计完毕,可以进入写代码环节。
5.9 我们需要创建三个源码文件,一个是头们见hello.h,一个是源代码文件hello.cpp,一个是main.cpp:
#gedit main.cpp
然后添加如下内容:
/***********************************/
#include “hello.h”
#include tion.h>
QTOPIA_ADD_APPLICATION(“hello”,THelloForm)
QTOPIA_MAIN
/**************************************/
main.cpp只有4行源代码。它的实现很简单。宏展开后会是一个main函数,然后创建QPEApplication对象和THelloForm主窗口对象,最后显示主窗口并执行QApplication::exec()进入事件循环,接下来创建hello.h和THelloForm类.
5.10 创建hello.h和THelloForm类:
#gedit hello.cpp
/*********************************************/
#include
#include "hello.h"
QHelloForm::QHelloForm(QWidget * parent, const char * name, WFlags f)
{
}
QHelloForm::~QHelloForm()
{
}
void QHelloForm::btn_closeclicked()
{
close();
}
/***********************************************/
#gedit hello.h
/***********************************************/
#include "ui_hello.h"
class QHelloForm: public hello_form
{
Q_OBJECT
public:
QHelloForm(QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel);
virtual ~QHelloForm();
private slots:
void btn_closeclicked();
};
/**************************************************************/
5.11 编写hello.pro
#gedit hello.pro
/*********************************************/
CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
TARGET = hello
# Input
HEADERS += hello.h
INTERFACES += ui_hello.ui
SOURCES +=hello.cpp main.cpp
/******************************************/
上面的项目文件中CONFIG += qtopiaapp 表示要编译的是一个Qtopia程序,HEADERS和SOURCES 列出了hello的源代码和头文件清单,而TARGET则指定最后生成的可执行文件名hello,CONFIG -= buildQuicklaunch 的意思是需要编译一个独立的可执行程序。而不是应用程序插件。
5.12 创建一个开发板的编译脚本
#gedit build
/*********************************************/
#!/bin/bash
source /root/yizhi/qtopia-free-2.2.0/setQpeEnv
Qmake -spec /root/yizhi/qtopia-free-2.2.0/qtopia/mkspecs/qws/linux-
ARM-g++ -o Makefile *.pro
make clear
Make
/*********************************************/
5.13创建.desktop文件
/********************************************/
[Translation]
File=QtopiaSettings
Context=hello
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate hyphenation
[Desktop Entry]
Exec=hello
Icon=hello
Type=Application
Name[]=hello
CanFastload=0
/**************************************/
保存。其中Icon图像为hello.png
5.14 编译生成应用程序:
执行 ./build脚本生成hello应用程序,我们就可以把这个程序放到开发板上运行了。
5.15 程序在开发版上运行:在开发板的opt/Qtopia/apps下增加forlinx目录,将生成的hello应用程序放到开发板的opt/Qtopia/bin下,hello.desktop文件放到opt/Qtopia/apps/forlinx下,hello.png放到opt/Qtopia/pics下,注意程序的权限,拷贝后用chmod命令给程序修改权限。重新启动qtopia程序,在超级终端输入#qtopia &命令,如下图多出的forlinx一栏就是咱们自己创建的,可以把自己的应用程序放在下边