Полностью прозрачный для QFrame - PullRequest
0 голосов
/ 01 мая 2020

Я использую Qt Creator 4.5.2 (Qt 5.9.5, G CC 7.3.0 64-bit) и работаю в Ubuntu 18.04.

У меня есть QT MainWindow (QWidget), который составляет QRectF (0,0,480,800). В MainWindow есть QFrame, который является QRectF (0,60,480,400). Я хотел бы, чтобы QFrame был полностью прозрачным. Другими словами, я хотел бы видеть отображение на рабочем столе P C за рамкой QFrame, но не видеть рабочий стол за другими частями главного окна QT.

Возможно ли это? Я много гуглил и не нашел хорошего решения.

Я пытался:

setStyleSheet("QFrame{border: None; background-color: transparent;}");

или

setStyleSheet("background-color: transparent; QFrame{border: None; background-color: transparent;}");

или

setStyleSheet("QFrame{border: None; background-color: rgba(0,0,0,100;}");

Ни один из них не работает.

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Это работает для меня

widget->setStyleSheet("background-color: transparent;");
widget->setWindowFlags(Qt::FramelessWindowHint);   //No windowing
widget->setAttribute(Qt::WA_TranslucentBackground); // No background
0 голосов
/ 01 мая 2020

Когда вы добавляете QFrame в QMainWindow и устанавливаете прозрачный фон для QFrame, QMainWindow остается заполненным некоторым цветом. Вам нужно установить прозрачный стиль в QFrame:

frame->setStyleSheet("border: none; background: transparent;");

И затем установить атрибут в QMainWindow:

mainWindow->setAttribute(Qt::WA_TranslucentBackground);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...