天天看點

QWT--滾輪放大縮小和拖拽視窗

一、滾輪放大縮小

QWT中提供了QwtPlotMagnifier類,用于實作滑鼠滾輪放大和縮小圖形的效果,其實本質就是修改x軸和y軸的範圍。

QWT--滾輪放大縮小和拖拽視窗

二、拖拽視窗

QWT中提供了QwtPlotPanner類,用于實作滑鼠拖動畫布的效果,其實本質就是修改x軸和y軸的範圍。

QWT--滾輪放大縮小和拖拽視窗

附一

//頭檔案
QwtPlotZoomer *plot_zoomer;         //框選放大              
QwtPlotMagnifier *plot_magnifier;    //滾輪放大縮小
QwtPlotPanner *plot_panner;          //拖拽視窗

//構造函數        
plot_zoomer = NULL;
plot_magnifier = NULL;
plot_panner = NULL;

//開關函數
void Plot_View::switch_rect_in(bool on_or_off)
{
  if(on_or_off)
  {
    plot_zoomer = new QwtPlotZoomer(current_x,current_y,this->canvas());
    //設定滑鼠鍵為功能鍵
    plot_zoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::MidButton );
    plot_zoomer->setMousePattern(QwtEventPattern::MouseSelect6, Qt::MidButton, Qt::ControlModifier );
    plot_zoomer->setMousePattern(QwtEventPattern::MouseSelect2, Qt::MidButton, Qt::ShiftModifier );

    //設定鍵盤按鍵為功能鍵
    plot_zoomer->setKeyPattern(QwtEventPattern::KeyRedo,Qt::Key_I);
    plot_zoomer->setKeyPattern(QwtEventPattern::KeyUndo,Qt::Key_O);
    plot_zoomer->setKeyPattern(QwtEventPattern::KeyHome,Qt::Key_Home);
  }
  else
  {
    delete plot_zoomer;
    plot_zoomer = NULL;
  }
}
void Plot_View::switch_in_out(bool on_or_off)
{
  if(on_or_off)
  {
    plot_magnifier = new QwtPlotMagnifier(this->canvas());
  }
  else
  {
    delete plot_magnifier;
    plot_magnifier = NULL;
  }
}
void Plot_View::switch_drag(bool on_or_off)
{
  if(on_or_off)
  {
    plot_panner = new QwtPlotPanner(this->canvas());
  }
  else
  {
    delete plot_panner;
    plot_panner = NULL;
  }
}      

繼續閱讀