• 4132阅读
  • 1回复

[提问]各位大神帮忙,Qwtplot图像缩放显示不正确 [复制链接]

上一主题 下一主题
离线萧萧柏
 

只看楼主 倒序阅读 楼主  发表于: 2014-12-10
开发环境:vs2008+Qt4.8.5+Qwt6.1.1
问题描述:在显示图像时,初始显示是正确的,当进行放大然后再缩小时,比例尺不会返回到图像的初始状态,而是回到一个固定的状态,x轴、y轴的范围均是0-1000,如下图所示:
开始时:
左键选择放大后,右击恢复原始大小后:

此时比例尺不再是原来的比例尺,而变成了0-1000,有人遇到这个问题么?

相关代码的主要部分
measureDataCollect::measureDataCollect(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

        //图像区域
ui.qwtPlot->setCanvasBackground( QColor( 29,100,141));

//图例
m_legend = new QwtLegend;
m_legend->setDefaultItemMode( QwtLegendData::Checkable );
ui.qwtPlot->insertLegend(m_legend,QwtPlot::BottomLegend );

m_grid = new QwtPlotGrid();
m_grid->attach(ui.qwtPlot);

//缩放
QwtPlotZoomer* zoomer = new QwtPlotZoomer( ui.qwtPlot->canvas() );
zoomer->setMousePattern( QwtEventPattern::MouseSelect2,
Qt::RightButton, Qt::ControlModifier );
zoomer->setMousePattern( QwtEventPattern::MouseSelect3,
Qt::RightButton );


//比例尺
ui.qwtPlot->setAxisScale( QwtPlot::xBottom, 0, 200 );
ui.qwtPlot->setAxisScale( QwtPlot::yLeft, 400, 800 );

QwtPlotCurve *curve = new QwtPlotCurve();
curve->setTitle("11111" );
/*curve->setOrientation( Qt::Vertical );*/
QPolygonF points;
int i=10;
points << QPointF( 0+i*10, 300+i*10 ) << QPointF( 2.0+i*10, 400+i*10 )
<< QPointF( -(1.0+i*50), 312+i*10 ) << QPointF( 0.5+i*10, 446.8+i*10 )
<< QPointF( 4.0+i*10, 557.9+i*10 ) << QPointF( 5.0+i*10, 670.1+i*10 );
curve->setSamples(points);
curve->attach(ui.qwtPlot);
}

请各位大神帮忙,已经调试了几天了,还是没有任何结果。。。。
离线萧萧柏

只看该作者 1楼 发表于: 2014-12-10
搞定了,利用zoomer->setZoomBase()函数
快速回复
限100 字节
 
上一个 下一个