自定義Qt部件 盒狀模型

2021-07-22 10:02:07 字數 1269 閱讀 7289

原文:盒狀模型

使用style sheets時,所有的部件都被視為有四個同心矩形的盒子(box):邊緣矩形(margin rectangle),邊框矩形(border rectangle),填充矩形(padding rectangle)和內容矩形(content rectangle)。盒狀模型對四個矩形有詳細的描述。

邊緣,邊框寬度和填充屬性預設為0。這樣四個矩形(margin, border, padding和content)重合。

使用background-image屬性,你可以為部件指定背景。預設地,背景只畫在邊框以內,但是可以使用background-clip屬性改變預設行為。你可以使用background-repeat和background-origin屬性來分別控制的重複行為和原點。

背景不隨部件大小改變而改變。提供乙個隨部件大小改變而改變的背景或**,必須使用border-image。因為border-image屬性提供了乙個備選背景,所以並不需要再為部件指定乙個背景。在兩者都指定的情況下,border-image將畫於background-image之上。

此外,image屬性可能會用來將border-image覆蓋。當大小與部件大小不匹配時,不會拉伸或壓縮。對齊使用image-position屬性指定。與background-image和border-image不同,你可能會svg使大小隨著部件大小自動改變。

以下為render a rule(駕馭不住render的意思)的步驟:

- 為整個渲染操作(border-radius)設定裁剪。

- 畫背景(background-image)。

- 畫邊框(border-image, border)。

- 畫覆蓋(overlay)(image)。

乙個部件被視為子控制項順序渲染的樹形結構。例如,qcombobox先畫drop-down子控制項,再畫down-arrow子控制項。因此qcombobox的渲染順序如下:

子控制項間有乙個父子關係。以qcombobox為例,down-arrow父為drop-down,drop-down的父為部件本身。子控制項放置在它們各自的父控制項內,使用subcontrol-position和subcontrol-origin屬性。

一旦各就各位,子控制項就可以使用盒狀模型來風格化了。

注意: 複雜的控制項如qcombobox和qscrollbar,一旦乙個屬性或子控制項被自定義,所有其它的屬性或子控制項都必須也被自定義化。

Qt筆記 自定義部件和窗體

每個部件都可以看成是4個矩形,從內至外 內容 填襯 邊框 邊距。各個部分屬性為0時,4個矩形重合。樣式表可以存在.qss檔案中,可以使用以下方式實現變換式樣。if qssfile filename qss my.qss qssfile setfilename qss my1.qss else qss...

4 QT自定義模型

在聊學習之前,想說一下將近乙個星期的時間我都幹了些什麼,為什麼沒有學習,總結起來乙個字 玩,11號朋友遠道而來,說是在家閒得慌,過來找我一起浪,直到昨天才將他送走,既然朋友來了,自然不能怠慢,請他吃飯,帶他閒逛,一起去爬山,還吃了一天的自製火鍋,回想起來這味道有點反胃。獨處的時候適合學習和思考,玩耍...

QT學習 自定義視窗部件(子類化)

1 以qspinbox為父類,自定義乙個視窗部件hexspinbox,讓其可以接受並顯示16進製制數 1 定義乙個類hexspinbox,派生自hexspinbox ifndef hexspinbox h define hexspinbox h include include ui hexspinb...