Я хотел бы установить полупрозрачный фон моего класса 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 ()? Я уже нашел много постов и ответов, но мне ничего не помогло.
С наилучшими пожеланиями.
Похоже, я нашел решение случайно. Необходимо создать 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();
Других решений пока нет …