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

时间:2018-06-24 13:01:45

标签: c++ background stylesheet transparent qt5.10

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

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

我的窗口完全是红色的。

我发现,继承'QMainWindow',重载'paintEvent()'并在带有Qalpha的QColor中使用'QPainter-> fillRect()'可以实现我想要的功能,但是它没有使用样式表。

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

最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

看来我是偶然找到解决方案的。必须创建QWidget,将其设置为QMainWindow上的中央窗口小部件,并在该窗口小部件而非主窗口上设置样式表。效果很好。

git revert HEAD
git checkout branch
git cherry-pick id_commit
git push