關于QSS要注意的坑。

創(chuàng)新互聯(lián)公司服務緊隨時代發(fā)展步伐,進行技術革新和技術進步,經(jīng)過10多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務人員,并且完全形成了一套成熟的業(yè)務流程,能夠完全依照客戶要求對網(wǎng)站進行做網(wǎng)站、成都網(wǎng)站設計、建設、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
- qss源自css,相當于css的一個子集,主要支持的是css2標準,很多網(wǎng)上的css3的標準的寫法在qss這里是不生效的,所以不要大驚小怪。
- qss也不是完全支持所有的css2,比如text-align官方文檔就有說明,只支持 QPushButton and QProgressBar,務必看清楚。
- 有時候偷懶直接來一句 *{xxx},你會發(fā)現(xiàn)大部分是應用了,也有小部分或者極個別沒有應用,你可能需要在對應的窗體中 this-setStyleSheet() 來設置。
- qss的執(zhí)行是有優(yōu)先級的,如果沒有指定父對象,則對所有的應用,比如在窗體widget中 {color:#ff0000;} 這樣會對widget以及widget的所有子對象應用該樣式,這種問題各大群每周都有人問,你會發(fā)現(xiàn)各種奇奇怪怪的異樣不正常,怎么辦呢,你需要指定類名或者對象名,比如 #widget{color:#ff0000;} 這樣就只會對widget對象應用該樣式,另一種寫法 QWidget#widget{color:#ff0000;},只想對窗體本身而不是子控件按鈕標簽等 .QWidget{color:#ff0000;} ,具體詳細規(guī)則參見官方說明。
- qss整體來說還是可以的,解析速度性能在Qt5高版本后期比Qt4好很多,尤其是修復了不少qss中的解析繪制BUG。盡管有這樣那樣的BUG,懷著包容的心對待它。
- qss官方學習地址1:[]()
- qss官方學習地址2:[]()
Qt樣式表有多種運行機制,主要是考慮到各種需求場景,繼承自QWidget的類和qApp類都支持setStyleSheet方法,還可以統(tǒng)一將樣式表放在文件,或者將樣式文件加入到資源文件。
- 斗氣:qss內(nèi)容寫得到處都是,哪里需要就寫在哪里,各種控件調(diào)用 setStyleSheet方法傳入樣式表內(nèi)容,或者直接對應控件鼠標右鍵彈出菜單選擇改變樣式表填入內(nèi)容;
- 斗者:qss內(nèi)容放在文件,讀取文件內(nèi)容設置樣式表,程序發(fā)布的時候帶上qss文件;
- 斗師:qss文件作為資源文件放到qrc文件,直接編譯到可執(zhí)行文件中,防止篡改;
- 斗靈:在qss文件中自定義一些標志充當變量使用,讀取以后替換對應的變量為顏色值,類似動態(tài)換膚;
- 斗王:放在文件容易被篡改,集成到可執(zhí)行文件不夠靈活,一旦樣式表更新需要重新編譯文件,如何做到既能只更新樣式表文件,又不需要重新編譯可執(zhí)行文件,又能防止被篡改:采用rcc命令將資源文件編譯生成二進制,只需要替換該二進制文件即可;
- 斗皇:繼承qstyle類自己實現(xiàn)完成所有樣式接口,統(tǒng)一整體風格,大名鼎鼎的UOS系統(tǒng)默認規(guī)則就是如此,不允許用樣式表,全部painter繪制;
原理很簡單,設置樣式表,或直接用貼圖的方式:
方法一:修改樣式表
方法二:同樣是修改樣式表,但是用的貼圖
/*正常狀態(tài)*/
QPushButton#myBtn?{
/*直接替換背景圖片*/
border-image:?url(:/images/mybtn_nomal.png);
}
/*懸停狀態(tài)*/
QPushButton#myBtn:hover?{
/*直接替換背景圖片*/
border-image:?url(:/images/mybtn_hover.png);
}
/*按下狀態(tài)*/
QPushButton#myBtn:press?{
/*直接替換背景圖片*/
border-image:?url(:/images/mybtn_press.png);
}
Qt改變界面文字有很多方法(下面以Label控件為例):
1.通過Qt Creater:
拖一個Label到窗體上,對著Label右鍵-改變多信息文本...,里面就可以修改Label的內(nèi)容、顏色、字體樣式等等。
2.通過代碼:
QLabel?*label?=?new?QLabel("Hello?World!");?//新建一個顯示"Hello?World"的Label
//使用setPalette()方法改變顏色
QPalette?pt;
pt.setColor(QPalette::WindowText,?Qt::red);?//設置為紅色
label-setPalette(pt);
//使用setFont()方法改變字體樣式
QFont?font("Microsoft?YaHei",?12,75);?//設置為微軟雅黑,字體12號,加粗
/*常見權重(第三個參數(shù)):
QFont::Light?-?25????????高亮
QFont::Normal?-?50????正常
QFont::DemiBold?-?63??半粗體
QFont::Bold?-?75????????粗體
QFont::Black?-?87???????黑體*/
label-setFont(font);
//使用樣式表改變顏色
label-setStyleSheet("color:blue;");?//設置為藍色
//使用簡單的HTML樣式改變顏色和樣式
QLabel?*label2?=?new?QLabel("h2iHello/i"
"font?color=redWorld!/font/h2")
參考資料:CSDN 《C++ GUI Qt 4編程》
新聞名稱:關于qtcss界面樣式表的信息
文章位置:http://www.chinadenli.net/article34/dsdippe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、服務器托管、手機網(wǎng)站建設、、App設計、外貿(mào)網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)