QSS設定不生效問題

2021-08-19 07:27:48 字數 2530 閱讀 4420

bug

描述:tableview

表頭初始化後,選中item

的表頭沒有按照產品qss

樣式顯示

bug原因:

兩次設定qss

時,由於快取中沒有更新qss

樣式,造成樣式顯示的還是原來的樣式

修改方案:

第一種:設定qss

之後,使用addwidget(

)代替直接傳父

第二種:設定qss

之後,使用setparent()

方式代替直接傳父

demo 復現:

qwidget

*pwidget

=new

qwidget

;qpushbutton

*ppushbutton

=new

qpushbutton

("test----ddddd"

);ppushbutton->setparent(pwidget);

pwidget->setstylesheet(

"qpushbutton"

);pwidget->setstylesheet(

"qpushbutton"

);//

ppushbutton->setparent(pwidget);

pwidget->show();

備註:1.qss是父子關係的時候是可以傳遞的。繼承關係不是父子關係,所以繼承不具備傳遞。

2.qt5.1.1

沒有此bug

(每次設定qss

時,會清空緩衝區)

3.qt5.5.1

有這個bug

(第二次設定qss

時,d->polish

為假,直接返回,所以沒有呼叫roxy->repolish(

this)

,造成沒有清空緩衝區)

qss樣式實現的具體過程

以qpushbutton

為例載入

qss的時候是先子後父,

show

()確保風格設定上去的時候,是先父後子

子與父qss

載入的過程就是將相應解析的

qss放到

qhash

表中

載入qss qstylesheetstyle.cpp

2.生成顏色物件

3.載入

qss與生成樣式物件均由

qrenderrule

qstylesheetstyle

::renderrule(

const

qobject

*obj,

intelement,

quint64

state)

const

函式呼叫

4.繪製

button

qss 樣式不生效 注釋不能巢狀

qss 相容 css 調qt樣式的時候出現乙個很奇怪的問題 刪掉注釋掉的內容 樣式正常,不刪注釋 注釋後面的樣式全部失效。有點困惑的是 感覺很困惑,後來發現裡面有行中文注釋,刪掉中文注釋就行了,以為是由於編碼失敗的問題。以為編碼轉換時引起的一些問題,但是 開啟注釋還能正常顯示樣式。本來一直以為qss...

Button 設定ForeColor不生效問題

在c 設計介面的時候出現的乙個問題,在將button 的屬性enable設定為false後,無論你設定的forecolor為什麼顏色,結果都只有一種顏色。如下圖 button1,屬性如下 backcolor transparent,很常用 經過測試,是由於空間背景色與前景色同時存在時發生 詳細原因未...

UILabel設定圓角不生效

我仔細排查了後發現,uilabel設定圓角不生效問題除了layer.maskstobounds clipstobounds沒設定之外,如果backgroundcolor設定在了裁剪的前面也會導致圓角不生效的哦 解決 cornerradius屬性 它是影響layer顯示的backgroundcolor...