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)
相關文章
相關標籤/搜索