
Originally Posted by
myzinsky
But, whe I zoom everything changed again

Setting a fixed step size doesn't make too much sense when zooming ( consider a step size of 10 for a range of 5-6 ).
But as I wrote before - simply decouple the grid from the ticks of the scales by overloading QwtPlotGrid::updateScaleDiv().
{
public:
...
virtual void updateScaleDiv( const QwtScaleDiv& xScaleDiv, const QwtScaleDiv& yScaleDiv )
{
scaleDiv.setInterval( xScaleDiv.interval() );
double min = xScaleDiv.interval().lowerBound();
double max = xScaleDiv.interval.upperBound();
if ( min > max )
qSwap( min, max );
const int stepSize = 10.0;
min = static_cast<int>( min / stepSize ) * stepSize;
QList<double > ticks;
for ( double tick = min; tick <= max; tick += stepSize )
ticks += tick;
}
class YourGrid: public QwtPlotGrid
{
public:
...
virtual void updateScaleDiv( const QwtScaleDiv& xScaleDiv, const QwtScaleDiv& yScaleDiv )
{
QwtScaleDiv scaleDiv;
scaleDiv.setInterval( xScaleDiv.interval() );
double min = xScaleDiv.interval().lowerBound();
double max = xScaleDiv.interval.upperBound();
if ( min > max )
qSwap( min, max );
const int stepSize = 10.0;
min = static_cast<int>( min / stepSize ) * stepSize;
QList<double > ticks;
for ( double tick = min; tick <= max; tick += stepSize )
ticks += tick;
scaleDiv.setTicks( QwtScaleDiv::MajorTick, ticks );
QwtPlotGrid::updateScaleDiv( scaleDiv, yScaleDiv );
}
To copy to clipboard, switch view to plain text mode
Uwe
Bookmarks