解析 VC 2005 下编译安装并开发 QT 4.4.3 应用程序

VC 2005 下编译安装并开发 QT 4.4.3 应用程序是本文要介绍的内容,一部分时从坛子里看的,一部分时心得,不多说,先来看内容。最近研究webkit,顺便研究了一下QT。发现网上流传的一个转帖《VC 2005 下如何编译安装并开发 QT 4.4.0 应用程序》

Qt 是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,Qt支持所有的UNIX系统,包括Linux系统,还支持WinNT/Win2k、Windows 95/98平台。

本文将使用简单的几个步骤说明在VC 2005下如何编译安装并开发QT应用程序:

一、下载及安装

1. 从官方网站http://trolltech.com/lang/cn/downloads/open-source-downloads下载QT最新版本源代码,ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.4.0.zip,假定解压到D:\Qt\4.4.0目录;

2. 从VC 2005的安装路径找到vsvars32.bat,例如:在E:\Program Files\Microsoft Visual Studio 8\Common7\Tools,运行cmd,

 
 
  1. C:\> E:  
  2. E:\> "E:\Program Files\Microsoft Visual Studio 8\Common7\Tools"  
  3. E:\Program Files\Microsoft Visual Studio 8\Common7\Tools> vsvars32.bat  
  4. E:\Program Files\Microsoft Visual Studio 8\Common7\Tools> D:  
  5. D:\> cd D:\Qt\4.4.0  
  6. D:\Qt\4.4.0> configure -debug-and-release -static  
  7. D:\Qt\4.4.0> nmake 

configure -debug-and-release -static参数的意义是告诉QT同时编译为Debug和Release两个版本的静态链接库,不指定参数则编译为Debug版本的动态链接库。 configure大约需要十几分钟,nmake则大约需要1小时左右,视你的电脑性能而定。

3. 将Qt路径添加到VC编译环境中,工具->选项->项目和解决方案->VC++目录,在包含文件一栏添加: D:\Qt\4.4.0\include\QtGui;D:\Qt\4.4.0\include\QtCore;D:\Qt\4.4.0\include,在库文件一栏添加D:\Qt\4.4.0\lib;将QT安装路径添加到Path系统环境变量中,例如:D:\Qt\4.4.0\bin;

二、交叉编译

1. 启动VC,创建一个Hello Qt工程,将工程设置改为使用多字节字符集,因为Qt Application的入口函数不是Unicode的;

2. 启动Qt Designer,新建窗体->选择对话框窗体(第一个选择项),在新建的对话框上面放一个Label控件,将其Title修改为“Hello Qt!”,将该窗体保存到刚才用VC建立的Hello Qt工程目录,文件名为Hello.ui;

3. 将Hello.ui作为源文件添加到Hello Qt工程中,在Hello.ui上点击右键->属性,在属性对话框中选择自定义生成步骤->常规,在命令行一栏输入:uic.exe Hello.ui -o HelloUi.h,说明一栏输入:正在编译Hello.ui ,在输出一栏输入:HelloUi.h,在附加依赖项一栏输入:uic.exe;Hello.ui,点击确定;

如果是QObject的子类,则要用:moc.exe XXX.h -o debug/moc_XXX.cpp命令。 例如:

 
 
  1. E:\backup20080122\qt-win-opensource-src-4.4.3\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB 
  2. -DQT_THREAD_SUPPORT -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include\QtCore" 
  3. -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include\QtCore" -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include\QtGui" 
  4. -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include\QtGui" -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include" -I"."
  5. -I"e:\backup20080122\qt-win-opensource-src-4.4.3\include\ActiveQt" -I"debug" -I"." 
  6. -Ie:\backup20080122\qt-win-opensource-src-4.4.3\mkspecs\win32-msvc2005 -D_MSC_VER=1400 
  7. -DWIN32 WebViewCollection.h -o debug\moc_WebViewCollection.cpp 

注意:也可以不使用手工添加方式添加编译ui文件,直接使用qmake编译成VC工程,但这样会破坏原来的工程设置,因为当ui文件修改或添加新的ui后需要重新qmake,重新生成VC工程,因此这里采用了手工添加并设置编译脚本的方式,qmake的用法如下:

 
 
  1. D:\Hello Qt> qmake -project -t vcapp -o HelloQt.pro  
  2. D:\Hello Qt> qmake 

不需要指定ui文件,qmake会将当前目录所有的ui文件以及C++文件创建一个VC工程。另外QT 4.4是对VC各个版本都兼容的,VC6、VC2003、VC2005、VC2008,编译安装步骤都是一致的。

4、在Hello.ui上点击右键->编译,将在当前工程目录生成HelloUi.h文件;

5、注意:此时需要将生成的HelloUi.h文件添加到工程中。 如果是QObject子类生成的moc_XXX.cpp,也需要添加到工程中。

否则会出现:QtCore.lib(qtimer.obj) : error LNK2001: unresolved external symbol __imp___invalid_parameter_noinfo之类的错误。

6、打开Hello Qt.cpp,在main函数添加启动代码,完整代码如下:

 
 
  1. // Hello Qt.cpp : 定义控制台应用程序的入口点。  
  2. #include "stdafx.h"  
  3. #include "HelloUi.h"   // ui文件编译生成的C++文件  
  4. #include <QApplication> 
  5. int _tmain(int argc, _TCHAR* argv[])  
  6. {  
  7. QApplication app(argc, argv);  
  8. QDialog * dlg = new QDialog(); // Qt 窗口对象会自动回收所有的子窗口对象,这里的dlg将被作为最外层窗口,
  9. 将由QApplication进行回收,因此Qt窗口只能在堆分配对象,且不必使用delete。  
  10. Ui::Dialog ui;   // Dialog为ui文件编译生成的C++类,参见HelloUi.h  
  11. ui.setupUi(dlg);  
  12. dlg->show();  
  13. return app.exec();  

在工程设置附加依赖项中添加QtCore.lib QtGui.lib,编译工程,运行即可出现Hello Qt程序。

Windows程序里面的消息机制,在MAC平台则是苹果事件,各平台的驱动方式各异,Qt则将这些不一致的平台机制统一起来,形成了信号和槽机制,来处理各种系统事件,以实现跨平台的目的,因此Qt程序几乎不经过任何修改,便可以在其它平台编译通过。

但是我用其中的方法时,编译时不能通过:

 
 
  1. QtCore.lib(qtimer.obj) : error LNK2001: unresolved external symbol __imp___invalid_parameter_noinfo 

(后来才知道,这是因为没有把moc生成的moc_XXX.cpp文件添加到工程导致的)

采用qmake方法才正常编译通过。下面把我的方法记录如下:

一、下载及安装

1、从官方网站http://trolltech.com/lang/cn/downloads/open-source-downloads下载QT最新版本源代码,ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.4.0.zip,假定解压到D:\Qt\4.4.0目录;

2. 从VC 2005的安装路径找到vsvars32.bat,例如:在E:\Program Files\Microsoft Visual Studio 8\Common7\Tools,运行cmd,

 
 
  1. C:\> E:  
  2. E:\> "E:\Program Files\Microsoft Visual Studio 8\Common7\Tools"  
  3. E:\Program Files\Microsoft Visual Studio 8\Common7\Tools> vsvars32.bat  
  4. E:\Program Files\Microsoft Visual Studio 8\Common7\Tools> D:  
  5. D:\> cd D:\Qt\4.4.3  
  6. D:\Qt\4.4.3> configure -debug-and-release -static  
  7. D:\Qt\4.4.3> nmake 

configure -debug-and-release -static参数的意义是告诉QT同时编译为Debug和Release两个版本的静态链接库,不指定参数则编译为Debug版本的动态链接库。 configure大约需要十几分钟,nmake则大约需要2小时左右,视你的电脑性能而定。

3、设置环境变量:

我的电脑>属性>高级>环境变量>用户变量里面设置几个变量:

PATH中增加C:\Qt\4.4.3\bin(如果没有就创建),

创建QMAKESPEC值为 win32-msvc2005,这个值还是根据你要生成的Vs版本,6.0 使用win32-msvc, 2003 使用win32-msvc.net, 2005就是 win32-msvc2005  

创建QTDIR值为 C:\Qt\4.4.3

如果你机器上安装多个版本的QT,就通过这三个环境变量来切换了,我同时有C:\Qt\4.0.0,那么就把那些前缀都换成C:\Qt\4.0.0,就使用4.0了。最后为了使的你刚才修改的环境变量生效,重启cmd,可以通过C:\> qmake -v来看你使用的QT版本。

二、交叉编译

1、启动Qt Designer,新建窗体->选择对话框窗体(第一个选择项),在新建的对话框上面放一个Label控件,将其Title修改为“Hello Qt!”,将该窗体保存到HelloQT目录下,文件名为HelloQT.ui;

2、运行命令提示行,到HelloQT目录下:

3、运行 

 
 
  1. HelloQT> qmake -project -t vcapp -o HelloQT.pro  
  2.             HelloQT> qmake 

4、此时,HelloQt文件夹下生成了VC工程文件:HelloQT.vcproj; 此外还有生成的ui_helloQT.h文件

5、将此工程添加到你的解决方案中。

6、向工程中添加helloQT.cpp

 
 
  1. // helloQT.cpp : Defines the entry point for the console application.  
  2. // ui文件编译生成的C++文件  
  3. #include "ui_helloQT.h"  
  4. int main(int argc, char* argv[])  
  5. {  
  6.     QApplication app(argc, argv);  
  7.     QDialog * dlg = new QDialog(); // Qt 窗口对象会自动回收所有的子窗口对象,这里的dlg将被作为最外层窗口,
  8. 将由QApplication进行回收,因此Qt窗口只能在堆分配对象,且不必使用delete。  
  9.     Ui::Dialog ui;   // Dialog为ui文件编译生成的C++类,参见HelloUi.h  
  10.     ui.setupUi(dlg);  
  11.     dlg->show();  
  12.     return app.exec();  

编译,运行通过。

以上基本上可以开发简单的程序了,如果需要使用opengl等其他的,自己google下吧。有米的人也可以直接购买QT的商业版,可以直接集成到VS里面去,有向导等东西。我使用Qt 4.0的还是比较爽的。自己有时间好好看看examples里面的例子,开发的时候也可以作为参考,很好的资料。

小结:VC 2005 下编译安装并开发 QT 4.4.3 应用程序的内容介绍完了,希望本文对你有多帮助,更多资料请参考编辑推荐!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值