2014-03-16 4 views
2

У меня есть верхний уровень Без рамкиQMainWindow с Прозрачность. У меня есть нежелательный эффект перехода по клику (в основное окно) в прозрачных частях окна.Qt Window Transparency

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

Является ли это ожидаемым поведением и, если нет, есть способ обойти это.

ответ

0

У меня есть то, что в лучшем случае частичное решение этой проблемы:

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

Это нарушает click-through поведение, но работает только на Windows 7, когда Aero тема (то есть композицию рабочего стола) включена, и только для Qt 5,2 и далее (поскольку винкстры были введены в 5.2).

Это работает для меня. Надеюсь, это полезно вообще. По-прежнему хотелось бы более общее решение проблемы или, возможно, подтверждение того, что это ожидаемое поведение.