【问题标题】:Qt Window TransparencyQt 窗口透明度
【发布时间】:2014-03-16 06:42:41
【问题描述】:

我有一个 Frameless QMainWindow 的顶级 半透明。我在窗口的透明部分有点击(到底层窗口)的不良影响。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow *window = new MainWindow;
    window->setWindowFlags(window->windowFlags() | Qt::FramelessWindowHint);
    window->setAttribute(Qt::WA_TranslucentBackground);
    QLabel *label = new QLabel("Hello World!");
//  window->setStyleSheet("background-color: rgba(0,0,0,1%)");
    window->setCentralWidget(label);
    window->show();

    return a.exec();
}

这是预期的行为吗?如果不是,有没有办法解决这个问题。

【问题讨论】:

    标签: qt transparency qt5 click-through


    【解决方案1】:

    我最多只能部分解决这个问题:

    #include <QtWinExtras>
    ...
    QtWin::extendFrameIntoClientArea(window, -1, -1, -1, -1);
    

    这打破了click-through 的行为,但仅在启用 Aero 主题(即桌面组合)时适用于 Windows 7,并且仅适用于 Qt 5.2 及更高版本(因为在 5.2 中引入了 winextras)。

    这对我有用。希望这总体上是有帮助的。仍然需要更通用的问题解决方案,或者确认这是预期的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2013-02-21
      相关资源
      最近更新 更多