一、StyleSheet的基本用法
創(chuàng)新互聯(lián)建站客戶idc服務(wù)中心,提供雅安服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
StyleSheet : 樣式單
Qt中支持StyleSheet技術(shù),將界面的樣式定義分離開(kāi)來(lái)。采用和HTML/CSS類似的形式,使用一個(gè)文本文件來(lái)單獨(dú)定義樣式。
通常,用于定義界面樣式的StyleSheet稱為“皮膚”
StyleSheet的定義:
定義一個(gè)StyleSheet,前面是類名(稱為Selector),大括號(hào)內(nèi)是屬性定義,支持/**/注釋語(yǔ)法
例如:
/* 以GBK保存 */ QLineEdit { background: yello; } // 注意末尾沒(méi)有分號(hào) QPushButon, QLineEdit { color: blue; } // 注意末尾沒(méi)有分號(hào)
StyleSheet的使用:
1、設(shè)置全局樣式:
可以在main函數(shù)中,直接給QApplication設(shè)置樣式,此樣式為全局樣式
QString style = "QPushbutton{ color: blud; }"; a.setStyleSheet(style); //a是 QApplication 類型的對(duì)象
2、設(shè)置窗口樣式:
可以給某個(gè)窗口對(duì)象設(shè)置樣式
QString style = "QPushbutton{ color: blue; }"; w.setStyleSheet(style); //w是窗體
樣式的重復(fù)定義:
1、對(duì)同一個(gè)對(duì)象調(diào)用多次setStyleSheet,則后設(shè)置的生效,先前的設(shè)置全部丟棄。(替換)
2、下層的樣式覆蓋上層(疊加)
全局樣式(上層) >>> 窗口樣式 >>> 子窗口樣式(下層)
結(jié)果:相同的屬性發(fā)生覆蓋,其他部分保留
皮膚文件:
通常,把樣式的內(nèi)容存放到一個(gè)文本文件里,然后在程序打開(kāi)時(shí)加載,此文本稱為皮膚文件
// 在main中讀取皮膚文件的內(nèi)容 QString style = readfile("skin.css"); a.setStyleSheet(style);
要注意文件的編碼,在中文的Windows上編輯文本文件時(shí),默認(rèn)的是GBK編碼
二、StyleSheet的語(yǔ)法——Selector
Selector:主體是類名
1、屬性的疊加:在一個(gè)stylesheet里,后寫(xiě)的定義會(huì)覆蓋先寫(xiě)的定義
2、包含本類和子類的定義
3、同一行中,可以寫(xiě)多個(gè)類型,以逗號(hào)分隔
QPushButton, QLineEdit, QCheckBox { background: color: black; }
按屬性區(qū)分:
假如有8個(gè)QPushButton,但想將它們 分成2組,分別有不同的樣式,怎么實(shí)現(xiàn)呢?
一種辦法是寫(xiě)一個(gè)子類繼承QPushButton,然后對(duì)這個(gè)子類單獨(dú)設(shè)置樣式,
但這種場(chǎng)景,Qt已經(jīng)為我們提供了一種處理方式
之前或許我們就注意到,每個(gè)控件都有一個(gè)屬性: whatsThis
該屬性就是用來(lái)處理這種場(chǎng)景的。
使用:
QPushButton[whatsThis="classic"] { color: green; } QPushButton[whatsThis="modern"] { color: red; }
此外,還有一種區(qū)分方法:按ID區(qū)分(即object name,變量名)
QPushButton#btnSearch { color: green; }
但這種方法有缺陷,通常還是按屬性分比較好