Qt窗口透明度

时间:2014-03-16 06:42:41

标签: qt transparency qt5 click-through

我有 Translucency 的顶级无框架 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();
}

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

1 个答案:

答案 0 :(得分:0)

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

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

这会打破click-through行为,但仅在启用Aero Theme(即桌面合成)时才适用于Windows 7,仅适用于Qt 5.2以上(因为5.2中引入了winextras)。

这对我有用。希望这一般有用。仍然希望对问题采取更一般的解决方案,或者确认这是预期的行为。