搞了两天,从刚开始的摸不着头脑到现在的小小成果。
小弟特来和大家分享一下。
首先要感谢eddylau 板子的帖子,本人完全是摸索版主的帖子。
打开Qtopia2.2应用程序开发的神秘面纱(x86+arm+源代码+多媒体影音解说)
http://www.aiothome.net/read.php?tid-4399.html 我觉得关键是理解版主的这句话
6. 不要自行用uic来把*.ui档转化为*.cpp及*.h档,这件事情会在运行build脚本时自动完成,
只不过转化出来的*.cpp及*.h档,是储存在一个hidden folder内(用ls -a便可看见).
不要更改这些档案来实行程序所需的功能,正确的做法是自行编写一个子类来继承由
Qt designer设计的那个Form,这样一来便可调用其上的所有控件.这点是整个开发过程
的重点所在.
——————————————————————————————————————————
一开始安装就遇到问题,本人使用的是ubuntu 9.10
x86一直编译不过去,arm版本虽然编译过去了,但无法使用 提示是少了 libqtopia2 这个库。
这让本人很郁闷,这时候我发现友善的NFS文件夹里有这个库,我就把里面的lib拷出来,居然可以了。
废话不多说了,本菜鸟觉的大家一定要把思路理清楚,根据版主的提示。
首先用QT DESIGNER 建立一个 voip_base.ui,它会在build的时候产生voip_base.h 和voip_base.cpp在所在目录的隐藏文件夹里面。
关键就在这里,我们要继承这个基类生成一个子类,然后利用继承过来的元素进行开发,比如发信号,建立槽的响应。
也就是我们自己编一个voip.h 和voip.cpp它们要从基类里面继承过来的。然后进行开发。
(一开始本人没把这两个东西分开,吃了很大的亏了)。
下面我把步骤说一下。
1。首先用QT DESIGNER 建立一个 qt_voip_base.ui保存在文件夹里。
2。创建 build 文件,内容如下:
#!/bin/bash
source /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -spec /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -o Makefile *.pro
make clean
make
3。创建qt_voip.h
#ifndef MYHELLOFORM_H
#define MYHELLOFORM_H
#include "qt_voip_base.h"
#include <qpixmap.h>
#include<qdialog.h>
#include<qvariant.h>
class QtVoipForm : public Form1
{
Q_OBJECT
public:
QtVoipForm( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
virtual ~QtVoipForm();
private slots:
void shownum0();
void shownum1();
void shownum2();
void shownum3();
void shownum4();
void shownum5();
void shownum6();
void shownum7();
void shownum8();
void shownum9();
void shownum10();
void shownum11();
};
#endif // MYHELLOFORM_H
4。创建qt_voip.cpp
#include "qt_voip.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include<qlineedit.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<qcstring.h>
QByteArray ba;
class QString;
QString IP;
QtVoipForm::QtVoipForm( QWidget* parent, const char* name, WFlags fl)
:Form1(parent, name, fl)
{
connect(PushButton1,SIGNAL(clicked()),this,SLOT(shownum1()));
connect(PushButton2,SIGNAL(clicked()),this,SLOT(shownum2()));
connect(PushButton3,SIGNAL(clicked()),this,SLOT(shownum3()));
connect(PushButton4,SIGNAL(clicked()),this,SLOT(shownum4()));
connect(PushButton5,SIGNAL(clicked()),this,SLOT(shownum5()));
connect(PushButton6,SIGNAL(clicked()),this,SLOT(shownum6()));
connect(PushButton7,SIGNAL(clicked()),this,SLOT(shownum7()));
connect(PushButton8,SIGNAL(clicked()),this,SLOT(shownum8()));
connect(PushButton9,SIGNAL(clicked()),this,SLOT(shownum9()));
connect(PushButton10,SIGNAL(clicked()),this,SLOT(shownum10()));
connect(PushButton11,SIGNAL(clicked()),this,SLOT(shownum11()));
connect(PushButton0,SIGNAL(clicked()),this,SLOT(shownum0()));
}
QtVoipForm::~QtVoipForm()
{
}
void QtVoipForm::shownum0()
{
IP = IP + "0";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum1()
{
IP = IP + "1";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum2()
{
IP = IP + "2";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum3()
{
IP = IP + "3";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum4()
{
IP = IP + "4";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum5()
{
IP = IP + "5";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum6()
{
IP = IP + "6";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum7()
{
IP = IP + "7";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum8()
{
IP = IP + "8";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum9()
{
IP = IP + "9";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum10()
{
IP = IP + ".";
LineEdit1->setText(IP);
}
void QtVoipForm::shownum11()
{
const char *ip_string=IP.latin1();
(void)execl("client","client",ip_string,0);
//open(ip_string,O_RDONLY|O_CREAT);
//system("./test ip_string");
}
5。创建qt_voip.pro ,不用qmake -project 了 麻烦 不如自己照着版主的改一下就好了。
CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
DESTDIR = $(PWD)
HEADERS = qt_voip.h
SOURCES = qt_voip.cpp
SOURCES+=main.cpp
INTERFACES = qt_voip_base.ui
desktop.files = qt_voip.desktop
desktop.path = /apps/Applications
INSTALLS += desktop
pics.files=pics/*
pics.path=/pics/Games
PICS_INSTALLS+=pics
TARGET = qt_voip
6。创建main.cpp
#include "qt_voip.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("qt_voip",QtVoipForm)
QTOPIA_MAIN
7。创建qt_voip.desktop
[Desktop Entry]
Comment=An Example Program
Exec=qt_voip
Icon=Games
Type=Application
Name=qt_voip
好的7各文件创建好了 ,下面。./build一下,就好了。
接着用ftp把qt_voip 和 qt_voip.desktop 下到板子里。
qt_voip放进 /opt/Qtopia/bin
qt_voip.desktop 放进 /opt/Qtopia/apps/Applications
好的,完成了,小弟抛砖引玉,不足之处希望大虾指点。谢谢。付源码。
qt_voip.rar (3 K) 下载次数:109 [ 此帖被zhaopanfeng在2010-12-01 16:19重新编辑 ]