smart210上Qt应用程序开发实例(加法计算器)

声明:本文是在学习和根据友善之臂《mini6410 Qt和Qtopia编程指南》做实验的过程中所遇到的问题和解决方法的整理和总结。


实验平台

硬件:  友善之臂smart210

软件:ubuntu10.04, qt2.2.0


1、在 Linux 终端中键入以下命令创建目录

  #mkdir /opt/FriendlyARM/mini210/linux/arm-qtopia/myqt_apps

  在myqt_apps目录下创建 mycalc 作为本示例的项目目录
  #cd /opt/FriendlyARM/mini210/linux/arm-qtopia/myqt_apps
  # mkdir mycalc

2、使用 designer 工具设计图形界面
  Qt/Qtopia 都带有 designer 工具,可以设计所见即所得的图形界面,我们现在就使用 designer 工具来设计 mycalc 程序的主界面,主  界面将保存成名为 main_form_base.ui 的 ui 文件1,输入如下命令启动 designer 工具,并以 ui 文件名作为参数

 # cd mycalc
 # /opt/FriendlyARM/mini210/linux/arm-qtopia//qtopia-2.2.0-FriendlyARM/qt2/bin/designer main_form_base.ui
 在弹出的 New Form 界面中,选择“Widget”然后点击”OK“

 修改窗口大小、添加控件、设置控件属性、控件名、添加控件的slot函数

3、编写代码
  包括三个源文件(main_form.cpp、main.cpp、main_form.h), 一个项目文件(mycalc.pro),一个编译脚本(分别用x86版和arm版,看程序   在什么平台运行)
  main.cpp代码:
   #include "main_form.h"
   #include <qtopia/qpeapplication.h>
         QTOPIA_ADD_APPLICATION("mycalc”,TMainForm)
         QTOPIA_MAIN
  
  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 calcButtonClicked();
void closeButtonClicked();
   };
#endif

main_form.h 文件中包含了 main_form_base.h 头文件,这个 main_form_base.h 头文件不需要
用户编写,编译时由 uic 编译器根据 main_form_base.ui 文件自动生成的。

main_form.cpp代码:
#include "main_form.h"
#include <qlineedit.h>
void TMainForm::calcButtonClicked()
{
  m_result->setText( "" );
  if (m_x->text().isEmpty() || m_y->text().isEmpty()) 
       {
   return ;
    }
 
       bool ok = false;
  int x = m_x->text().toInt(&ok);
 if (!ok)
       {
    m_x->setText("");
    return ;
  }
  ok = false;
  int y = m_y->text().toInt(&ok);
  if (!ok) 
        {
    m_y->setText("");
     return ;
  }
  m_result->setText( QString::number( x + y ) );
}

void TMainForm::closeButtonClicked()
{
close();
}




编写项目文件 mycalc.pro

CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
HEADERS = main_form.h
SOURCES = main_form.cpp main.cpp
INTERFACES = main_form_base.ui
TARGET = mycalc



上面的项目文件中, CONFIG+=qtopiaapp 表示要编译的是一个 Qtopia 程序, HEADERS 和
SOURCES 列出了 mycalc 的源代码和头文件清单,而 TARGET 则指定最后生成的可执行文件名为
mycalc, CONFIG-=buildQuicklaunch 的意思是需要编译成一个独立的可执行程序,而不是应用程序
插件。


PC 版本的编译脚本 buildhost.sh
#!/bin/sh
source /opt/FriendlyARM/mini210/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

如果   无法执行脚本就使命令分条执行,运行完之后生成mycalc可执行文件

(4)运行mycalc
运行./run,使得模拟器运行起来
Qtopia 运行起来后,并进入系统后,输入如下命令运行 mycalc:

# cd /opt/mini6410/qtopia2_apps/mycalc
# export QTDIR=/opt/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/
# export QPEDIR=/opt/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/
# export HOME=$QPEDIR/root/
# export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBARAY_PATH
# ./mycalc

以上是PC版的qt程序开发流程


接下来是编译出在ARM上运行的程序
在arm-qtopia目录下编写一个脚本 buildarm.sh 来执行 ARM 版本的编译工作,
#!/bin/sh
source /opt/mini6410/qtopia-free-2.2.0/setQpeEnv
qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro
make -f Makefile.target clean
make -f Makefile.target

运行脚本后会生成mycalc可执行文件,可通过命令行来运行程序。
在实验的过程中,在pc的串口命令行通过直接运行 ./mycalc会提示找不到库文件的路径,但是在arm板上直接在中端输入是可以运行起来的,奇了怪了。怎么让程序在串口的控制台的命令行让他跑起来,在板子上输入命令太麻烦。可以这样:
#cp /bin/qtopia  /opt/Qtopia/bin/run_my_calc
修改最后一行
exec $QPEDIR/bin/qpe 1>/dev/null 2>/dev/null                                     
为exec $QPEDIR/bin/mycalc 1>/dev/null 2>/dev/null


然后运行  ./run_my_cacl  就可以看到qt界面在arm的板子上运行了。

老通过命令行来运行也不是个办法。
得加个图标,直接点击图标就运行程序才行。

选取或设计一png格式的图像文件作为图标,命名为mycalc.png

编写一个desktop文件
命名为mycalc.desktop
文件的内容为
[Translation]
File=QtopiaSettings
Context=mycalc
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=mycalc
Icon=mycalc
Type=Application
Name[]=My Calculator
CanFastload=0


把desktop文件放入 /opt/Qtopia/apps/Applocations/目录下,png图标放入opt/Qtopia/pics目录下,可执行文件放/opt/Qtopia/bin目录下,开机可以看到该图标,电机即可运行。
(实验过程中发现,开机后多了一个有问号的图标,点击后提示找不到定义的应用)
解决的办法就是复制一个原先系统中有的desktop文件,在此基础上就行修改,最终的desktop文件如下
[Desktop Entry]
Comment[]=My calc
Exec=mycalc
Icon=mycalc
Type=Application
#MimeType=audio/*
Name[]=My calculator
[Translation]
File=QtopiaApplications
Context=mycalc
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate hyphenation
保存,重启,一切搞定。






















  

 





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值