Qss語法及應用2

2021-08-20 06:53:41 字數 3908 閱讀 7846

在樣式表中,每個部件都被看作是乙個由四個同心相似的矩形組成的箱體:空白(margin)、邊框(border)、填充(padding)和內容(content)。對於乙個平面部件——例如乙個空白、邊框和填充都是0畫素的部件——而言,這四個矩形是完全重合的。空白區域位於邊框外,並且總是透明的。邊框為部件提供了四周的框架,其border-style屬性可以設定為一些內建的框架風格,如inset、outset、solid和ridge。填充在邊框和內容區域之間提供了空白間隔,方箱模型的具體例項參見圖4

圖4qss方箱模型

理解方箱模型對於控制項的具體樣式設定的理解有重要的作用,特別是在有關子控制項的定位,相對位置和絕對位置的應用上有著非常方便的實際意義。

部件的前景色用於繪製上面的文字,可以通過color屬性指定。背景色用於繪製部件的填充矩形,可以通過background-color屬性指定。

背景使用background-image屬性定義,它用於繪製由background-origin指定的矩形區域(空白、邊框、填充或內容,這裡就用到了qss方箱模型)。背景在矩形區域內的對齊和平鋪方式可以通過background-position和background-repeat屬性指定。

如果指定的背景具有alpha通道(即有半透明效果),通過background-color指定的顏色將會透過透明區域。這一功能可以使背景在多種環境下重複利用。該例子中使用的樣式表如下所示:

qframe

在這個例子中,qframe四周的空白、邊框和填充值都是一樣的。實際上margin屬性可以在上下左右四個方向分別指定我們需要的不同值,例如:

qframe

同時,我們也可以分別指定margin-top、margin-right、margin-bottom、margin-left四個屬性。

qframe

注意的是有關「background」的區域

①background-origin

,背景的起始,origin的取值範圍:margin

\border

\padding

\content

。而如果出現

background-origin:margin或background-origin:border

背景色或背景不會出現在padding以外,只會沾滿padding內矩形,這裡以不帶透明區域的進行說明

圖5background區域說明1

如圖5所示,其qss語句為:

qframe#frame

上面沒有

padding

的顏色,但設定

background-color: rgba(255, 0, 0,125)

,則border以內,content以外,全部變為「半透明的紅色」,如果將background-origin

改為padding,則效果圖如圖6,padding區域完全被背景覆蓋。

圖6background區域說明2

如果背景帶有透明區域,則透明區域會顯示

qss語句中顯示的背景顏色,如圖

7所示帶透明區域的

png作為圖8所示

qframe

的背景,其透明區域完全被背景顏色填充

圖7 帶透明區域的

圖8 background區域說明3

②background-color

的起作用範圍是border以內,即:如果background-color:gray;則如果沒有background-image,則方箱模型內border以內(不包含border)的預設顏色都為灰色。

③background-repeat,

repeat-x:x

方向重複

repeat-y :y

方向重複

none:x

、y方向都重複

no-repeat

:任何方向都不重複

雖然目前我們僅僅使用了qframe作為例子,但是我們也可以同樣的將這些屬性應用於任何乙個支援方箱模型的qt部件,例如:qcheckbox、qlabel、qlineedit、qlistview、qmenu、qpushbutton、qtextedit、和qtooltip。

5建立可縮放樣式

在預設情況下,通過background-image指定的背景會自動重複平鋪,以覆蓋部件的整個填充矩形(即邊框裡面的那個區域)。如果我們想建立能夠隨著部件大小自動縮放而不是平鋪的背景,我們需要設定 「邊框(border-image)」。

「邊框」可以通過border-image屬性指定,它同時提供了部件的背景和邊框。乙個「邊框」被分為九個部分(九宮格),有點向tic-tac-toe遊戲的棋盤,如圖9

圖9border-image九宮格

當乙個部件的邊框被填充時,四角的格仔通常不會發生變化,而其餘的五個格仔則可能被拉伸或平鋪以填充可用空間。

當指定乙個「邊框」時,除了本身,我們還必須指定用來分割九宮格的四條分割線。同時我們還必須指定非邊角的格仔是應該平鋪還是拉伸,以及邊框的寬度(用來確定邊角格仔的大小,防止邊角被縮放變形)。

例如,下面的樣式表定義了圖10中的frame:

圖10 frame-borderimage

border-image語句的解釋,border-image一般由三組引數組成(對應橫向,縱向的平鋪方式,stretch等比例縮放;repeat重複平鋪,最後一幅影象有肯能出現切割;round合理縮放後重複平鋪,不存在最後一幅影象重複切割的現象)}。有關repeat和round的區別,詳見圖11。

左圖:border-image: url(f:\\qss etc\\qi\\qt.png) 3 3 3 3 repeat repeat;

右圖:border-image: url(f:\\qssetc\\qi\\qt.png) 3 3 3 3 repeat round;

左圖用repeat,出現影象重複貼圖的切割現象,而右圖用round,在垂直方向做了相應比例縮小後,再顯示在控制項上。

圖11 repeat-round對比

如果不重複,則在控制項上等比縮放,全景顯示在控制項內,這一點特別適合在為軟體主介面選擇主題背景時應用,圖12、13給出用stretch的示例。

圖12邊框原始背景

圖13stretch邊界frame

qframe

上述qss語句,邊框(border-image)的平鋪方式(tilemode)為stretch,按照控制項大小同比例縮放原始,這樣為設計軟體主介面的整體風格提供了極大的便利。

另外,「邊框」還應該含有alpha通道,以使背景能夠在邊角處露出來。

JUNIT 入門2 語法及應用

本文主要介紹junit 語法及常用函式應用。一 常用annotation before 初始化方法,在任何乙個 測試執行之前必 須執行的 after 釋 放資源,在任何 測試執行之後需要 進行的收尾工作。在每個 測試方法 執行之後 執行一次,該annotation 只能修飾 public void ...

QSS樣式表語法

qss檔案存在,可以通過檔案載入進行設定 直接寫在ui檔案或者 中 從外到內 margin rectangle 最外面的矩形,主要是負責與其他視窗部件間的距離 border rectangle 包圍padding rectangle,為邊界預留空間,可認為是視窗的外框線 padding rectan...

Qt之QSS(語法高亮)

語法高亮能幫助開發者很快的找到程式中的錯誤。例如,大部分編輯器會用不同的顏色突出字串常量。所以,非常容易發現是否遺漏了分隔符,因為相對於其他文字顏色不同。qt creator 中預設情況下開啟 qss 檔案 qss 不會高亮顯示,需要手動配置,讓其更符合我們的閱讀習慣,以更迷人的方式展示 片段。進入...