ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

qt使用qwt 跟随鼠标显示坐标

2022-07-05 20:00:45  阅读:228  来源: 互联网

标签:info picker qwt const qt pos 01 include 鼠标


 

 

头文件

 

#include <qwt_plot_canvas.h>
#include <qwt_plot_layout.h>
#include <qwt_plot_picker.h>
#include <qwt_picker_machine.h>
#include <qwt_painter.h>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_plot_marker.h>
#include <qwt_plot_grid.h>
#include <qwt_plot_magnifier.h>
#include <qwt_plot_panner.h>
#include <qwt_legend.h>
#include <qwt_plot_directpainter.h>
#include <qwt_series_data.h>
#include <qwt_symbol.h>
#include <qwt_interval.h>
#include <qwt_date_scale_draw.h>
#include <qwt_plot_zoomer.h>
#include <qwt_plot_renderer.h>//保存用

 

 初始化时候

        picker_01 = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft,
                                                  QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn,ui->plot_temp->canvas());
        picker_01->setStateMachine(new QwtPickerDragPointMachine());
        picker_01->setRubberBandPen(QColor(Qt::blue));//线的颜色
        picker_01->setRubberBand(QwtPicker::CrossRubberBand);
        picker_01->setTrackerMode(QwtPicker::AlwaysOn);//被激活时候显示
        picker_01->setTrackerPen(QColor(Qt::black));//字的颜色

 

 

注意在获取selected时候我使用两种方式,一种是直接旧的connect方式,一种lambda方式,经过测试lambda方式失败

 

        connect(picker_01,QOverload<const QPointF & >::of(&QwtPlotPicker::selected),this,[=](const QPointF &pos){
            QString info; info.sprintf("x:%d y:%d",pos.x(),pos.y());
            myDebugMsg(info);
            //
        });//失败
        //void selected( const QPolygon &polygon )
        connect(picker_01,QOverload<const QPolygon & >::of(&QwtPicker::selected),this,[=](const QPolygon &pos){
            //QString info="test"; //info.sprintf("x:%d y:%d",pos.x(),pos.y());
            //myDebugMsg(info);
            QPoint point = ui->plot_temp->canvas()->mapFromGlobal(QCursor::pos());
            QString info =  QString("x = %1, y = %2").arg(ui->plot_temp->invTransform(QwtPlot::xBottom,point.x())).arg(ui->plot_temp ->invTransform(QwtPlot::yLeft,point.y()) );
            myDebugMsg(info);
        });//失败
        //testslot

 

使用旧版connect方式成功

connect( picker_01, SIGNAL( selected( const QPolygon & ) ), SLOT( testslot( const QPolygon & ) ) );
        connect( picker_01, SIGNAL( selected( const QPointF & ) ), SLOT( testslot2( const QPointF & ) ) );

 

    void testslot(const QPolygon &pos){
        //QPoint point = ui->plot_monitoring->canvas()->mapFromGlobal(QCursor::pos());
        //QString info =  QString("x = %1, y = %2").arg(ui->plot_monitoring->invTransform(QwtPlot::xBottom,point.x())).arg(ui->plot_monitoring ->invTransform(QwtPlot::yLeft,point.y()) );
        QString info = "test";
        myDebugMsg(info);
    }
    void testslot2(const QPointF &pos){
        QString info; info.sprintf("x:%f y:%f",pos.x(),pos.y());
        myDebugMsg(info);
    }

 

 

、、喵喵个熊

 

标签:info,picker,qwt,const,qt,pos,01,include,鼠标
来源: https://www.cnblogs.com/RYSBlog/p/16448437.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有