2012-09-27 2 views
2

저는 Windows를 사용하며 스타일 시트를 반투명 배경으로 만들기 위해 QMenu에 스타일 시트를 설정하고 싶습니다. 이를 위해 먼저 FramelessWindowHint를 설정 한 다음 WA_TranslucentBackground 속성을 설정합니다. 그런 다음 스타일 시트를 설정하고 팝업 방식으로 메뉴를 표시합니다. 그것은 정확하게 그려지지만, 이상하게 행동합니다 : FramelessWindowHint를 가지 자마자, 항상 popup() 메소드를 호출하기 전에 볼 수 있습니다. 항목 중 하나를 클릭 한 후에는 더 이상 숨기지 않습니다.Qt : 반투명 배경이있는 QMenu

#include <QApplication> 
#include <QMenu> 
#include <QPoint> 
#include <QCursor> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QMenu menu; 
    menu.addAction("about", &a, SLOT(aboutQt())); 
    menu.addAction("exit", &a, SLOT(quit())); 
    menu.setWindowFlags(Qt::FramelessWindowHint); 
    menu.setAttribute(Qt::WA_TranslucentBackground); 
    menu.setStyleSheet("QMenu{background:rgba(255, 0, 0, 50%);}"); 
    menu.popup(QCursor::pos()); 
    return a.exec(); 
} 

답변

1
menu.setWindowFlags(menu.windowFlags() | Qt::FramelessWindowHint); 

이 문제를 해결해야합니다

여기에 최소한의 예입니다. 이제는 이미 Qt에 의해 설정된 모든 플래그를 지우고 있습니다.