使用样式表的 QMainWindow 上的 Qt 5.10 半透明背景

Qt 5.10 semi-transparent background on QMainWindow using stylesheet

我想使用 QMainWindow::setStyleSheet 方法设置我的 QMainWindow class 半透明背景。 我做了类似的事情:

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,我几乎看不到任何东西。 如果我没有

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

我完全变红了Window。

我发现,继承 'QMainWindow'、重载 'paintEvent()' 并使用 'QPainter->fillRect()' 和带 alpha 的 QColor 做我想做的,但它没有使用样式表。

任何人都可以使用 'setStyleSheet()' 方法帮助完成此操作?我已经找到了很多帖子和答案,但没有任何帮助。

此致。

看来我无意中找到了解决方案。必须创建 QWidget,将其设置为 QMainWindow 上的中央小部件,并在非主要小部件上设置样式表 window。工作正常。

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();