7.qgis二次开发qt中实现常用地图工具

效果图

在这里插入图片描述

添加工具条

在mainwindow.ui中右键点击,选择添加工具条toolbar
在这里插入图片描述
在下方点击新建,新建地图工具,新建之后的工具可以在下方直接拖到工具条toolbar中。
在这里插入图片描述
需要注意这个图标如果选择文件,那么你的项目在别人的电脑上可能会找不到这个图片,从而显示不出来图标。那这个应该怎么解决呢?
在这里插入图片描述
在项目中右键,选择add new
在这里插入图片描述
选择qt resource file
在这里插入图片描述
之后resource文件就添加到项目了,右击添加图标需要的图片。
在这里插入图片描述
这个时候在新建工具的时候,点击选择资源,而不是选择文件,弹出的窗口里面就有我们添加的资源文件的图片了
在这里插入图片描述
以下是一些常用地图工具的代码。

mainwindow.cpp中代码

void MainWindow::on_actionfangda_triggered()
{
    //拉框放大地图工具
    QgsMapToolZoom* m_mapToolZoomIn = new QgsMapToolZoom(m_mapcanvas, false);
    m_mapcanvas->setMapTool( m_mapToolZoomIn ); // 工具切换
}

void MainWindow::on_actionshuoxiao_triggered()
{
    //拉框缩小地图工具
    QgsMapToolZoom* m_mapToolZoomOut = new QgsMapToolZoom(m_mapcanvas, true );
    m_mapcanvas->setMapTool( m_mapToolZoomOut ); // 工具切换
}

void MainWindow::on_actionmanyou_2_triggered()
{
    //漫游地图工具
    QgsMapToolPan *tool= new QgsMapToolPan(m_mapcanvas);
    m_mapcanvas->setMapTool(tool);
}

void MainWindow::on_actionfullextent_triggered()
{
    //全图显示地图工具
    m_mapcanvas->zoomToFullExtent();

}

void MainWindow::on_actionclear_triggered()
{
    //清除选择集
    QList< QgsMapLayer * > 	layers = m_mapcanvas->layers();
    foreach (QgsMapLayer *l , layers)
    {
        QgsVectorLayer *l1 = qobject_cast<QgsVectorLayer*>(l);
        l1->removeSelection();
    }
}

void MainWindow::on_actionzoomtoselect_triggered()
{
    //缩放至所选要素
    QList< QgsMapLayer * > 	layers = m_mapcanvas->layers();
    foreach (QgsMapLayer *l , layers)
    {
        QgsVectorLayer *l1 = qobject_cast<QgsVectorLayer*>(l);
        m_mapcanvas->zoomToSelected(l1);
    }
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值