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