문제

창의 배경을 투명하게 만들려고 노력합니다. 그러나 그 위젯 아래에서 나는 데스크탑 이미지의 일부를 볼 수 있습니다. 이제 제작자에 이것을 가지고 있습니다.

    self.setFocusPolicy(Qt.StrongFocus)
    self.setAttribute(Qt.WA_QuitOnClose,True)

    self.setBackgroundRole(QtGui.QPalette.Base)
    self.setAttribute(Qt.WA_NoSystemBackground)
도움이 되었습니까?

해결책

GS의 답변에 따르면,이 FAQ는 왜 (QT 4.5 이전)이 작업을 달성 할 수없는 이유를 설명합니다.

FAQ 링크 :

창이 투명하고 위젯이 QT가 아닌 부분 투명성에 대한 직접적인 지원이 없습니다.

PYQT의 최신 버전은 QT 4.4에 대해 생성되었으므로 원하는 반 트랜스 파렌트 창을 지원하지 않습니다. 기본 창의 배경색을 투명 이외의 다른 것으로 설정하는 경우 GS의 다른 답변 (true)이 작동합니다.

또한 qt.wa_nosystembackgroun

QT :: WA_NOSYSTEMBACKGRURAY

위젯에 배경이 없음, 즉 위젯이 페인트 이벤트를받을 때 배경이 자동으로 다시 페인트되지 않음을 나타냅니다. 참고 : WA_OPAQUEPAINTEVENT와 달리 새로 노출 된 영역은 배경으로 채워지지 않습니다 (예 : 응용 프로그램이 페인트 이벤트를 처리 할 때까지 사용자가 처음 볼 수있는 창을 표시 한 후). 이것은 위젯의 저자가 설정/지우 셨습니다.

다른 팁

방금 찾았습니다 이것:

반투명 창을 만듭니다

QT 4.5 이후, 복합을 지원하는 창 시스템에서 반투명 영역이있는 창을 만들 수 있습니다.

최상위 위젯 에서이 기능을 활성화하려면 qt :: wa_translucentbackground 속성을 setattribute ()로 설정하고 부분적으로 투명하고 싶은 영역에서 배경이 비대형 색상으로 칠해져 있는지 확인하십시오.

PYQT는 여전히 QT 4.4입니다. 아마도 문제 일 수도 있습니다.

위젯에 대해 이것을 시도하십시오.

widget.setAutoFillBackground(True)

QT 디자이너에도 설정할 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top