qtopia 的hello world程序的记录

本文介绍了一个使用Qt开发的嵌入式应用程序案例,包括hello.desktop文件配置、hello.pro项目设置、main.cpp主程序编写等内容。文章详细展示了如何通过Qt进行图形界面设计,并实现定时任务等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.hello.desktop文件

http://blog.chinaunix.net/uid-26729065-id-3212772.html

[Desktop Entry]
Comment=An Example Program <---描述
Exec=hello                            <---可执行程序
Icon=Games                        <----图标
Type=Application                 <---类型
Name=Hello2440                 <----图标下面的名字

2.hello.pro文件

 

CONFIG  += qtopiaapp
CONFIG  -= buildQuicklaunch
DESTDIR = $(PWD)

INCLUDEPATH += . /usr/local/include/opencv

LIBS += /usr/local/lib/libcv.so.4 \
        /usr/local/lib/libcvaux.so.4 \
        /usr/local/lib/libcxcore.so.4 \
        /usr/local/lib/libhighgui.so.4 \
        /usr/local/lib/libml.so.4 \
        -lpthread

HEADERS = hello.h    //头文件

SOURCES = hello.cpp  //源文件

SOURCES+=main.cpp

desktop.files = hello.desktop  //桌面文件
desktop.path = /apps/Applications
INSTALLS += desktop

INTERFACES = hello_base.ui
TARGET  = hello    //生成的可执行文件

3.main.cpp

#include "hello.h"
#include <qtopia/qpeapplication.h>

QTOPIA_ADD_APPLICATION("hello",HelloForm)//类名称
QTOPIA_MAIN

 

4.hello.h

#ifndef HELLOFORM_H
#define HELLOFORM_H
#include "hello_base.h"
#include <pthread.h>
#include <qtimer.h>
#include <qlabel.h>
#include <qstring.h>
#include <qtimer.h>
#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h>
#include <qpixmap.h>
#include <qimage.h>
#include <qdir.h>

//class QDir;
class HelloForm : public HelloBaseForm(designer设计的类名)
{
 Q_OBJECT
public:
    HelloForm( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
    virtual ~HelloForm();
protected:
    virtual void SayHello();
    
 
 QTimer *timer;
 int i, j, t1, t2, t3;
 QDir dir;
 
private slots:
 void showThread();
 void test1();
 void test2();
protected:
 void timerEvent( QTimerEvent *e );
};

#endif // HELLOFORM_H

槽是普通的 C++ 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。

既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的 C++ 成员函数一样,槽函数也分为三种类型,即 public slots、private slots 和 protected slots。

  • public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
  • protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
  • private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。

槽也能够声明为虚函数,这也是非常有用的。

槽的声明也是在头文件中进行的。

5.hello.cpp

#include "hello.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include <qtextcodec.h>
#include <qtopia/global.h>
#include <qtopia/applnk.h>
#include <qtopia/qpeapplication.h>
#include <qfile.h>
#include <qdir.h>
QTextCodec *codec=QTextCodec::codecForName("UTF-8");
HelloForm::HelloForm( QWidget* parent, const char* name, WFlags fl):
   HelloBaseForm(parent, name, fl), dir("/mnt")

 i=j=0;
 setCaption(codec->toUnicode("第一个测试程序"));//qt文字编码
 PushButton1->setText(codec->toUnicode("你好"));
 
 timer = new QTimer(this);
 timer->start(10);
 connect(timer, SIGNAL(timeout()), this, SLOT(test1()));/*QTimer类提供了定时器信号和单触发定时器。 它在内部使用定时器事件来提供更通用的定时器。QTimer很容易使                                                                                              用:创建一个QTimer,使用start()来开始并且把它的timeout
()连接到适当的槽。当这段时间过去了,它将会发射                                                                                              timeout()信号 */


t1=startTimer( 100 );//其返回值为t1,即其timerId为t1
 t2=startTimer( 10 );//其返回值为t2,即其timerId为t2

 t3=startTimer( 10000 );//其返回值为t3,即其timerId为t3

}
HelloForm::~HelloForm()
{
}

void HelloForm::showThread()
{
 TextLabel1->setNum(i);
 TextLabel2->setNum(j);
}

void HelloForm::test1()
{
 TextLabel1->setNum(i++);
}

void HelloForm::test2()
{
}

void HelloForm::SayHello()
{
 
 dir.setFilter(QDir::Files);
 int i,j=dir.count()-1;
 for (i=0;i<=j;i++)
  dir.remove(dir[i]);
}

void HelloForm::timerEvent(QTimerEvent *e)
{
 if (e->timerId()==t3)
 test2();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值