Qgis开发9-显示当前鼠标坐标

Qgis开发9-显示当前鼠标坐标

 

[email protected]

2014年8月24日

2014年8月29日状态栏显示说明

 

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)   连接信号和槽

//xx.cpp

connect(m_pMapCanvas,SIGNAL(xyCoordinates(QgsPoint)),this,SLOT(showMousePoint(QgsPoint)));
 

3)   添加状态栏显示控件

//主窗口构造函数

   m_lblCoordinate.setMinimumSize (100,20);

   m_lblCoordinate.setFrameShape (QFrame::WinPanel);

   m_lblCoordinate.setFrameShadow (QFrame::Sunken);

   ui->statusBar->addWidget (&m_lblCoordinate);

你可能感兴趣的:(开发,qgis,2.4.0)