Полупрозрачный фон Qt 5.10 в QMainWindow с использованием таблицы стилей - PullRequest
0 голосов
/ 24 июня 2018

Я бы хотел установить полупрозрачный фон моего класса 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 Ответ

0 голосов
/ 24 июня 2018

Похоже, я нашел решение случайно. Необходимо создать 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();
...