IT 알쓸신잡

Qt 투명 윈도우 만들기 본문

Development

Qt 투명 윈도우 만들기

솦트웰러 2023. 2. 28. 19:08
728x90
반응형

Qt 다이얼로그나 위젯 윈도우를 투명하게 만드는 방법을 소개해 드리겠습니다.

 

인터넷에 검색을 해보면 아래와 같이 여러 가지 방법이 있습니다.

1. setWindowOpacity(qreal)
2. setStyleSheet("background-color:transparent")
3. setAttribute(Qt::WA_TranslucentBackground)

하지만,

1번의 경우에는 포함된 하위 위젯까지 투명화 되기 때문에 윈도우만 투명화를 처리할 수가 없습니다.

2번의 경우에는 백그라운드가 투명화 되지만 윈도우가 투명화 되지 않기 때문에 검은색으로 보입니다.

 

최종적으로 3번을 사용하면 윈도우만 투명화 되면서 필요한 위젯들은 그대로 유지하는 방법입니다.

 

추가로 타이틀 바 및 최소/최대/닫기 시스템 메뉴와 프레임 등을 제거하게 되면 깔끔한 투명창이 만들어지게 됩니다.

setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

참고로 Qt::WindowStaysOnTopHint 옵션은 윈도우를 최상위에 디스플레이 되도록 하는 기능입니다.

 

아래는 메인 다이얼로그에서 사용 버튼을 누르면 자식 윈도우가 생성되는데, 투명한 자식 윈도우가 생성되는 결과입니다.

 

버튼 두개만 있고 투명하게 나오죠^^

 

다음 글에는 투명화 된 윈도우를 Customizing 하여 코너가 라운드 형태의 윈도우를 만들어 보도록 하겠습니다.

728x90
반응형
Comments