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...