c++ - QMainWindow上使用样式表的Qt 5.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.setAttribute(Qt::WA_TranslucentBackground, true);
我得到了完全红色的窗口。
我发现,继承'QMainWindow',重载'paintEvent()'并使用'QPainter->fillRect()'和带有alpha的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();
推荐阅读
- laravel - Laravel AJAX 通过 API Controller / Passport 请求
- angular - 区分ngFor中同名的viewChild
- scala - 点燃从 HDFS 读取的 CONFIG
- c# - Unity 视频播放器无法在我的 android 上运行
- appium - 无法在 Appium + Robot Framework 中使用 Xpath,其中 Appium 将其显示的错误消息记录为 contextId: 'multiple: true'
- user-permissions - Mojave 命令行工具的摄像头和麦克风权限
- ruby-on-rails - 如何从 link_to 帖子中调用控制器中的邮件操作
- html - 使用 Flexbox 将元素向右移动
- python - I need to get news article data. I'm using request/get from python but I got this error: 403 forbidden
- c# - 如何将 DynamicResource 的值发送到我的自定义控件 C# 后端?