1、現象
在對qwidget使用樣式表時無效
qwidget#mywgt
2、原因
原因是qwidget只支援background、background-clip和background-origin屬性。官方說明
3、解決方法
3.1 使用qframe代替qwidget,qframe繼承自qwidget,qframe是基本控制項的基類,並且帶有框架屬性。繼承關係如下:
qpushbutton,qlabel… -> qframe -> qwidget
3.2 繼承qwidget,新增對paintevent的實現,如下
void mywgt::paintevent(qpaintevent *)
4、
qt中視窗背景的設定,下面介紹三種方法。
使用qpalette
使用style sheet
繪圖事件
一般我不用qss設定視窗背景,也不建議使用。(這裡是對於視窗而,如果是子部件當然可以)。因為視窗使用qss設定背景之後,若子部件不使用同樣的方式來設定,預設則會繼承父視窗的樣式。
使用qpalette
qpalette來設定背景色
m_pwidget = new qwidget(this);
m_pwidget->setgeometry(0, 0, 300, 100);
qpalette pal(m_pwidget->palette());
pal.setcolor(qpalette::background, qt::black); //設定背景黑色
m_pwidget->setautofillbackground(true);
m_pwidget->setpalette(pal);
m_pwidget->show();
style sheet 設定背景
使用樣式表來設定背景色,可以參考:qt style sheets文件
m_pwidget = new qwidget(this);
m_pwidget->setgeometry(0, 0, 300, 100);
m_pwidget->setstylesheet("background-color:black;");
m_pwidget->show();
繪圖事件設定背景
重寫paintevent,使用qpainter來繪製背景。
void widget::paintevent(qpaintevent *event)
子類widget使用樣式qss
如果從qwidget子類化乙個widget,為了能夠使用qss樣式表則需要為自定義widget提供paintevent事件。
void customwidget::paintevent(qpaintevent *event)
設定控制項樣式表
使用函式 setstylesheet qstring style eg ui pushbutton setstylesheet border 2px groove gray border radius 6px padding 2px 4px background color rgb 0,255,0 ...
動態設定CSS樣式表
page language c import namespace system.data script language c runat server public void page load object obj,eventargs e script html head title c titl...
Qt樣式表 5 使用樣式表設定按鈕的外觀
若對c 語法不熟悉,建議參閱本人所著 c 語法詳解 一書,電子工業出版社出版,該書語法示例短小精悍,對查閱c 知識點相當方便,並對語法原理進行了透徹 深入詳細的講解,可確保讀者徹底弄懂c 的原理,徹底解惑c 使其知其然更知其所以然。此書是一本全面了解c 不可多得的案頭必備圖書。13.10.1 基本規...