Thank you for your answer.

I made a solution just a bit more generic, which works well:
Qt Code:
  1. class ScaleItem: public QwtPlotScaleItem
  2. {
  3. public:
  4. ScaleItem(const QwtScaleDiv& scaleDiv, QwtScaleDraw::Alignment alignment = QwtScaleDraw::BottomScale,
  5. const double pos = 0.0 ):
  6. QwtPlotScaleItem( alignment, pos), m_scaleDiv(scaleDiv), m_alignment(alignment)
  7. {
  8. }
  9.  
  10. protected:
  11. void updateScaleDiv( const QwtScaleDiv& xScaleDiv,
  12. const QwtScaleDiv& yScaleDiv )
  13. {
  14. switch(m_alignment)
  15. {
  16. case QwtScaleDraw::BottomScale:
  17. case QwtScaleDraw::TopScale:
  18. m_scaleDiv.setInterval(xScaleDiv.interval());
  19. QwtPlotScaleItem::updateScaleDiv( m_scaleDiv, yScaleDiv );
  20. break;
  21. case QwtScaleDraw::LeftScale:
  22. case QwtScaleDraw::RightScale:
  23. m_scaleDiv.setInterval(yScaleDiv.interval());
  24. QwtPlotScaleItem::updateScaleDiv( xScaleDiv, m_scaleDiv);
  25. break;
  26. }
  27.  
  28. }
  29. private:
  30. QwtScaleDiv m_scaleDiv;
  31. const QwtScaleDraw::Alignment m_alignment;
  32. };
To copy to clipboard, switch view to plain text mode 

It gives the following expected result after zooming:
afterzoom.jpg

I know have a question about the labels of these scale. As you can see in the screenshot above, they are hardly reading because the overlap with the colored square. I am using QwtPlotScaleItem::scaleDraw()->setLabelAlignment(Qt::AlignBottom | Qt::AlignLeft); which improves the situation.
However i need to shift a bit the labels (on the left for the horizontal scale, and to the bottom for the vertical scale). I tried the QwtPlotScaleItem::scaleDraw()->setSpacing(40) but it does not shift in the direction I need. Do i need to subclass QwtScaleDraw for this ?

Again, many thanks !

Eric