meego中css主題文件的使用方法

作者: 馮牮  來源: http://www.meegoq.com  發布時間: 2010-09-25 09:52  閱讀: 1280 次  推薦: 0   原文鏈接   [收藏]  

轉載時請注明出處和作者聯系方式
文章出處:http://blog.csdn.net/jack0106
作者聯系方式:馮牮 fengjian0106@yahoo.com.cn
1. qtwidget里面有stylesheet(CSS)的概念,而原始的qtgraphicsview里面,并沒有stylesheet概念,到了mtf里面,又引入了stylesheet,但是沒有專門的文檔進行介紹,我只能參照qtwidget里面關于stylesheet的介紹,在猜測驗證的基礎上,做出一些總結。也許會有不準確的地方,以后會隨時修改。因此,建議先看一下qtwidget中的stylesheet的相關介紹文檔。

2. qt中stylesheet使用的CSS標記語言,靈感是來自于html中的css,但是,僅僅是靈感,細節上還是有一些差別,建議學習一下html中css的概念和基本用法。后面所有的介紹,將不會討論這些基礎知識。

3.基本語法(可以參考源碼目錄中的示例程序/code-example/layout/layout_inside_layout ,建議修改目錄里面的css文件,看看效果)
選擇器{屬性: 屬性值;屬性: 屬性值;...}

3.1 選擇器語法。
中括號內的屬性-屬性值,很好理解(需要介紹的是mtf中,都有哪些屬性,這個在后面部分詳細描述),重點在于選擇器的一般語法(qt中選擇器的語法,和html中選擇器的語法是不一樣的),下面給出一些例子:
<1>

 
MLabel {
font: "Nokia Sans Wide" 21px;
background-color: #eeeeee;
preferred-size: 85 85;
maximum-size: 80 30;
background-opacity: 0.5
}

選擇器匹配的是所有 MLabel和其子類的對象實例。

<2>

 
MLabel#item {
font: "Nokia Sans Wide" 21px;
background-color: #eeeeee;
preferred-size: 85 85;
maximum-size: 80 30;
background-opacity: 0.5
}

 

選擇器匹配的是所有 MLabel 的對象實例,并且該對象的object name是item(不確定是否包括MLabel的子類的對象實例,待補充)。

<3>

 
.MLabel {
font: "Nokia Sans Wide" 21px;
background-color: #eeeeee;
preferred-size: 85 85;
maximum-size: 80 30;
background-opacity: 0.5
}

 

選擇器匹配的是所有 MLabel 的對象實例(不包括它的子類對象實例)。

<4>

 
#item {
font: "Nokia Sans Wide" 21px;
background-color: #eeeeee;
preferred-size: 85 85;
maximum-size: 80 30;
background-opacity: 0.5
}

 

選擇器匹配的是所有 object name 為item的對象實例。

 

<5>qtwidget里面,還有其他幾種選擇器語法,目前還沒有驗證,可以先只使用上面幾種。

3.2 屬性-屬性值介紹。
在mtf里面,屬性-屬性值也是有繼承關系的。一MLabel為例,它的style的繼承關系是 MStyle-->MWidgetStyle-->MLabelStyle。
<1>MStyle只是定義了共同的一些接口,沒有實際的style,所以,從MWidgetStyle開始。

<2>MWidgetStyle是所有MWidget共有的style,包括:

代碼
 
int marginLeft
int marginTop
int marginRight
int marginBottom
int paddingLeft
int paddingTop
int paddingRight
int paddingBottom
int reactiveMarginLeft
int reactiveMarginTop
int reactiveMarginRight
int reactiveMarginBottom
int backgroundBoxedPercent
MBackgroundTiles backgroundTiles
QColor backgroundColor
qreal backgroundOpacity
QSize preferredSize
QSize minimumSize
QSize maximumSize
MFeedback pressFeedback
MFeedback releaseFeedback
MFeedback cancelFeedback

 

<3>注意,前面列出了MWdiget中style的定義,但是,在css文件中,對應到屬性-屬性值中的時候,屬性名字的寫法,有小的差別,比如:
上面<2>中的 backgroundColor,對應到css中,就應該寫成background-color。(詳細的對照,還沒有找到,先照貓畫虎用"小寫"加"-"吧)

<4>MLabelStyle,包括:

 
QColor color
QFont font
QColor highlightColor
QColor activeHighlightColor

 

<5>還是看上面給出的一個例子:

 
MLabel {
font: "Nokia Sans Wide" 21px;
background-color: #eeeeee;
preferred-size: 85 85;
maximum-size: 80 30;
background-opacity: 0.5
}

在這個例子里面,設置了5個屬性,其中font是MLabelStyle,而另外4個,都是MWidgetStyle。

 

<6>如果使用其他的widget,設置style的方法都類似,共有的屬性就是MWidgetStyle,然后就是各自定義的style,查詢對應的style文檔即可。

<7>補充說明一點,widget的大小,可以用css來控制,比如MWidgetStyle中的maximumSize,要體會style的含義。
另外,MSceneWindowStyle有個style是int disappearTimeout,可見,style的靈活性。

<8>mtf中的MVC模式,看似復雜,但是有它的靈活性和優勢,尤其是style,也可以控制實際的顯示效果。

0
0
 
標簽:MeeGo教程
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()