1. 程式人生 > >scrollArea設定背景顏色不影響子控制元件,終於找到解決辦法(轉載)

scrollArea設定背景顏色不影響子控制元件,終於找到解決辦法(轉載)

使QScrollArea的背景透明,乍看很easy,其實卻是一個目前百度上百不出來的問題;

最容易想到的,用qss:

scrollArea->setStyleSheet("background-color:transparent;");

但是這樣會使scrollArea所包含的所有子控制元件的背景也變成透明,大大不妥啊。。。

然後:

scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")

這個居然無效,大跌眼鏡。。。

然後百度,有人問,沒人答,再谷歌,靠,被牆了。。。

那麼,看QT原始碼吧,找到QScrollArea他爹QAbstractScrollArea。。。

有發現,QWidget *viewport()。。。就是這個擋路的子控制元件惹的事了,

擋路的傢伙,需要修理。。。這個是public的,再對這個設定一下qss就行了

所以,最後的解決辦法是2步,按順序來:

1:scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")

2:scrollArea->viewport()->setStyleSheet("background-color:transparent;");

 好了,全透了,清爽了。