??xml version="1.0" encoding="utf-8" standalone="yes"?>
http://hi.baidu.com/ugene/blog/item/649595944fb156057af48008.html
1.下蝲qt安装包,到http://qt.nokia.com/downloads下蝲最新的是qt4.7.4Q根据安装环境下载,q里是linux环境Q因此要下蝲qt-everywhere-opensource-src-4.7.4.tar.gz (.tar.gz)?/font>
2.Ҏ需要下载qt creatorQ在http://qt.nokia.com/downloads都可以找到安装所需要的软g?/font>
3.下载下来的qt 4.7.4解压安装Q?/font>
(1)cd /tmp
(2)gunzip qt-everywhere-opensource-src-4.7.4.tar.gz
tar xvf qt-everywhere-opensource-src-4.7.4.tar
(3)cd qt-everywhere-opensource-src-4.7.4
./configure
(4)make (貌似我用了三个钟)
(5)su -c "make install"(要用到root密码Q故要输入sudo passwd rootM改root的密?
(6)PATH=/usr/local/Trolltech/Qt-4.7.4/bin:$PATH
export PATH
4.qt creator的安装,q个推荐下蝲bin格式的安装包Q这个安装比较简单?br />下蝲完成后直接运?/qt-creator-linux-x86-opensource-2.4.0.bin安装Q就跟windows安装软g一样了Q不需要再q行~译之类的了?br />?/configureq一步会问你安装哪一个版本,一个是open(开?的,一个是commercial(商用)的,q时选择oQ然后还会提CZ要不要查看一些东西,没必要,直接输入yes回RQ?/p>
遇到问题:
1.make: g++: Command not found
make: *** [project.o] Error 127
针对q个问题是因为g++没有安装Q通过sudo apt-get install g++安装?/p>
如有必要q要安装sudo apt-get install build-essential(q个是依赖g++的,装了q个׃把g++装好?
安装完g++后再ơ运?/configure卛_?/p>
2.在安装g++完成后再ơ运?/configure后不会再报未发现g++之类的错误,可是又出C
"Basic XLib functionality test failed!”
对于q个错误时因为没有安装xlib库造成的,安装卛_解决?/p>
首先Qsudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev
然后Qsudo apt-get install build-essential(在前面装了后Q在q里我就不用装了)
安装完后再次q行./configureQ即可顺利安装?/p>
3.?/configure完成后会出现
To reconfigure, run 'gmake confclean' and 'configure'.
Qt is now configured for building. Just run 'gmake'.
Once everything is built, you must run 'gmake install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.7.4
开始吓我一跻I以ؓ又出错了呢,后来一看,没有出错Q是提示如果再次./configure该怎么办以及下一步该怎么办的?/p>
没什么问题就下一步make了,q一步时间会相当长,要有耐心啊?/font>
QByteArray twoBytes=data.mid(开始下?/span>,2);
然后我调?/span>toIntQ结果返回都?/span>0Q?/span>
调试讄断点查看twoBytes的|大小?/span>2,值是不可见的qQ?/span>twoBytes[0]=0x05; twoBytes[1]=0xa8;q里假设长度?/span>1448Q即pd六进?/span>0x05a8。最后查看了toInt的说明文和里面的例子才知道Q?/span>05a8?/span>QByteArray里占了四字节时才可以正确转换Q即p?/span>0x30,0x35,0x61,0x38?/span>
QByteArray str("
bool ok;
int hex=str.toInt(&ok,16); //hex==1448,ok==true
int dec=str.toInt(&ok,10); //dec==0,ok==false,because in dec no “a”
如果惌q回ok为真Q可以把a变ؓ0
QByteArray str("0508");//0x30,0x35,0x30,0x38
bool ok;
int hex=str.toInt(&ok,16); //hex==1288,ok==true
int dec=str.toInt(&ok,10); //dec==508,ok==true
最后在|上查了一下,扑ֈ了文章,虽然代码不正,但有了思\好弄了?/span>
思\是?/span>twoBytes从一个字节一个字节的左取到右然后?/span>rtp_length中由高到低放|,大概实现如下Q(可以装成函?/span> int BytesToInt(QByteArray towBytes)Q?/span>
for (int i=0;i<twoBytes.length();i++)
{
rtp_length |=(twoBytes[i] & 0x000000FF);
rtp_length=rtp_length << 8;
}
rtp_length=rtp_length>>8;
我先说明一下我已经~译好的QT版本Q?/span>
D:\Qt\mobile\
~译选项Q?/span>
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\mobile\
~译选项Q?/span>
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\win32\
~译选项Q?/span>
-platform
win32-msvc2008
-debug-and-release
D:\Qt\win32\
~译选项Q?/span>
-platform
win32-msvc2008
-debug-and-release
1Q?span style="FONT: 7pt 'Times New Roman'">
首先我们这四个路径d?/span>VS中,工具->选项->Qt->Builds->AddD:\Qt\mobile\
D:\Qt\mobile\
D:\Qt\win32\
D:\Qt\win32\
以前感觉q里的设|对VS没媄响,现在才发现它们是有媄响的Q它们就是设|环境变?/span>QTDIR的|
q个值在“解决Ҏ理?#8221;中单M的项目名Uͼ然后?/span>VS双?#8220;属性框”Version中可以修?br>Q修改后要重新生成解x案)Q如图:
2Q?span style="FONT: 7pt 'Times New Roman'">
的下拉框中选择“新徏”Q在弹出的对话框中的“键入或选择新^?#8221;选择“Windows Mobile 6 Professional SDK (ARMV4I)”Q?br>选择?#8220;win
3Q?span style="FONT: 7pt 'Times New Roman'">
然后?#8220;解决Ҏ理?#8221;中右击项目,选择属性。在弹出的对话框中我们只需要添加两个东?br>够了。(记得“配置”讄“zdDebug”Q^台选择“Windows Mobile 6 Professional SDK (ARMV4I)”Q?br>?/span>C/C++->预处理器Q在“预处理器定义”中全部替换ؓ以下内容Q?/span>_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_WINDOWS;
$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL;QT_THREAD_SUPPORT;
QT_CORE_LIB;QT_GUI_LIB;QT_XML_LIB
在链接器->命o?/span>->W加选项中添加如下内容:
/subsystem:windowsce,5.00
最后在属性框中修Ҏmobile用的QT版本Q重新生成解x案即可?/span>
Q注Q因?/span>QTDIR值随着QT版本的改变而改变,故头文g?/span>LIB的\径不用再修改Q?/span>
如果有些代码是用?/span>
#ifdef isMobile
#endif
包围的,我们可以在项目属性中C/C++->命o?/span>->附加选项中加入:/D "isMobile"
W二U方法:
另外的办法是在编?/span>QT库之前在插g?/span>pro文g中加?/span>
CONFIG-=embed_manifest_dll
http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
W三U方法:
q有另一U方法,q种Ҏ是在QT库编译时没有?/span>CONFIG-=embed_manifest_dll时用Q?/span>
?/span>main函数里加入如下代码:
然后把相应的DLL文g拯到EXE同一文g夹下Q运行就可以了?/span>
我们先来看一?/span>QT中的QImage对象。在加蝲data数据前,我们要确?/span>QImage加蝲囑փ的空间分配够大Q先假设data是由640*480像素的压~数据解码得来的Q?/span>RGBQ?/span>3字节Q是一个像素,?/span>data的应该是640*480*3个字节;比较一下下面两U方式:
24?/span>(3字节)一个像素,那么p_bits所得到的空间应该是640*480*3个字节,所以刚刚好一个字节对一个字节。所以我们这栯值即可:
另一U方式:
32位(4字节Q一个像素,那么p_bits所得到的空间应该是640*480*4个字节,所以不能以上面的方式赋倹{有没有注意刎ͼq里用了unsigned int而不?/span>unsigned charQ?/span>unsigned int?/span>4个字节的Q?/span>unsigned char ?/span>1个字节的Q所以我们这里做的事情是每一?/span>RGB单元攑ֈp_bits的每?/span>unsigned intQ?/span>4字节Q中。因?/span>p_bits?/span>unsigned int指针Q所?/span>p_bits[i]是4个字节。所以应该这样写Q?/span>