tiny4412上的应用程序开发示例

1、创建目录

 

在这开始之前,我们先创建一个 qtopia2_apps 目录,用于专门存放我们自已编写的 qtopia2.2.0 程序,  在 Linux 终端中键入以下命令创建该目录:

[root@localhost ~]# mkdir -p /opt/qtopia2_apps 

然后在  qtopia2_apps 目录下创建 hello 作为本示例的项目目录,在终端上输入如下命令:

[root@localhost ~]# cd /opt/qtopia2_apps 

[root@localhost ~]# mkdir hello

2、使用 designer 工具设计图形界面

  2.1 主界面的设计

利用designer 工具来设计hello 程序的主界面,主界面将保存成名为  main_form_base.ui 的 ui 文件,输入如下命令:

[root@localhost ~]# cd hello

[root@localhost~]#/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/designer main_form_base.ui 

 

在弹出的 New  Form 界面中,选择“Widget”然后点击”OK“,我们将创建一个基于 QWidget 的窗体。接下来我们修改窗口的属性值,将name设置为TMainFormBase,width变为300height设置为200caption设置为My Hello.

 

  2.2 在窗体上放置控件

修改完窗口的属性值后,接下来我们就要在窗口上放置控件了,往窗口上放置控件的方法是:在工具栏上点击要放置的控件,再在窗口空白处点击一下即可。

主要放置三个控件:一个文本标签,两个按钮标签,各控件属性的设置如下图所示。

 

             

 

 

 

2.3  为按钮添加点击事件的处理

我们首先需要新建两个 slot 函数,一个用于处理OK按钮的点击事件,一个用于处理  Exit 按钮的点击事件,新建 slot 的步骤如下(只将重要步骤的截图放在下面)

     1)点击”Edit”菜单,选择“Slots”,将弹出slot 编辑对话框。

     2)在上面的对话框中,点击New Slot按钮,然后在 Slot 编辑框中输入“exitButtonClicked()”。

     3)然后再点”New Slot“按钮,并在 Slot 编辑框中输入“okButtonClicked(),  最后   点击 OK 保存并退出该对话框。

     4)其次,将 slot 函数与按钮的点击事件对应起来: 单击工具栏上的 Connect Signal/Slots 图标 ,然后参照下图所示进行操作,在“Ok”按钮上按下鼠标左键不放然后拖动到窗口的空白处放开鼠标,操作完成后将会弹出 Edit  Connects 对话框。

     5)在弹出的 Edit  Connects 对话框中,将 clicked()事件连接到 calcButtonClicked()  slot 函数,操作方法如下图所示:

    

  

 

     6)下面用同样的方法操作 Close 按钮,最后可以得到完整的UI界面。

 

 

3、利用C++编写代码

     现在开始为hello 编写代码,需要创建三个源代码文件,一个是头文件 main_form.h,一个是源代码文件 main_form.cpp,一个是 main.cpp

 首先在终端输入:  

   [root@localhost ~]# vi main.cpp

写入如下代码:

   #include "main_form.h" 

   #include <qtopia/qpeapplication.h> 

 

   QTOPIA_ADD_APPLICATION("hello,TMainForm) 

   QTOPIA_MAIN 

接着输入:

   [root@localhost ~]# vi main_form.h 

在其中写入如下代码:

#ifndef  __MAIN_FORM_H__

#define  __MAIN_FORM_H__ 

 

#include "main_form_base.h" 

#include <qsocketnotifier.h>

 

class TMainForm: public TMainFormBase

 { 

     Q_OBJECT 

public: 

     TMainForm(QWidget  *  parent  =  0,  const  char  *  name  =  0,  WFlags  f =  WType_TopLevel)  : 

TMainFormBase(parent,name,f) {} 

virtual ~TMainForm() {} 

 

public slots: 

     void okButtonClicked(); 

     void exitButtonClicked(); 

}; 

#endif 

 

 

 

然后用 vi 编辑器创建并打开  main_form.cpp 文件

[root@localhost ~]# vi main_form.cpp

 

写入如下代码:

#include "main_form.h" 

#include <qlineedit.h> 

void TMainForm::exitButtonClicked() 

     close(); 

void TMainForm::okButtonClicked() 

    

 

 

最后,编写项目文件 hello.pro

[root@localhost ~]# vi hello.pro 

 

CONFIG += qtopiaapp 

CONFIG-= buildQuicklaunch 

HEADERS= main_form.h 

SOURCES= main_form.cpp main.cpp 

INTERFACES= main_form_base.ui 

TARGET= hello

 

4、在 PC 上编译并运行示例

 

首先,编写一个脚本 buildhost.sh 来执行PC 版本的编译工作

在终端输入如下命令:

[root@localhost ~]#cd /opt/qtopia2_apps/hello

[root@localhost ~]# vi buildhost.sh

    

    在 vi 编辑器中输入如下内容: 

#!/bin/sh 

 

source /opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv 

qmake -o Makefile.host -spec qws/linux-generic-g++ *.pro 

make -f Makefile.host clean 

make -f Makefile.host 

 

执行以下命令可以实现编译脚本:
    [root@localhost ~]# chmod +x buildhost.sh

[root@localhost ~]# ./buildhost.sh 

 

编译完成后,在 hello 下生成了hello 可执行文件,输入如下命令可以在模拟器上运行.(必须已经安装了x86-qtopia

# cd /opt/FriendlyARM/tiny4412/linux/x86-qtopia

# ./run& 

 

接着输入如下命令:

cd /opt/qtopia2_apps/hello

    export  QTDIR=/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM

/qtopia/image/opt/Qtopia/

export  QPEDIR=/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM

/qtopia/image/opt/Qtopia/ 

    export  HOME=$QPEDIR/root/ 

export  LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBARAY_PATH

最后执行: 

./hello

 

程序在 PC 上的运行结果如下所示: 

 

 

 

 

5、交叉编译示例程序并在tiny4412上运行

   首先,编写一个脚本 buildarm.sh 来执行ARM 版本的编译工作

在终端输入如下命令:

[root@localhost ~]#cd /opt/qtopia2_apps/hello

[root@localhost ~]# vi buildarm.sh

    

    在 vi 编辑器中输入如下内容: 

#!/bin/sh 

 

source /opt/FriendlyARM/tiny4412/linux/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv 

qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro 

make -f Makefile.target clean 

make -f Makefile.target 

 

 

执行以下命令可以实现编译脚本:
    [root@localhost ~]# chmod +x buildarm.sh

[root@localhost ~]# ./buildarm.sh 

 

编译完成后,在hello下生成了hello可执行文件,将它拷贝到SD卡,然后将SD插到tiny4412开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的  /opt/Qtopia/bin/  目录下: 

# cp /sdcard/hello /opt/Qtopia/bin/

先通过串口终端的命令行来运行,在串口终端上输入以下命令:

# cp /bin/qtopia /bin/run_myhello 

# vi /bin/run_myhello

 

在 vi 编辑器中,改变下面一行的内容:

exec $QPEDIR/bin/qpe 

更改成: 

exec $QPEDIR/bin/hello

接着在终端输入:

 # run_hello&

可以看到Arm上显示如下内容:

            

 

 

 

6、在 Qtopia 上添加 hello 程序图标

Fedore9 系统中找一个现成的图标来作来 hello 的图标,我使用 /usr/share/icons/hicolor/48x48/apps/  目录下的 gnome.png  文件作为 hello 的图标,把它拷贝到我们的项目目录并改名为 hello.png,  执行以下命令将该图标复制到hello的项目文件夹里来,在终端输入如下命令: 

[root@localhost ~]# cd /usr/share/icons/hicolor/48x48/apps/ 

[root@localhost ~]# cp gnome-sudoku.png /opt/qtopia2_apps/hello/hello.png

 

接着写入:

 # cd /opt/qtopia2_apps/hello/ 

 # vi hello.desktop

 

在 vi 中输入以下内容并保存: 

[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[]=My Hello 

CanFastload=0 

 

   最后把 hello.png hello.desktop  这两个文件放入SD卡,然后将SD卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到Qtopia目录的相应位置:

# cp /sdcard/hello.desktop /opt/Qtopia/apps/Applications/

# cp /sdcard/hello.png /opt/Qtopia/pics 

 

完成后重启开发板,应该可以看到应用程序图标了

 

 

 

 

7、附件(主要含有源代码等)。经过测试已经完全通过。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值