效果图
添加工具条
在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);
}
}