QWidget對樣式表設定邊框無效的解決方法

2021-09-26 06:41:17 字數 1503 閱讀 9389

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 基本規...