Well this one should be doable with using QwtDirectPainter. All you need to do is to call replot manually once, when the curve restarts - like it is done in the oscilloscope example.
In this case all previous points have a different position, what means you always have to replot. Then it depends on how many points you have and of course on the specific attributes being used for drawing the curve.and the case in which the last N traces are kept on the monitor (at the moment I have N QwtPlotCurve which I update circularly with new traces with setRawSamples method).
For reducing the number of points I again recommend to have a look at the QwtPlotCurve::FilterPointsAggressive flag. It is useful for line plots being monotonic in x or y direction. The effect is, that it limits the number of points to be rendered in the worst case to 4 * the canvas width ( or height ).
Concerning the attributes: antialiasing or a pen width > 1 slow down rendering. You could also try a OpenGL canvas ( better use trunk then ) - or Qt4/X11 ( graphicssystem=native ), what is the best choice for hardware acceleration. Guess you don't use symbols - as this doesn't make too much sense for your type of plot.
And of course always decouple the refresh rate of the plot from the sample rate. 10 fps should be by far good enough for oscilloscopes as only few pixels on screen are changing, but often less frequent updates are fine as well.
Uwe





Reply With Quote

Bookmarks