关于QGis1.8二次开发的环境配置

关于QGis1.8二次开发的环境配置


发布日期: 2015-07-21 更新日期: 2015-07-21 编辑:bukun 浏览次数: 4480

标签:

摘要: 要进行二次开发首先就是环境配置。这里使用的QGis版本为1.8。打开Visual Studio 2010,新建一个Qt application(如果没有这个项目模板说明你没有正确安装Qt for vs add-in插件),这样做可以避免我们手动去添加Qt的库文...

要进行二次开发首先就是环境配置。这里使用的QGis版本为1.8。打开Visual Studio 2010,新建一个Qt application(如果没有这个项目模板说明你没有正确安装Qt for vs add-in插件),这样做可以避免我们手动去添加Qt的库文件目录。出现如下界面:

注意将XML library勾上,这个非常重要,不然后面会报错。因为QgsMapCanvas需要用到QDomNode文件,而QDomNode是一个XML文件,包含在Qt的XML library中。

点击Finish之后,生成解决方案。在工程项目上点击右键---属性,出现工程属性配置对话框,在这里我们需要配置QGis的开发库路径,分别包含4个设置步骤,分别是:

1.添加附加包含目录:

选中C/C++选项卡的“常规”选项,在附加包含目录当中加入编译QGis生成的include文件夹路径,如:

2.添加预处理命令:

选中C/C++选项卡下的“预处理器”命令,添加预处理定义,输入下图中的三行预处理命令:

3.添加附加库目录

在链接器选项卡下,打开“常规”,添加附加库目录,将QGis开发库中的lib文件夹添加进来,例如:

4.输入附加依赖项

选择链接器选项卡中的“输入”选项,添加附加依赖项,将下图所示三行个lib文件名称添加进来:

OK,大功告成,下面就是写测试代码了。

将QGis官方文档中的一段代码贴过来,大家可以用此来测试自己的环境是否正确搭建。非常简单,把你的main.cpp文件中的代码替换为下面的代码:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main( intargc, char *argv[] )

{

    QgsApplication a( argc, argv ,true);

//////////////////////////////////////////////////////////////////////////

//注意这三行代码需要更改路径;

    QString myPluginsDir        ="D:/3rd_Party/qgis1.8vs2008/plugins";//插件路径(编译好的qgis文件夹下的plugins文件夹);

        QString myLayerPath         ="E:/Jacory/Work/Clip.shp";//图层路径,必须设置为你电脑里面shp文件的路径,不然打不开数据;

        QStringmyLayerBaseName     = "Clip";//图层名称;

//////////////////////////////////////////////////////////////////////////

    QgsProviderRegistry::instance( myPluginsDir); //初始化插件的目录;

    QgsVectorLayer * mypLayer = newQgsVectorLayer( myLayerPath, myLayerBaseName, "ogr" ); //初始化矢量图层;

    QgsSingleSymbolRenderer *mypRenderer = newQgsSingleSymbolRenderer( mypLayer->geometryType() );

    QList  myLayerSet;

    mypLayer->setRenderer( mypRenderer );
   QgsMapLayerRegistry::instance()->addMapLayer( mypLayer, TRUE );

    myLayerSet.append( QgsMapCanvasLayer(mypLayer, TRUE ) );

    QgsMapCanvas * mypMapCanvas = newQgsMapCanvas( 0, 0 );

    mypMapCanvas->setExtent(mypLayer->extent() );

    mypMapCanvas->enableAntiAliasing( true);

    mypMapCanvas->setCanvasColor( QColor(255, 255, 255 ) );

    mypMapCanvas->freeze( false );


    mypMapCanvas->setLayerSet( myLayerSet);

    mypMapCanvas->setVisible( true );

    mypMapCanvas->refresh();

return a.exec();

}

这里要注意的是上面标注出来的三行路径代码需要更改。

OK,非常简单,将QGis安装目录中的bin文件夹下各种dll文件拷贝过来就能够调试运行了,注意,不是QGis开发包路径,是QGis Desktop安装的路径下面的bin文件夹。当然,你不想安装QGis也可以将OSGeo4W的bin文件夹下的dll和QGis开发库目录的bin文件夹下的dll文件,以及所有用到的第三方库的dll文件都拷贝到VS工程目录的文件夹下也可以。dll文件如下图:

我没有去研究到底哪些需要,哪些不需要,我采取了最简单的办法,把这些dll全部复制过去。。。

最后,调试运行,出现下图所示界面,恭喜你,你成功了!

补充一点:如果你运行时出现“无法找到QDomDocument(或者QDomNode)”的错误,说明你的Qt没有包含XML library,上面已经讲过了。这里你还是可以在VS菜单栏里面选择Qt菜单---Project Settings进行设置,如下图:

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org