1.盒模型
使用樣式表時,每個widget都被視爲包含四個同心矩形的框
:邊距矩形(margin rectangle)、邊框矩形(border rectangle)、填充矩形(padding rectangle)和內容矩形(content rectangle)。盒子模型如下圖所示:
邊距(margin)、邊框(border)寬度和填充(padding)屬性都默認爲零。在這種情況下,所有四個矩形(邊距、邊框、填充和內容)完全重合。
可以使用background-image
(背景圖片)屬性指定widget的背景。默認情況下,僅爲邊框內的區域繪製背景圖像,但是可以通過background-clip
(背景剪裁)屬性進行更改。可以使用background-repeat
(背景重複)和background-origin
(背景原點)來控制背景圖像的重複和原點。
背景圖像不隨widget的大小縮放。要實現隨 widget 大小縮放的“皮膚”或背景,必須使用border-image
(邊框圖像)。由於 border-image 屬性提供了備用背景,因此在指定border-image 時不需要指定 background-image。當兩者都被設置時,border-image 繪製在 background-image 上。
此外,圖像屬性可用於在 border-image 上繪製圖像。當指定的圖像大小與 widget 的大小不匹配時,圖像不會平鋪(tile)或拉伸(stretch),需要使用image-position
屬性指定其對齊方式。與background-image和border-image不同,您可以在 image 屬性中指定SVG
,在這種情況下,圖像會根據 widget 的大小自動縮放。
Qt 的繪製的步驟如下:
- 爲整個渲染操作設置剪輯(border-radius)。
- 繪製背景(background-image)。
- 繪製邊框(border-image,border)。
- 繪製疊加圖像(image)。