【发布时间】:2017-10-10 12:19:16
【问题描述】:
我正在 Qt 5.9 中构建一个需要在 X11 显示器上运行的 UI。我正在尝试向我的对话窗口添加阴影——但它们不适用于 X11。
我采用的方法来自 zeFree 在This Question 中的回答。 (将窗口中的所有内容放在一个小部件中,将窗口设置为半透明,并在小部件上创建阴影效果)。
setAttribute(Qt::WA_TranslucentBackground); //enable Window to be transparent
QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(5);
ui->widget->setGraphicsEffect(effect);
在我的 redhat vm 中效果很好:
但是当我发送到 X11 显示器 I 时,似乎不支持透明度,而是将阴影变为黑色:
我的问题是:有没有办法调整我的 Qt,以便通过 X11 显示器运行此应用程序将正确显示我的透明胶片?
最终,任何能在 X11 显示器上产生有效投影的建议都会很棒!
【问题讨论】:
-
你有合成窗口管理器吗?这是这种部分透明的先决条件。
-
不幸的是我不知道。我的目标显示器是具有 IP 和一些未知窗口管理器的 Esterline 显示器。我在 redhat 7.3 上免费获得的所有花哨的 Qt Window 样式在这个显示器上都不见了。
-
如果您没有选择窗口管理器,那么很不幸,您可能会走运。
-
听起来这种风格不是透明胶片的选择。也许还有另一种方法可以创建阴影效果。把它放在我的主窗口上,而不是把它附加到对话框上。嗯..也许在对话框下方的主窗口上制作一个新小部件 - 纯粹是为了制作阴影效果。
标签: qt transparency x11 dropshadow