I am developing an application consisting in a QGLWidget and several buttons on top of it. It works fine on Windows/Linux when the buttons are square.

However, when I try to make part of the button widget transparent (background, rounded borders) I get pure black instead of transparent.

I've been seraching for several days. I found two solutions:
-Render in another buffer, grab its content and render it as a QImage into a QWidget.
-Use QGraphicsView

First option is not applicable due to heavy real-time restrictions. I render heavy 3D data with heavy post-effects. The overhead involved in copying a buffer is not acceptable, since I am also targetting mid-end to low-end computers.
Second option seems to be outdated. I only could find examples that do not even compile with Qt5. Is it still aplicable? Does it work the same way? Is there any tutorial or code example on the topic?
Also, documentation suggests that it's designed for efficiently drawing lots of widgets. Is it still applicable to my case? Has it evolved since then?