qtopia2.0桌面环境和qt4应用程序共存の法

开发板:友善之臂smart210(同样适用其他开发板)
linux内核:linux3.0.8

在arm开发板上开发目前只有qtopia2.0的桌面环境,因此进行其qt4程序的开发需要首先关闭掉qtopia,然后配置运行qt4环境配置脚本。对于想拥有和qtopia一样带图标的qt4应用程序貌似开发板还不支持,,,但是我想用啊啊啊啊。。并且还不能舍掉qtopia桌面环境,因为也需要,这就矛盾了 每次都要来回的切着实不爽,,于是就有下文,也有一些替换掉开发板程序的方法,但是比较局限,只能替换部分应用程序(开发板上已安装的几个qt4程序),我们是要想像qtopia一样开发自己的程序,定制桌面图标、添加自己的程序组等等,也就是完全自己控制。。。。。begin!!!
大概思路其实很简单,这样一个qtopia桌面环境下qtopia和qt4共存的程序实际由两个程序组成:
一、是qtopia程序;它的工作是要关闭qtopia环境,然后开启qt4开发环境,最后执行你的qt4程序。
main_
form.cpp:

#include "main_form.h"
#include <stdlib.h>
#include <stdio.h>

TMainForm::TMainForm(QWidget * parent, const char * name, WFlags f):TMainFormBase(parent, name, f)
{
    system("/usr/bin/killall qpe qss quicklauncher");
    system("/bin/gpsshareqt4");
}
TMainForm::~TMainForm()
{
    //close();
}

**.pro工程文件:

CONFIG      += qtopiaapp
CONFIG      -= buildQuicklaunch
HEADERS     = main_form.h
SOURCES     = main_form.cpp main.cpp
INTERFACES      = main_form_base.ui
TARGET      = gpsshareqt2

main_form.h文件:

#if !defined (__MAIN_FORM_H__)
# define __MAIN_FORM_H__

#include "main_form_base.h"
class TMainForm: public TMainFormBase {
        Q_OBJECT
public:
        TMainForm(QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel);
        virtual ~TMainForm() ;

};
#endif

main.cpp:

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

QTOPIA_ADD_APPLICATION("gpsshareqt2",TMainForm)
QTOPIA_MAIN

确实很简单一个窗口部件都没使用。。。

下面就是记得qt4程序了

二:qt4程序
他要做的就是被关闭是启动qtopia桌面环境,我的做法是在主窗口对象的析构函数里加入一句:

MainWindow::~MainWindow(){

    delete ui;
    system("/bin/qtopia &");//这句就是
}

这个做法其实是在运行qt4和qopia之间进行切换,并非严格意义上共存,只是方便了进行qt4运行的操作,不过这效果也是蛮棒的。。

你可能感兴趣的:(qt,ARM,QT4)