project(GisFreeMap)

set(CMAKE_BUILD_TYPE Debug)
find_package(Qt4 REQUIRED QtCore QtGui QtXml)
include(${QT_USE_FILE}) include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/core")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/core/symbology-ng")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/core/geometry")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/core/layertree")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/gui")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/gui/editorwidgets/core")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/gui/layertree")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0/src/gui/attributetable")
include_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0-build")
include_directories("E:/BaiduYunDownload/qgis/3rdparty/include") link_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0-build/src/gui/Debug")
link_directories("E:/BaiduYunDownload/qgis/qgis-2.18.0-build/src/core/Debug") add_definitions(-DCORE_EXPORT=)
add_definitions(-DGUI_EXPORT=)
add_definitions(-D_USE_MATH_DEFINES)
add_definitions(-Dnoexcept=)
set(
SRC
main.cpp
) add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME} qgis_gui qgis_core ${QT_LIBRARIES})
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgssinglesymbolrendererv2.h>
#include <qgsmaplayerregistry.h>
#include <qgsvectorlayer.h>
#include <qgsmapcanvas.h>
#include <qgsproject.h>
#include <qgslayertreenode.h>
#include <qgslayertreegroup.h>
#include <qgslayertreeregistrybridge.h
#include <qgsattributetablemodel.h>
#include <qgsattributetableview.h>
#include <qgsattributetablefiltermodel.h>
#include <qgsvectorlayercache.h>
#include <qgseditorwidgetregistry.h>
#include <qgspallabeling.h>
#include <qgscustomlayerorderwidget.h>
int main(int argc, char ** argv)
{
QgsApplication app(argc, argv, true);
QgsApplication::setPluginPath("E:/BaiduYunDownload/qgis/qgis-2.18.0-build/output/plugins/Debug");
QgsApplication::initQgis(); QgsMapCanvas * canvas = new QgsMapCanvas();
// QgsProject::instance()->read(QFileInfo("D:/1.qgs"));
QgsLayerTreeMapCanvasBridge * bridge = new QgsLayerTreeMapCanvasBridge(QgsProject::instance()->layerTreeRoot(), canvas);
QgsVectorLayer * vectorLayer = new QgsVectorLayer("D:/shpFile/china/point_sheng.shp", "point_sheng", "ogr");
QgsVectorLayer * vectorLayer1 = new QgsVectorLayer("D:/shpFile/china/china.shp", "china", "ogr");
QgsVectorLayer * vectorLayer2 = new QgsVectorLayer("D:/shpFile/World/line_world.shp", "line_world", "ogr"); QgsPalLayerSettings layerSettings;
layerSettings.enabled = true; // 设置显示字段
layerSettings.fieldName = vectorLayer->pendingFields()[].name();
layerSettings.centroidWhole = true; // 设置位置参考的中心点 // Label 字体设置
layerSettings.textColor = QColor( , , ); // 设置字体颜色
layerSettings.textFont = QFont( "msyh", ); // 设置字体和大小 // Label 轮廓buffer设置
layerSettings.bufferDraw = true;
layerSettings.bufferColor = QColor( , , ); // 轮廓buffer的颜色
layerSettings.bufferSize = ; // 轮廓buffer大小
layerSettings.bufferTransp = 0.5; // 轮廓buffer的透明度 // Label 阴影绘制
layerSettings.shadowDraw = true;
layerSettings.shadowOffsetAngle = ; // 阴影的角度
layerSettings.shadowOffsetDist = ; // 阴影与Label的距离 layerSettings.setDataDefinedProperty( layerSettings.Size, true, false, NULL, "size" ); // 设置 Label 大小
layerSettings.setDataDefinedProperty( layerSettings.Color, true, false, NULL, "color" ); // 设置 Label 颜色
layerSettings.setDataDefinedProperty( layerSettings.Family, true, false, NULL, "font" ); // 设置 Label 字体 layerSettings.writeToLayer( vectorLayer ); // 将配置写入图层 QgsMapLayerRegistry::instance()->addMapLayer(vectorLayer);
QgsMapLayerRegistry::instance()->addMapLayer(vectorLayer1);
QgsMapLayerRegistry::instance()->addMapLayer(vectorLayer2);
canvas->setAutoFillBackground(true);
canvas->setBackgroundBrush(QBrush(Qt::black));
canvas->show();
QgsEditorWidgetRegistry::initEditors( canvas ); // 一定要做这步,其实最好是main函数一开始就执行这句 QgsVectorLayerCache* lc = new QgsVectorLayerCache( vectorLayer, vectorLayer->featureCount() ); QgsAttributeTableView* tv = new QgsAttributeTableView();
QgsAttributeTableModel* tm = new QgsAttributeTableModel( lc );
tm->loadLayer(); // 一定不要忘记,否则model里面没有图层的属性数据 QgsAttributeTableFilterModel* tfm = new QgsAttributeTableFilterModel( canvas, tm, tm );
tfm->setFilterMode( QgsAttributeTableFilterModel::ShowAll );
tv->setModel( tfm ); tv->show();
QgsCustomLayerOrderWidget * w = new QgsCustomLayerOrderWidget(bridge);
w->show(); QgsProject::instance()->write(QFileInfo("D:/2.qgs")); return app.exec();
}

QGIS的更多相关文章

  1. CentOS7上安装QGIS

    1.加入YUM源 rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm ...

  2. qgis自定义坐标系与qgis.db问题

    将编译好的qgis库整理,屏蔽获取删除环境变量中的路径,测试qgis.exe程序功能 如出现如上提示: 原因:是未找到qgis.db文件,无法拷贝到系统默认的C:/Users/Administrato ...

  3. QGis、Gdal本地中文路径问题

    编译qgis完整项目后,由于Gdal库的原因,中文路径下通过添加矢量数据中数据库中是没有OGR的Oracle数据库功能的: 最开始打算通过重新编译gadl库从内部支持中文的(有成功的麻烦也请告诉我), ...

  4. QGis、Qt对话框上的OK、Open、Cancel、Help等英文翻译

    成功编译qgis,启动程序发现对话框上的OK.Open.Cancel.Help等依然是英文字段,然后查找源码看这些字段是否都添加到了语言翻译包中: 最后发现这些按钮都是qt的QTGui4库中的QDia ...

  5. Qgis连接Oracle

    CMake编译中选择编译Oracle一项以后,编译的qgis才会有连接Oracle数据库的功能. 编译qgis以后,可以通过添加矢量图层中选择Oracle数据库,或是添加Oracle空间图层,或是添加 ...

  6. 用 QGIS 画矢量交通路线图

    一.准备工作 1.安装插件 为了方便画图,我们安装了OpenLayers,QuickOSM两个插件. 如何安装插件,度娘上都有答案.下图中打勾的部分为安装好的插件: OpenLayers提供了一些开放 ...

  7. 研究QGIS二次开发笔记(一)

    为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...

  8. Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发

    关于QGis的二次开发,大致看了一下,基本都是在VC+QT的环境下做环境部署,并且QGis的版本号很老.在mingw下直接开发搭建好开发环境的样例少之又少.基于最新的Qgis2.4.0版本号做了对应的 ...

  9. Qgis插件开发之Qgis源码学习

    Qgis源码中的拖拽.zoomin/out等各个基础功能插件的实现位于qgis_app工程中. 具体头文件为: \QGIS\src\app\qgisapp.h 根据此类可以逐个找到Qgis的基础插件的 ...

随机推荐

  1. location的使用

    <script language="javascript" type="text/javascript"> function setUrl(){   ...

  2. Mock原理学习

    同事搓蛋问了我一个问题,mock的原理是啥,没怎么想出来,于是花了点时间学习了一下. 从Moq这个库入手:https://github.com/moq/moq4 Moq用到了Castle的库用于Dyn ...

  3. Git 和 Github的关系

    惭愧,这个问题到昨天才弄明白! Git 其实是一种版本控制的协议,和SVN/CVS类似,git协议定义了一个版本控制相关的各个操作,和SVN/CVS不同的是,git采用的是分布式的方法,并不需要服务器 ...

  4. 【IOS开发】《多线程编程指南》笔记

    线程是单个应用中可以并发执行多个代码路径的多种技术之一.虽然更新的技术如操作对象(Operation)和Grand Central Dispatch(GCD),提供一个等价现代化和高效的基础设施来实现 ...

  5. Day3:T3DP T4堆排序

    QAQ因为T3的题解说的不是很清楚,但是blogs又不能按照自己想要的顺序排+略有一点强迫症 所以先挖个坑放着,过几天再补上

  6. (转)JS中公共/私有变量和方法

    私有变量 在对象内部使用'var'关键字来声明,而且它只能被私有函数和特权方法访问. 私有函数 在对象的构造函数里声明(或者是通过var functionName=function(){...}来定义 ...

  7. 扩展jquery easyui datagrid编辑单元格

    扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...

  8. Vim 7.4.1952 with Python/Ruby/Lua/Perl/C Syntax built for Ubuntu 16.04 x86_64

    The default Vim provided by Ubuntu 16.04 even did not have Python support. That's insane. I say, wha ...

  9. C++中内存泄漏的检测方法介绍

    C++中内存泄漏的检测方法介绍 首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复. 最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck, ...

  10. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...