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

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

    3)   添加状态栏显示控件

       //主窗口构造函数
       m_lblCoordinate.setMinimumSize (100,20);
       m_lblCoordinate.setFrameShape (QFrame::WinPanel);
       m_lblCoordinate.setFrameShadow (QFrame::Sunken);
       ui->statusBar->addWidget (&m_lblCoordinate)
  • 相关阅读:
    数据库中group by和having语法使用方法
    loadrunner---HTML 和URL两种模式录制的区别
    loadrunner---设置检查点
    jmeter---接口测试
    H5前端页面性能测试
    Nginx服务器中的Nginx.conf配置文件主要内容解释
    测试用例的八大要素
    mysql在linux中的操作命令
    软件兼容性测试
    liunx中的gcc命令
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/10380741.html
Copyright © 2020-2023  润新知