Я хотел бы иметь непрозрачный QWidget в прозрачном QMainWindow.CentralWidget QMainWindow содержит QWidget и QOpenGLWidget в вертикальной компоновке.QOpenGLWidget отрисовывается правильно, объекты отображаются непрозрачно, а фон прозрачен.Тем не менее, QWidget рисуется с частичной прозрачностью, а это не то, что мне бы хотелось.
Пример приложения на черном и красном фоне показан здесь:
![enter image description here](https://i.stack.imgur.com/5qEj5.png)
Проблема в верхнем QWidget (панель инструментов с кнопками).Это не должно показывать красный или черный через него, а вместо этого показывать сплошной непрозрачный цвет фона.QOpenGLWidget должен показывать красное / черное сквозное в текущем виде.
Снимок экрана был сделан с помощью следующего кода в MainWindow:
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_NoSystemBackground, false);
QOpenGLWidget :: paintGL () содержит:
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Я пробовал разные вызовы на разных виджетах без успеха, в том числе:
setStyleSheet(...)
setAutoFillBackground(...)
setAttribute(Qt::WA_AlwaysStackOnTop)
setAttribute(Qt::WA_TranslucentBackground)
setAttribute(Qt::WA_NoSystemBackground, false)
setWindowOpacity(1.0)
Я также несколько добился желаемого эффекта, установив в QWidget нулевой родитель, установивэто как безрамное, и позиционирование его вручную над MainWindow.Но это мудрый код и приводит к тому, что на панели задач Windows отображаются два значка приложения.Я не хотел бы идти по этому хакерскому пути.
Есть ли способ добиться этого, установив правильные свойства панели инструментов QWidget?
Обновление : минимальный кодПример проекта можно найти здесь: https://github.com/peguse/TransparentQOpenGLWidgetApp