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)