아래의 백그라운드를 볼 수 있도록 내 QListView의 백그라운드를 제거하고 싶습니다. 어떻게해야합니까?QListView 백그라운드를 제거하십시오.
나는 setAttribute(Qt::WA_NoSystemBackground)
과 setAttribute(Qt::WA_NoBackground)
을 시도했지만 아무런 변화가 없었습니다. 또한 paintEvent()
을 무시할 수 없습니다. 항목을 그리지 않습니다.
아이디어가 있으십니까?
아래의 백그라운드를 볼 수 있도록 내 QListView의 백그라운드를 제거하고 싶습니다. 어떻게해야합니까?QListView 백그라운드를 제거하십시오.
나는 setAttribute(Qt::WA_NoSystemBackground)
과 setAttribute(Qt::WA_NoBackground)
을 시도했지만 아무런 변화가 없었습니다. 또한 paintEvent()
을 무시할 수 없습니다. 항목을 그리지 않습니다.
아이디어가 있으십니까?
QListView의 기본 클래스 인 QScrollArea에는 Viewport라고하는 "다른"위젯이 있다는 것을 잊지 마십시오. viewport() 메소드를 통해 액세스 할 수 있습니다.
당신은 단순히 호출 할 수 투명성을 달성하기viewport()->setAutoFillBackground(false);
및 기타 설정 (즉, 부모 위젯 설정)에 따라 당신은 배경을 볼 수 있습니다.
답변은 사용자의 QListView
이 최상위 위젯인지 여부에 따라 다릅니다. QWidget docs on transparency에 대해 자세히 설명합니다.
view->setWindowOpacity(50);
, 당신은 알파 채널 하나에 배경을 설정하려면 : 같은 최상위 위젯의 경우, 간단하게 할 수있다
QPalette palette = view->palette();
palette.setColor(QPalette::Background, Qt::transparent);
view->setPalette(palette);
당신 또한 스타일 시트와 같은 일을 할 수 있어야한다 :
view->setStyleSheet("background-color: transparent;");
당신은 위젯이 백그라운드에서 자동으로 기입하지 않도록 false로 autoFillBackground을 설정해야 할 수도 있습니다.
이 모든 제안에 대해 감사 드리며, 모두 시도해 보았습니다. 그래서'setAttribute (Qt :: WA_NoSystemBackground)','setAttribute (Qt :: WA_NoBackground)','view-> setPalette (팔레트)','setAutoFillBackground (false)','view-> setStyleSheet ("background-color : transparent;")'작동했습니다! –