主题 : QT下的IP电话界面设计 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 33269
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2010-11-28
最后登录: 2012-03-11
楼主  发表于: 2010-12-01 16:12

 QT下的IP电话界面设计

  搞了两天,从刚开始的摸不着头脑到现在的小小成果。
小弟特来和大家分享一下。
首先要感谢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重新编辑 ]
级别: 新手上路
UID: 33269
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2010-11-28
最后登录: 2012-03-11
1楼  发表于: 2010-12-01 16:17
大家注意qt_voip.cpp文件里的
void QtVoipForm::shownum11()
这个函数里面的东西去掉,这是我在开发调用的其他程序。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2010-12-01 20:31
顶一个
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 31265
精华: 0
发帖: 44
金钱: 220 两
威望: 44 点
贡献值: 0 点
综合积分: 88 分
注册时间: 2010-10-28
最后登录: 2011-09-01
3楼  发表于: 2010-12-15 16:32
顶一个
级别: 侠客
UID: 9105
精华: 0
发帖: 95
金钱: 755 两
威望: 307 点
贡献值: 0 点
综合积分: 190 分
注册时间: 2009-09-17
最后登录: 2017-09-13
4楼  发表于: 2011-01-09 14:42
不好看
级别: 新手上路
UID: 63250
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2012-02-16
最后登录: 2012-02-16
5楼  发表于: 2012-02-16 19:07
第4个文件中qt_voip.cpp中得析构函数
QtVoipForm::~QtVoipForm()
{
}
为什么为空,求解释
级别: 新手上路
UID: 133556
精华: 0
发帖: 21
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2017-07-06
最后登录: 2017-10-28
6楼  发表于: 2017-09-25 17:00
谢谢分享!