Qt结合ArcGIS Engine 10.1 开发
- 格式:pdf
- 大小:1.12 MB
- 文档页数:26
文档编号 PTM02_AE201301040051 版本号 V0.1
Qt+ArcGIS Engine10.1开发 Esri中国信息技术有限公司 2013年1月 版权声明 本文档版权为Esri中国信息技术有限公司所有。未经本公司书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的部分或全部,并以任何形式传播。 制定及修订记录 版本 完成日期 编写/修订纪要 编写者 备 注 V0.1 1月2日 刘宇 目 录
1 Qt环境安装 .............................................................................................................................. 4 2 Qt的第一个程序 ...................................................................................................................... 5 3 ArcGIS Engine的环境 .............................................................................................................. 8 4 ArcGIS Engine+Qt(控制台开发) ......................................................................................... 8 5 ArcGIS Engine+Qt(GUI开发) ........................................................................................... 11 5.1 ArcGIS Engine+Qt(GUI开发,使用Esri提供的控件类) ............................................ 11 5.2 代码编写 ........................................................................................................................ 14 5.3 小结................................................................................................................................ 17 5.4 ArcGIS Engine+Qt(GUI开发,使用Qt提供的方法) .................................................. 18 Qt作为一个跨平台C++图形用户界面应用程序开发框架,相当于微软的MFC(只能运行在Windows平台上),Qt命运多舛,几经易主,现在属于芬兰IT服务公司Digia。
1 Qt环境安装 Qt的最新版本是Qt5.0,该版本是在12月中旬发布的,在这里我用的是Qt4.8。1版本,也不建议大家着急着用最新版本,关于软件的下载地址可以在下面找到。 http://download.qt.nokia.com/qt/source/ http://qt-project.org/downloads#qt-other 安装过程很单,只需要点击下一步即可。 因为我采用的是VS2010作为Qt的集成开发环境,整个开发环境需要下载两个软件 http://download.qt.nokia.com/qt/source/qt-win-opensource-4.8.1-vs2010.exe http://releases.qt-project.org/vsaddin/qt-vs-addin-1.1.11-opensource.exe
说明: 如果有人不愿意这么做,还可以使用QtCreator以及qt-win-opensource-4.8.1-mingw.exe的组合,因为新版本的QtCreator已经不包 含mingw,所以要单独下载。 2 Qt的第一个程序 安装完后,需要配置几个环境变量,QMAKESPE(根据自己的情况配置,因为我用的是VS2010,所有配置win32-msvc2010),如下图:
QTDIR(Qt的安装目录),如下图: 在Path中添加Qt的bin目录如下图: 打开VS2010,新建工程可以找到Qt4 的模板: 完成之后,在VS中运行,出现下面的界面,因为我们什么都没做,在弹出的界面上什么都没有,不过没关系,只要能出现,就说明我们的Qt已经可以使用了,如下图: 3 ArcGIS Engine的环境 安装ArcGIS ArcObjects for Cross Platform C++ 的SDK,这个没有什么好说的。
4 ArcGIS Engine+Qt(控制台开发) 安装了SDK之后,我们就需要将ArcGIS Engine的类库等引入到开发环境中,在Qt中引入ArcGIS Engine的类库等信息.在新建立的Qt控制台程序工程右键,找到C/C++,然后找到常规,在右侧的附加包含目录中输入下面三个目录的地址(因为我的有x(86),所以出现了下面的特殊符号): 说明:在MFC中我们除了引入三个目录地址,还配置了预处理器定义“ESRI_WINDOW“,在这里我并没有配置。 配置好这个之后,在主程序文件中输入代码(这个代码我在这里就不做解释,到时候可以看这个文档的姊妹篇- 《VC2010+ArcGIS Engine10.1开发》 ,最后效果如下:
#include #include "ArcSDK.h" #include "qtextstream.h"
int main(int argc, char *argv[]) {
::CoInitialize(NULL); #pragma region 绑定许可 IArcGISVersionPtr ipVer(__uuidof(VersionManager)); VARIANT_BOOL succeeded; if (FAILED(ipVer->LoadVersion(esriArcGISEngine , L"10.1",&succeeded))) return 0; #pragma endregion // #pragma region 初始化许可 IAoInitializePtr ipInit(CLSID_AoInitialize); esriLicenseStatus status; ipInit->Initialize(esriLicenseProductCodeEngine, &status); if (status != esriLicenseCheckedOut) { AoExit(0); return 0; }
#pragma endregion QCoreApplication a(argc, argv); #pragma region 打开工作空间 IWorkspaceFactoryPtr ipWorkspaceFactory(CLSID_ShapefileWorkspaceFactory); IWorkspacePtr pWs; BSTR bstr_str; QString q_str="D:\\guest\\chinasimplify"; bstr_str = SysAllocString(q_str.utf16());
HRESULT hr=ipWorkspaceFactory->OpenFromFile(bstr_str,0,&pWs); SysFreeString(bstr_str); QString q_str1="china_simply.shp"; BSTR bStringWS=SysAllocString(q_str1.utf16());
if (FAILED(hr)) { return 0; }
#pragma endregion #pragma region QI 这里和NET下不一样 IFeatureWorkspacePtr ipRastWork (pWs);
#pragma endregion #pragma region 打开要素类并获取个数 IFeatureClassPtr pFtClass;
hr=ipRastWork->OpenFeatureClass(bStringWS,&pFtClass); SysFreeString(bStringWS);
if (FAILED(hr)) { return 0; } long pCount=0; pFtClass->FeatureCount(NULL,&pCount); #pragma endregion
QString s = QString::number(pCount, 10); QTextStream cout(stdout); cout< QString str;