Better remove all what you did so far and restart with something like that:

Qt Code:
  1. class SpectrogramData: public QwtRasterData
  2. {
  3. public:
  4. SpectrogramData()
  5. {
  6. m_intervals[ Qt::XAxis ] = QwtInterval( 0, 120 );
  7. m_intervals[ Qt::YAxis ] = QwtInterval( 0, 120 );
  8. m_intervals[ Qt::ZAxis ] = ...
  9. }
  10.  
  11. virtual QwtInterval interval( Qt::Axis axis ) const
  12. {
  13. if ( axis >= 0 && axis <= 2 )
  14. return m_intervals[ axis ];
  15.  
  16. return QwtInterval();
  17. }
  18.  
  19. virtual double value( double x, double y ) const
  20. {
  21. double value = ...; // find the value corresponding to x/y in your vector
  22. return value;
  23. }
  24.  
  25. private:
  26. QwtInterval m_intervals[3];
  27. };
To copy to clipboard, switch view to plain text mode 

If you don't insist on using std::vector you could use QwtMatrixRasterData like demonstrated in the rasterview example. You get at least bilinear interpolation and a valid pixel hint for free.

Uwe