主题 : 求助:大家谁知道qt4-starter是怎么编写的吗? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 56430
精华: 0
发帖: 46
金钱: 235 两
威望: 47 点
综合积分: 92 分
注册时间: 2011-10-07
最后登录: 2023-03-01
楼主  发表于: 2011-11-12 15:00

 求助:大家谁知道qt4-starter是怎么编写的吗?

我也想编一个像qt4-starter这样的程序,可以在qtopia系统上调用我写的qt4程序,我用hello程序做了个实验,加了句system("/bin/qt4")
#include "hello.h"
#include <qlabel.h>
#include <stdlib.h>

HelloForm::HelloForm( QWidget* parent, const char* name, WFlags fl):
HelloBaseForm(parent, name, fl)
{
}
HelloForm::~HelloForm()
{
}

void HelloForm::SayHello()
{
        system("/bin/qt4");
        MessageLabel->setText("Hello, Qtopia world!");
}
想在按button的时候调用qt4的脚本,这个功能可以实现,qt4程序可以打开,可是qtopia界面也存在,2个界面重合在一起,无法操作,不知道qt4-starter是怎么实现的,大家有知道的吗?帮帮我啊,本人刚入门,不太懂啊,要是有qt4-starter的源码就更好了!谢谢!
级别: 新手上路
UID: 59206
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2011-11-21
最后登录: 2017-12-13
1楼  发表于: 2012-06-16 13:32
其实 qt4-starter原理是很简单的。
1.窗体 showFullScreen().
2.做个定时器,启动/bin/qt4脚本。

#include <stdlib.h>
#include <stdio.h>
#include "hello.h"
#include <qapplication.h>
#include <qtimer.h>
HelloForm::HelloForm( QWidget* parent, const char* name, WFlags fl):
HelloBaseForm(parent, name, fl)
{
this->showFullScreen();
QTimer::singleShot(200, this, SLOT(runqt4app()));

}
HelloForm::~HelloForm()
{
}
void HelloForm::runqt4app()
{
system("qt4");
qApp->quit();
}
级别: 新手上路
UID: 68945
精华: 0
发帖: 44
金钱: 220 两
威望: 44 点
综合积分: 88 分
注册时间: 2012-04-28
最后登录: 2017-12-22
2楼  发表于: 2013-02-17 13:50
退出时的启动 qtopia
#include <qapplication.h>
#include "serverapp.h"
#include <stdlib.h>
int main( int argc, char **argv )
{
    QApplication a( argc, argv );
    ServerApplication *app=new ServerApplication( argc, argv,QApplication::GuiServer );
    app->exec();
    app->quit();
    system("source /bin/qtopia &");
    //return a.exec();
}
级别: 新手上路
UID: 68945
精华: 0
发帖: 44
金钱: 220 两
威望: 44 点
综合积分: 88 分
注册时间: 2012-04-28
最后登录: 2017-12-22
3楼  发表于: 2013-02-17 14:00
#include "serverapp.h"
//#include <unistd.h>
#include <qtimer.h>

ServerApplication::ServerApplication( int& argc, char **argv, Type t )
    : QPEApplication( argc, argv, t )
{

    timer = new QTimer( this );
    connect( timer, SIGNAL(timeout()), this, SLOT(timeout()) );
    timer->start( 20 ,true);
    //timer->singleShot(500,this,SLOT(timeout()));
    
}

ServerApplication::~ServerApplication()
{
    delete timer;

}

void ServerApplication::timeout()
{
    system("/usr/bin/killall qpe qss quicklauncher");
       system("/bin/qt4");
}
专心做好自己的事
级别: 新手上路
UID: 89445
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2013-03-28
最后登录: 2015-08-20
4楼  发表于: 2013-05-07 21:24
有谁写出来了吗,分享一个哈
级别: 侠客
UID: 94357
精华: 0
发帖: 62
金钱: 320 两
威望: 64 点
综合积分: 124 分
注册时间: 2013-07-15
最后登录: 2017-09-13
5楼  发表于: 2013-08-16 10:59

选择千锋 选择卓越  千锋3G 手机软件开发培训第一品牌
ios游戏开发培训班
android编程培训班
级别: 侠客
UID: 88237
精华: 0
发帖: 73
金钱: 390 两
威望: 78 点
综合积分: 146 分
注册时间: 2013-03-06
最后登录: 2014-12-03
6楼  发表于: 2013-08-29 16:30
把上面的程序改了一下,可以用了,,不过启动的时候屏幕不是全部一种颜色,,突出qt4时,启动qtopia有点慢,,qt4-starter是怎么实现的qtopia启动很开,,,肯定qtopia没有被kill掉
.................................................................

mai.c

#include <qtopia/qpeapplication.h>
#include "ServerApplication.h"
#include <stdlib.h>

int main(int argc, char **argv )
{
    QApplication a(argc, argv);
    ServerApplication *app=new ServerApplication(argc,argv,QApplication::GuiServer);
    app->exec();
    app->quit();
    ::system("source /bin/qtopia &");
}
......................................................

ServerApplication.h

#if!defined(_SERVERAPPLICATION_H_)
#define _SERVERAPPLICATION_H_
#include "qtopia/qpeapplication.h"
#include <qtimer.h>

class ServerApplication: public QPEApplication
{
   Q_OBJECT
public:
   ServerApplication(int &argc,char **argv,Type t);
   ~ServerApplication();
public slots:
   void timeout();
};

#endif
......................................................

ServerApplication.cpp

#include "ServerApplication.h"
#include <unistd.h>
#include <stdlib.h>

ServerApplication::ServerApplication(int& argc,char **argv,Type t )
    : QPEApplication( argc, argv, t )
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(timeout()) );
    timer->start(10 ,true);  
}

ServerApplication::~ServerApplication()
{
}

void ServerApplication::timeout()
{
    ::system("/usr/bin/killall qpe qss quicklauncher");
    ::system("/bin/myCom");
}
...........................................

myCom-starter.pro

CONFIG +=qtopiaapp
CONFIG -=buildQuicklaunch
HEADERS =ServerApplication.h
SOURCES =main.cpp ServerApplication.cpp
TARGET  =myCom-starter