I have a certain window Widget. On it, I have a sub-widget- Let’s call that Widget X. Widget X has a simple widget as its child which paints a certain icon. Let’s call that Widget Y.
I pass widget X’s window ID to a 3rd party component which projects openGL streaming video on it.
When the system is up, widget Y is clearly visible, however, when the streaming video projection starts on widget X, video is always shown OVER widget Y, making it invisible. raise()’ing Y, making it topmost in its windowFlag doesn’t help.
The only thing that works is making Y a child of the desktop (0), and placing it globally over widget X. This of course creates a whole slew of problems with dragging of the window widget X is a member of. It’s hellish.
Isn’t there anything I can do to keep widget Y in the window hierarchy and still have it visible, on top of the openGL streaming video projection?
I’ve been fighting this for days now, without success.
Your 3rd Party component probably paints on Widget X continuously without informing Qt.
You should see if the 3rd party sends you any kind of notification after it has drawn on widget X and and do a
QWidget_Y->repaint()as a reaction.