在qtopia中添加应用_x86-qtopia(基于mini2440-Friendly)
环境:
Fedora9
vmware6.5
mini2440开发板
arm-linux-gcc 4.3.2
qtopia-2.2.0
安装:
参考友善的mini2440用户手册,分别安装x86平台和arm平台的qtopia-2.2.0。
友善在/opt/FriendlyARM/mini2440/这个目录下,产生了两个子目录,分别是x86-qtopia和arm-qtopia.
在x86平台的qtopia中添加应用
一、详细理解x86-qtopia中的例程hello
1、build
#!/bin/bash
source /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -o Makefile -spec /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0- FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ *.pro
make clean
make
第一行 告诉内核正在运行的是一个bash脚本
第二行 设置环境变量(具体可见setQpeEnv这个文件)
第三-四行 根据工程文件*.pro,产生Makefile
第五行 如果之前曾make过,则删除旧的目标文件
第六行 重新make
(注意make后生成的目标文件在x86-qtopia/qtopia-2.2.0- FriendlyARM/qtopia/bin/,在Makefile里指定了)
2、run-hello
#!/bin/sh
../qtopia-2.2.0-FriendlyARM/qt2/bin/qvfb -width 240 -height 320 -depth 16 &
#export CAMERA_DEVICE=/dev/video1
#qtopia-2.2.0-FrinedlyARM/qt2/bin/qvfb -width 640 -height 480 -depth 16 &
cd ../qtopia-2.2.0-FriendlyARM/qtopia/image
mkdir root 2>/dev/null || true
export HOME=$PWD/root
cd opt/Qtopia
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBARAY_PATH
export QTDIR=$PWD
export QPEDIR=$PWD
export KDEDIR=$PWD/../kde
sleep 3
../../../bin/hello -qws
第一行 告诉内核正在运行的是一个shell脚本
第二行 设置模拟器qtopia的大小240×320
第三-四行 注释(可删除)
第五行 进入image文件夹
第六-七行 ......(暂时不知道功能)
三、在qtopia中添加自己编写的应用程序
步骤与“将hello例程添加到qtopia应用中”的步骤一样,但是这个应用程序是我们自己编写,因此必须要通过编译。
因此这里主要将如何编写我们的应用程序,及如何编译。这里根据我的一个简单程序讲解
这里我假设你已经会通过编写qt程序设计qt界面,而不是通过designer设计qt界面
1、在x86-qtopia下建一个文件夹,取名counter
2、唯一与qt开发有点区别的是main.cpp文件!当然要注意在程序编写过程中由于qt版本的不同,有些类的参数可能不
一样,甚至有些类是不能用的。以下为源程序(不做讲解)。
*.h和*.cpp文件:
counter.h:
#ifndef COUNTER_H
#define COUNTER_H
#include <qlabel.h>
#include <qwidget.h>
#include <qpushbutton.h>
#include <qlayout.h>
class Counter : public QWidget
{
Q_OBJECT
public:
Counter(QWidget *parent=0 , const char *name=0, WFlags f=0);
~Counter();
QPushButton *AddButton;
QPushButton *SubButton;
public slots:
void IncCounter();
void DecCounter();
private:
int counter;
QVBoxLayout *counterVBoxLayout;
QLabel *CounterLabel;
};
#endif
counter.cpp:
#include "counter.h"
Counter::Counter(QWidget *parent, const char *name, WFlags f) : QWidget(parent, name, f)
{
counter = 0;
AddButton = new QPushButton("Add", this);
SubButton = new QPushButton("Sub", this);
CounterLabel = new QLabel(tr("0"), this);
CounterLabel->setAlignment(Qt::AlignCenter);
counterVBoxLayout = new QVBoxLayout(this);
counterVBoxLayout->addWidget(AddButton);
counterVBoxLayout->addWidget(SubButton);
counterVBoxLayout->addWidget(CounterLabel);
QObject::connect(AddButton, SIGNAL(clicked()), this, SLOT(IncCounter()));
QObject::connect(SubButton, SIGNAL(clicked()), this, SLOT(DecCounter()));
}
Counter::~Counter()
{
}
void Counter ::IncCounter()
{
CounterLabel->setNum(++counter);
}
void Counter ::DecCounter()
{
CounterLabel->setNum(--counter);
}
main.cpp:
#include "counter.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("counter",Counter)
QTOPIA_MAIN
//main.cpp 是一个通用的模板,只需要修改第一行和第三行。
3、拷贝:将例程hello下build,run-hello,hello.pro,hello.desktop文件拷贝过来。
修改名字为:run-counter,counter.pro,counter.desktop
4、修改run-counter
最后一句../../../bin/hello -qws,将hello修改为counter
5、修改counter.desktop
Exec=hello //可执行文件的名字 <-修改
Icon=Hello //图标名 <-修改
Type=Application //类型为应用程序
Name=Hello2440 //在界面生显示的名字 <-修改
3、修改counter.pro
CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
DESTDIR = $(QPEDIR)/bin
HEADERS = hello.h //头文件 <-修改
SOURCES = hello.cpp //源程序 <-修改
SOURCES+=main.cpp
INTERFACES = hello_base.ui //用designer生成的,这里没用到 <-删除
TARGET = hello //目标名 <-删除
(注意:没用designer设计界面,则这句必须删除INTERFACES = hello_base.ui)
4、其他的与“将hello例程添加到qtopia应用中”的步骤一样
第八行 进入Qtopia文件夹
第九-十三行 设置环境变量
第十四行 睡眠3秒(至于为什么,暂时不知道)
第十五行 用模拟器打开hello程序
二、将hello例程添加到qtopia应用中(即在x86-qtopia下运行./run出现的qtopia模拟器)
1、理解hello.desktop
[Desktop Entry]
Comment=An Example Program //说明而已,没什么用
Exec=hello //可执行文件的名字
Icon=Hello //图标名
Type=Application //类型为应用程序
Name=Hello2440 //在界面生显示的名字
2、将hello.desktop复制到
x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps /Applications/
3、找一个图标,最好压缩下(我压缩成64×64左右),图标改成png格式,取名Hello。最好在工程文件夹(即x86-
qtopia/hello)下建一个与工程名同名的文件夹(这里为hello)。将该图标复制到该文件夹下。再将该文件夹复制到
x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/
4、将x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/bin/文件夹下的hello可执行文件复制到
x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/bin/
5、重新在x86-qtopia下运行./run,你将能看到添加的名字为Hello2440的应用,点击能运行。