Полупрозрачный фон Qt 5.10 в QMainWindow с использованием таблицы стилей

Я хотел бы установить полупрозрачный фон моего класса QMainWindow с помощью метода QMainWindow :: setStyleSheet.
Я делаю что-то вроде:

QMainWindow window;
window.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
window.setStyleSheet("background-color: rgba(255, 0, 0, 128)");
window.setAttribute(Qt::WA_TranslucentBackground, true);
window.setFixedSize(800, 600);
window.show();

и я получил полностью прозрачное окно, которое почти ничего не вижу.
и если я сделаю это без

window.setAttribute(Qt::WA_TranslucentBackground, true);

Я получил полностью красное окно.

Я выяснил, что наследую QMainWindow, перегружаю paintEvent () и использую QPainter-> fillRect () с QColor с альфа-версией, но я не использую таблицу стилей.

Кто-нибудь может помочь сделать это, используя метод setStyleSheet ()? Я уже нашел много постов и ответов, но мне ничего не помогло.

С наилучшими пожеланиями.

1

Решение

Похоже, я нашел решение случайно. Необходимо создать QWidget, установить в качестве центрального виджета в QMainWindow и установить таблицу стилей в виджете, а не в главном окне. Работает просто отлично.

QMainWindow window;
window.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
window.setAttribute(Qt::WA_TranslucentBackground, true);
window.setFixedSize(800, 600);

QWidget widget(&window);
widget.setStyleSheet("background-color: rgba(255, 0, 0, 128)");

window.setCentralWidget(&widget);
window.show();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]