Thanks a lot for the clarification, Uwe. I now understand the reasoning behind your use of a temporary event filter.
Ok, here is what I have done next...
I tried to use QwtPlotDirectPainter::FullRepaint in combination with QwtPlotCanvas::BackingStore, but although it's working fine on my development machine (OS X 10.11), it's not working as I would expect on OS X 10.8-10.10. Basically, if I try to plot 1,000,000 data points, then the plotting won't be smooth. Instead, I will get chunks of data points being plotted at once. So, it looks like I am getting some full repaints here and there.
Next, and following your explanations, I re-enabled the temporary event filter and, indeed, this results in QwtPlotDirectPainter::eventFilter() being called for QEvent::Paint. However, as previously mentioned, this results in the plotting area becoming black on OS X. To comment out the return true; in QwtPlotDirectPainter::eventFilter() obviously 'fixes' the problem, but on OS X 10.8-10.10, it results in the issue mentioned in my previous paragraph, not to mention that not returning true obviously defeats the purpose of your temporary event filter! So, I put back return true; and then noticed the CopyBackingStore attribute. I therefore set it to true in my application and it's now all working fine and as I would expect, be it on my development machine or on a vanilla OS X 10.8-10.10 machine. I understand that having BackingStore set to true means slightly more work (i.e. always copying the backing store to the painter), but I guess that what matters to me at this point is that I now have a solution that not only seems to be working fine and as expected, but also makes sense to me (as opposed to last time where I was disabling the temporary event filter without really knowing why).
In summary, thanks for putting me on the right track...
Bookmarks