QGis(二)添加缩放漫游工具栏

QGis添加图层后可以用鼠标滚动缩放,如果想添加图标到工具栏实现相同的效果,如图:


(1)在QMainWindow中添加如下变量:

QToolBar *mpMapToolBar;	///<地图操作相关的工具栏
QgsMapTool *mpPanTool;	///<漫游
QgsMapTool *mpZoomInTool;///<放大
QgsMapTool *mpZoomOutTool;///<缩小
QgsMapTool *mpZoomFull;	///<全图显示

在Qt设计师里面添加Action:


(2)然后在初始化函数里添加:

//添加工具栏上按钮
mpMapToolBar = addToolBar(tr("Tools"));
mpMapToolBar->addSeparator();
mpMapToolBar->addAction(ui.mpActionPan);
mpMapToolBar->addAction(ui.mpActionZoomIn);
mpMapToolBar->addAction(ui.mpActionZoomOut);
mpMapToolBar->addAction(ui.mpActionZoomFull);

mpPanTool= new QgsMapToolPan(mainMapCanvas);  
mpPanTool->setAction(ui.mpActionPan);  
mpZoomInTool = new QgsMapToolZoom(mainMapCanvas,false);  
mpZoomInTool->setAction(ui.mpActionZoomIn);  
mpZoomOutTool = new QgsMapToolZoom(mainMapCanvas,true);  
mpZoomOutTool->setAction(ui.mpActionZoomOut);  
(3)添加信号槽函数连接:

connect(ui.mpActionPan,SIGNAL(triggered()),this,SLOT(panMode()));  
connect(ui.mpActionZoomIn,SIGNAL(triggered()),this,SLOT(zoomInMode()));  
connect(ui.mpActionZoomOut,SIGNAL(triggered()),this,SLOT(zoomOutMode()));  
connect(ui.mpActionZoomFull, SIGNAL(triggered()), this, SLOT(zoomFull()));
(4)槽函数实现:

void MainWindow::zoomInMode()
{
	mainMapCanvas->setMapTool(mpZoomInTool);
	if ( mainMapCanvas->layer(0)->type() == QgsMapLayer::RasterLayer)
	{
		return;
	}
	QgsVectorLayer *pLayer=(QgsVectorLayer *)mainMapCanvas->layer(0);
	pLayer->removeSelection(true);
}

void MainWindow::zoomOutMode()
{
	mainMapCanvas->setMapTool(mpZoomOutTool);
	if ( mainMapCanvas->layer(0)->type() == QgsMapLayer::RasterLayer)
	{
		return;
	}
	QgsVectorLayer *pLayer=(QgsVectorLayer *)mainMapCanvas->layer(0);
	pLayer->removeSelection(true);
}

void MainWindow::panMode()
{
	mainMapCanvas->setMapTool(mpPanTool);
	ui.mpActionPan->setCheckable(true);
	ui.mpActionPan->setChecked(true);
	if ( mainMapCanvas->layer(0)->type() == QgsMapLayer::RasterLayer)
	{
		return;
	}
	QgsVectorLayer *pLayer=(QgsVectorLayer *)mainMapCanvas->layer(0);
	pLayer->removeSelection(true);
}

void MainWindow::zoomFull()
{
	mainMapCanvas->zoomToFullExtent();
	if ( mainMapCanvas->layer(0)->type() == QgsMapLayer::RasterLayer)
	{
		return;
	}
	QgsVectorLayer *pLayer=(QgsVectorLayer *)mainMapCanvas->layer(0);
	pLayer->removeSelection(true);
}
上面的mainMapCanvas就是已经加载了矢量图层的。




  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QGIS高级数字化工具栏是一个功能强大的工具集合,旨在帮助用户更高效准确地进行地理信息系统(GIS)的数字化工作。 首先,高级数字化工具栏提供了一系列的绘制工具,包括点、线、多边形、圆、椭圆等,用户可以根据需要选择相应的绘制工具,通过简单的点击和绘制操作,快速生成或修改要素。 其次,高级数字化工具栏还提供了一些高级的编辑和修整工具,例如节点编辑、顶点编辑、边编辑、环编辑等。通过这些工具,用户可以对绘制的要素进行精细调整和修改,使得要素与实际地理特征更加吻合。 此外,高级数字化工具栏还支持一些特殊要素的数字化,如文字标注、注记、方向箭头等。这些工具可以帮助用户更好地展示地理信息,提供更清晰的图像说明。 除了上述功能,高级数字化工具栏还提供了一些辅助工具,如捕捉工具、缩放工具、旋转工具等。这些工具可以帮助用户更好地控制和操作数字化过程,提高工作效率和准确性。 最后,高级数字化工具栏还支持多种输出格式和数据交换方式,用户可以将数字化结果导出为常见的GIS数据格式,如Shapefile、GeoJSON等,或者直接通过复制粘贴、数据连接等方式与其他GIS软件进行数据交换。 总之,QGIS高级数字化工具栏为用户提供了丰富多样的功能和工具,帮助用户高效准确地进行GIS的数字化工作,是地理信息系统中不可或缺的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值