您好,登錄后才能下訂單哦!
一、StyleSheet的基本用法
StyleSheet : 樣式單
Qt中支持StyleSheet技術,將界面的樣式定義分離開來。采用和HTML/CSS類似的形式,使用一個文本文件來單獨定義樣式。
通常,用于定義界面樣式的StyleSheet稱為“皮膚”
StyleSheet的定義:
定義一個StyleSheet,前面是類名(稱為Selector),大括號內是屬性定義,支持/**/注釋語法
例如:
/* 以GBK保存 */ QLineEdit { background: yello; } // 注意末尾沒有分號 QPushButon, QLineEdit { color: blue; } // 注意末尾沒有分號
StyleSheet的使用:
1、設置全局樣式:
可以在main函數中,直接給QApplication設置樣式,此樣式為全局樣式
QString style = "QPushbutton{ color: blud; }"; a.setStyleSheet(style); //a是 QApplication 類型的對象
2、設置窗口樣式:
可以給某個窗口對象設置樣式
QString style = "QPushbutton{ color: blue; }"; w.setStyleSheet(style); //w是窗體
樣式的重復定義:
1、對同一個對象調用多次setStyleSheet,則后設置的生效,先前的設置全部丟棄。(替換)
2、下層的樣式覆蓋上層(疊加)
全局樣式(上層) >>> 窗口樣式 >>> 子窗口樣式(下層)
結果:相同的屬性發生覆蓋,其他部分保留
皮膚文件:
通常,把樣式的內容存放到一個文本文件里,然后在程序打開時加載,此文本稱為皮膚文件
// 在main中讀取皮膚文件的內容 QString style = readfile("skin.css"); a.setStyleSheet(style);
要注意文件的編碼,在中文的Windows上編輯文本文件時,默認的是GBK編碼
二、StyleSheet的語法——Selector
Selector:主體是類名
1、屬性的疊加:在一個stylesheet里,后寫的定義會覆蓋先寫的定義
2、包含本類和子類的定義
3、同一行中,可以寫多個類型,以逗號分隔
QPushButton, QLineEdit, QCheckBox { background: color: black; }
按屬性區分:
假如有8個QPushButton,但想將它們 分成2組,分別有不同的樣式,怎么實現呢?
一種辦法是寫一個子類繼承QPushButton,然后對這個子類單獨設置樣式,
但這種場景,Qt已經為我們提供了一種處理方式
之前或許我們就注意到,每個控件都有一個屬性: whatsThis
該屬性就是用來處理這種場景的。
使用:
QPushButton[whatsThis="classic"] { color: green; } QPushButton[whatsThis="modern"] { color: red; }
此外,還有一種區分方法:按ID區分(即object name,變量名)
QPushButton#btnSearch { color: green; }
但這種方法有缺陷,通常還是按屬性分比較好
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。