Qwt中picker(拾取器)显示设置

      Qwt中有些时候会用到QwtPlotPicker类来设置绘图中的拾取器,显示当前位置的坐标信息。

若坐标轴的刻度值不是自定义,只需要将picker跟踪模式设置为AlwaysOn

picker->setTrackerMode( QwtPicker::AlwaysOn );

若坐标轴的刻度值是自定义,若将x轴定义为系统时间(分、秒),y轴保持不变,此时显示当前信息,需要继承QwtPlotPicker类覆盖

其中的virtual QwtText trackerTextF( const QPointF &pos ) const函数,代码如下

class Picker: public QwtPlotPicker
{
public:
    Picker( QWidget *canvas ):QwtPlotPicker( canvas )
    {
 
  
    }
protected:
    virtual QwtText trackerTextF( const QPointF &pos ) const
    {
        QString text;
        QDateTime dt;
        dt.setTime_t( ( int )pos.x() ); //获取时间
        text = dt.toString("mm:ss");
        text += " " + QString( "%1" ).arg( pos.y(), 0, 'f', 1 );
 
  
        QwtText qwttext( text );
        return qwttext;
    }
};

      除了对拾取器显示的设置以外,有些时候还需要对拾取器自身的设置。

代码如下:

    picker = new Picker( canvas );
    picker->setTrackerMode( QwtPicker::AlwaysOn );         //跟踪模式  
    picker->setTrackerPen( QColor( Qt::green ) );       //跟踪显示字体颜色
    //只有定义了它 才能设置对应的样式 比如想设置RectRubberBand必须先setStateMachine( new QwtPickerRectPointMachine() );
    picker->setStateMachine( new QwtPickerDragPointMachine() );
    picker->setRubberBandPen( QColor( Qt::green ) );               //拾取器点击后样式颜色       
    picker->setRubberBand( QwtPicker::CrossRubberBand );           //拾取器点击后样式     

你可能感兴趣的:(Qt之Qwt)