我想刪除我的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);
對於一個小部件,這不是頂層,你要的背景設定爲一個帶有alpha通道:對於一個頂級窗口部件,因爲它可能是簡單
QPalette palette = view->palette();
palette.setColor(QPalette::Background, Qt::transparent);
view->setPalette(palette);
你還應該能夠做同樣的事情用樣式表:
view->setStyleSheet("background-color: transparent;");
您可能需要設置autoFillBackground爲false,這樣的小部件不會在後臺自動填充。
非常感謝所有這些建議,我嘗試了所有這些。因此,在嘗試了'setAttribute(Qt :: WA_NoSystemBackground)','setAttribute(Qt :: WA_NoBackground)','view-> setPalette(palette)','setAutoFillBackground(false)'後,我嘗試了'view-> setStyleSheet(「background-color:transparent;」)'工作! –