Qt+Qgis二次开发:在状态条显示当前鼠标坐标


1  概述

鼠标在地图上移动,须要实时获取当前坐标位置。
2 原理

从当前位置获取视口坐标后,实时转换为地图坐标。
3 方法

处理鼠标位置,必须获取鼠标的当前坐标。可是Qt的鼠标事件由QgsMapCanvas处理。所以,想要显示其坐标,必须由QgsMapCanvas提供支持。

QgsMapCanvas中包含一个信号:voidxyCoordinate(const QgsPoint &p);

只要处理这个信号就能够显示相关坐标。

注:主窗口的状态栏只能经过ui->statusBar()获取,而后向其添加一个label做为显示控件。
3.1 示例

1)   添加信号处理程序函数

//xx.h
    voidshowMousePoint(constQgsPoint&p); //xx.cpp
voidMainWindow::showMousePoint(constQgsPoint&p) { qDebug("movex=%f,y=%f",p.x(),p.y()); m_lblCoordinate.setText(QString("x=%1,y=%2").arg(p.x()).arg(p.y())); }

2)   链接信号和槽ui

//xx.cpp connect(m_pMapCanvas,SIGNAL(xyCoordinates(QgsPoint)),this,SLOT(showMousePoint(QgsPoint)));//QT连接信号与槽的时候不须要列出形参

3)   添加状态栏显示控件this

//主窗口构造函数
   m_lblCoordinate.setMinimumSize (100,20); m_lblCoordinate.setFrameShape (QFrame::WinPanel); m_lblCoordinate.setFrameShadow (QFrame::Sunken); ui->statusBar->addWidget (&m_lblCoordinate)
相关文章
相关标签/搜索