获取选中点对于Qcustomplot坐标轴的坐标值

11 篇文章 13 订阅

原理是通过鼠标事件获取点击的坐标点,然后经过一系列转换,获取坐标值:
1、头文件中定义鼠标事件槽函数:

private slots:
void slot_mouseRelese(QMouseEvent*);

2、源文件中定义信号槽:

//Qcustomplot鼠标事件信号槽
    connect(ui->customplot, SIGNAL(mouseRelease(QMouseEvent*)),this, SLOT(slot_mouseRelese(QMouseEvent*)));

3、在Qcustomplot的初始化函数中,确定鼠标点击的精度:

     ui->customplot->setSelectionTolerance(1);

4、编写槽函数:

void Widget::slot_mouseRelese(QMouseEvent *event) 
{
//排除非左鼠标键
    if (event->button() != Qt::LeftButton){        return;    }

//获取点击的点坐标
    QPointF ChickedPoint = event->pos();
//排除区间外鼠标点
    if(!ui->customplot->viewport().contains(event->pos())){return;}
//将像素坐标转换为轴值
     double currentx = ui->customplot->xAxis->pixelToCoord(ChickedPoint.x());
     double currenty = ui->customplot->yAxis->pixelToCoord(ChickedPoint.y()); 
//使用QToolTip输出值,
    QToolTip::showText(mapToGlobal(event->pos()),QString("当前点值为:%1").arg(currenty),this); 
}

需要注意的是:QToolTip::showText的函数原型将第一个参数视为全局坐标,当窗口不为全屏时,会造成困扰(QToolTip的输出信息可能会在窗口之外),event->pos()获取的是被点击的点在窗体中的坐标,而不是在整个屏幕中的坐标,例如,窗体坐标为(0,0)的点被点击,QToolTip::showText的输出信息就会出现在屏幕左上角而不是窗体左上角。因此,我们需要用函数mapToGlobal将点击的窗体坐标转换为全局坐标。(如果该窗体有父窗体,还需要使用mapToParent()将窗体坐标先装换为父窗体坐标再转换为全局坐标)

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值