使用setstylesheet來設定圖形介面的外觀:
qt style sheets是乙個很有利的工具,允許定製視窗的外觀,
此外還可以用子類qstyle來完成,他的語法很大比重**於html的css,但是適用於視窗
qt將會集合所有的樣式表來設定外觀,這稱作級串聯
例如:下面的樣式表指定所有的qlineedit應該用黃色作為他們的背景顏色,所有的核對框應該用紅色作為他們的文字顏色
qlineedit
qcheckbox
對於這種定製,樣式表比palette調色盤更強大,例如使用qpalette::button role來設定乙個按鈕為紅色可能引起危險
對於單獨使用qpalette很難完成的定製,樣式表可以指定
樣式表作用於當前視窗樣式頂部,這意味這應用程式講看起來盡可能的自然,但是任何樣式表系統引數應該考慮,不像qpalette那樣,樣式表提供檢查,如果你設定了乙個按鈕的背景顏色為紅
色,你應該確定在所有的平台按鈕將會有乙個紅色的背景,除此,qt designer提供樣式表整合環境,使得在不同的視窗樣式中更容易看到樣式表的效果
此外,樣式表可以用來為你的應用程式提供乙個出眾的外觀,不需要使用子類qstyle,例如,可以指定任意的為單選按鈕和核對按鈕,來使它們出眾,使用這個技術,也可以獲得輔助的定
制,這將使用幾個子類,例如指定style hint(樣式暗示),可以參看例子 style sheet。
當樣式表有效時候,使用qwidget::style()可以返回qstyle,
樣式表語法:
樣式表語法基本和html css語法一致。
樣式表包含了樣式規則序列,樣式規則有乙個和組成,指定哪些視窗將會被這些規則影響,指定哪些屬性將會被設定在視窗上,例如
qpushbutton
在上面的,規則中,qpushbutton是,是,這個規則指定qpushbutton和他的子類將使用紅色作為前景顏色,就是字型顏色,並且對大小寫沒有分別,對於
color,color,color是一樣的。
幾個可以同時被列出,使用逗號","來分開各個,例如:
qpushbutton, qlineedit, qcombobox
部分是一對 屬性:值 對,用{}來括起來,使用分號來分開各個屬性,例如
qpushbutton
可以參看qt style sheets reference來檢視部件以及樣式表的屬性列表
關於樣式表的級聯屬性
看下面**的不同
btn1->setstylesheet("qpushbutton"); //設定前景顏色,就是字型顏色
btn1->setstylesheet("qpushbutton"); //設定背景顏色為紅色
和btn1->setstylesheet("qpushbutton");
第乙個**只能顯示黃色背景,第二個確實紅色字型,黃色背景,
所以當設定乙個部件時候,要在同乙個》setstylesheet()中完全寫出來。
源**示例:
dialog::dialog(qwidget *parent) :
qdialog(parent),
ui(new ui::dialog)
"); //設定前景顏色,就是字型顏色
// btn1->setstylesheet("qpushbutton");
btn1->settext("button1");
btn2=new qpushbutton(this);
btn2->setstylesheet("qpushbutton"); //使用rgb來設定背景顏色
btn2->settext("button2");
btn3=new qpushbutton(this);
btn3->setstylesheet("qpushbutton");
//設定按鈕的背景,background-repeat可以設定背景的重複規則,這裡設定僅在xy方向都重複,所以會被重複一次
//background-position用來設定的位置,是左(left)還是右(right),還是在中間(center),是上(top)還是底部(bottom)
//background-attachment用來這定背景是否捲動或者和視窗大小相匹配,預設是捲動的
btn3->settext("button3");
btn4=new qpushbutton(this);
btn4->setstylesheet("qpushbutton");//設定邊框寬度以及顏色
//可以使用border-top,border-right,border-bottom,border-left分別設定按鈕的上下左右邊框,
//同樣有border-left-color, border-left-style, border-left-width.等分別來設定他們的顏色,樣式和寬度
//border-image用來設定邊框的背景。
//border-radius用來設定邊框的弧度。可以設定圓角的按鈕
btn4->settext("button4");
//字型設定
//font-family來設定字型所屬家族,
//font-size來設定字型大小
//font-style來設定字型樣式
//font-weight來設定字型深淺
//height用來設定其高低
//selection-color用來設定選中時候的顏色
edit1=new qlineedit(this);
edit1->setstylesheet("qlineedit");
//父視窗的設定
//icon-size來設定大小
this->setwindowicon(qicon("image/1.png"));
this->setstylesheet("qwidget"); //設定整個對話方塊的背景顏色
// this->setstylesheet("qwidget");
layout1->addwidget(btn1,0,0);
layout1->addwidget(btn2,0,1);
layout1->addwidget(btn3,1,0);
layout1->addwidget(btn4,1,1);
layout1->addwidget(edit1,2,0);
}這裡只給出來widget主視窗的cpp檔案,執行得到的結果如下圖
我們看到連貼上 複製板都變成了使用樣式表來設定的樣式
關於使用樣式表 setstylesheet()) 來設定視窗樣式的時候因該注意的事項,可以參看
setStyleSheet設定相關
setstylesheet函式的引數是字串 setstylesheet background blue 背景色 setstylesheet qframe 背景 qpushbutton mypushbutton setstylesheet 這種情況下,控制項自身的樣式表的優先順序高於父控制項或應用程式...
用rfkill來控制linux下的無線裝置
很 多 計 算 機 系 統 包 含 無 線 電 傳 輸 其 中 包 括 wi fi 藍 牙 和 3g 設 備 這 些 設 備 消 耗 電 源 在 不 使 用 這 些 設 備 時 是 一 種 浪 費 rfkill 是 linux 內 核 中 的 一 個 子 系 統 它 可 提 供 一 個 界 面 在 ...
android layout weight設定解讀
參考文章 android layout weight的真實含義是 一旦view設定了該屬性 假設有效的情況下 那麼該 view的寬度等於原有寬度 android layout width 加上其在剩餘空間中的佔比!設螢幕寬度為l,在兩個view的寬度都為match parent的情況下,原有寬度為l...