Hi Philippe,Den 21-01-2015 kl. 15:32 skrev Philippe: > The difference between these two modes is not obvious. > When should we use *WA_NoSystemBackground* instead of *WE_OpaquePaintEvent*, > and reciprocally? > When should we use both? > I could not get any clear hint while searching through the Qt source...
WA_NoSystemBackground tells QWidget that it should not fill the window with the standard widget background. If this is not set, it's possible that the paint of a widget is opaque. Qt tries to figure this out automatically. WA_OpaquePaintEvent says to QWidget that you know for a fact that your painting of the window will fill up everything. The widget uses this knowledge to optimize out some of the things it does before calling the widget paintEvent (filling the background is one). WA_NoSystemBackground doesn't say that your painting of the widget will cover the widget completely. This allows you to do some extra transparency in your widgets or windows. If you have set WA_OpaquePaintEvent you don't really need WA_NoSystemBackground because the effect is covered. Or that is at least what it looks like when I look at the current sources. I normally set both anyway, as there might be some subtle difference in future versions. WA_OpaquePaintEvent is all about optimization. For a lot of custom widgets it's not really necessary to worry about them. Of course, we don't like to waste cpu cycles, but the painting system in Qt is so fast that if this is a small widget you are not going to see any difference. But if your painting of the widget does fill the entire widget, you should set this. WA_NoSystemBackground is not about optimization, it is a control you have to set whether Qt will paint something on the widget before your paintEvent is called. I hope this helps. Bo Thorsen, Director, Viking Software. -- Viking Software Qt and C++ developers for hire http://www.vikingsoft.eu _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest