一、滾輪放大縮小
QWT中提供了QwtPlotMagnifier類,用于實作滑鼠滾輪放大和縮小圖形的效果,其實本質就是修改x軸和y軸的範圍。
二、拖拽視窗
QWT中提供了QwtPlotPanner類,用于實作滑鼠拖動畫布的效果,其實本質就是修改x軸和y軸的範圍。
附一
//頭檔案
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;
}
}