3

私はトップレベルのFrameless QMainWindow with Translucencyを持っています。ウィンドウの透明な部分で (下にあるウィンドウへの) クリックスルーという望ましくない効果があります。

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();
}

これは予想される動作ですか。そうでない場合、これを回避する方法はありますか。

4

1 に答える 1

0

私はこの問題のせいぜい部分的な解決策を持っています:

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

これは動作を壊しclick-throughますが、Aero テーマ (つまり、デスクトップ構成) が有効になっている Windows 7 でのみ動作し、Qt 5.2 以降 (wineextras が 5.2 で導入されたため) でのみ動作します。

これは私にとってはうまくいきます。これが一般的に役立つことを願っています。問題に対するより一般的な解決策、またはおそらくこれが予想される動作であることの確認が必要です。

于 2014-04-19T12:33:00.597 に答える