【问题标题】:How to get Qt Transparencies working through X11? (Or another way to make dropshadows work for X11)如何让 Qt Transparencies 通过 X11 工作? (或另一种使阴影适用于 X11 的方法)
【发布时间】: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


【解决方案1】:

为了解决这个问题,我最终使用下面的函数在主窗口上制作了一个阴影对象。 (它将窗口放在屏幕中间并构建阴影对象)然后我在显示和隐藏窗口时对阴影对象执行 ->show() 和 ->hide() 。这有点杂乱无章 - 但这是我发现的唯一可以在这个特定触摸屏上通过 X11 工作的解决方案。

QPushButton * MainWindow::positionAndShadow(QDialog* window)
{
    int xpos = SCREEN_RES_H/2 - window->size().width()/2;
    int ypos = SCREEN_RES_V/2 - window->size().height()/2;
    if (ypos - 10 > 0)
    {
        ypos -= 10;
    }
    window->setGeometry(xpos,ypos,window->size().width(),window->size().height());

    QPushButton* shadow = new QPushButton(this);
    shadow->setEnabled(false);
    shadow->setGeometry(xpos,ypos,window->size().width(),window->size().height());

    QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
    effect->setColor(QColor(40, 40, 40, 220));
    effect->setBlurRadius(15);
    shadow->setGraphicsEffect(effect);
    shadow->hide();

    return shadow;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2014-07-21
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多