本系列文章長期更新修改.
qcolor,是qt裡代表顏色的類,是許多更抽象資料結構和作圖的基礎.
1.顏色模式
qcolor支援三種模式的顏色,分別有rgb,hsv,cmyk.
同時qcolor支援整數和浮點數設定,如果用浮點數設定的話,所有取值範圍都是[0,1]
qcolor在某一時刻只能以一種模式存在,qcolor有一系列函式給我們用來獲取和轉換顏色模式.
spec型別是我們顏色模式的列舉集:
列舉量值
qcolor.rgb
1qcolor.hsv
2qcolor.cmyk
3qcolor.invalid
0當我們在某種模式的qcolor上更新另一種模式的屬性時,這個qcolor會先轉換顏色模式,再更新它的數值,也就是說會自動變換顏色模式.
必須知道的是,當使用錯誤的引數設定的時候,是可能會產生非法的顏色的,此時它的模式就是invalid.
我們可以通過下面函式去檢查乙個qcolor是否合法:
2.rgb模式
rgb模式就是根據紅綠藍三原色進行疊加,是顯示屏的基礎顏色模式,在qcolor裡rgb模式的函式也是最多的.
r,g,b的取值範圍都是[0,255],因此乙個24位整數即可表達乙個rgb顏色.
從rgb延伸出的有rgba,它在紅綠藍的基礎上加上透明度.
透明度a的取值範圍也是[0,255],因此乙個32位整數即可表達乙個rgba顏色.
紅 綠
藍 rgb3.hsv模式
hsv模式的引數分別是hue(色調),saturation(飽和度),value(明度).
h其實是乙個圓的角度,它的取值範圍是[0,360),而s和v則都是[0,255]
同樣地,hsv也可以加上透明度變成hsva模式.
色調飽和度明度
hsv
4.cmyk模式
cmyk模式是印刷方面的重要顏色模型,它的引數包括cyan(青),magenta(品紅),yellow(黃),key plate(黑).
事實上我們以前聽說的印刷三原色只有青,品紅和黃,至於黑,是因為用c,m,y很難調出純黑,並且印刷時用到黑色的地方很多.
因此加上黑色,一方面增大色域和品質,一方面減少其他三種色的顏料的消耗.
c,m,y,k的取值範圍都是[0,255],同樣也可以加上透明度.青
品紅 黃
黑
cmyk
5.透明度
透明度可以單獨設定:
6.初始化
qcolor提供了多達7種的不同引數的初始化方式:
函式引數解釋
__init__ (self)
rgb模式裡的純黑色
__init__ (self, int r, int g, int b, int a = 255)
rgb模式
__init__ (self, unsigned long rgb)
rgb模式
__init__ (self, qt.globalcolor color)
預定義的顏色
__init__ (self, qcolor acolor)
通過其他qcolor
__init__ (self, qstring aname)
通過名字生成rgb模式顏色
__init__ (self, qvariant variant)
?7.靜態方法生成
從初始化函式可以看到,它只支援rgb模式的初始化.如果我們要生成hsv或者cmyk的,我們可以使用靜態方法:
8.顏色名字
在初始化的時候,我們看到顏色能通過名字初始化的.
這個名字可以是rgb特有的用"#"+若干位16進製制數表示的字串,它有下面幾種模式(乙個字母代表乙個16進製制位):
越多的位能讓顏色取值越精細,當然,36位和48位的rgb顏色要在浮點數表示裡才能體現出其精度之高.
這個名字也可以是qcolor提供的乙個顏色表裡的名字.
qcolor有乙個靜態方法可以返回這個顏色表,顏色表裡是一堆字串,使用這些字串可以初始化乙個qcolor.
除了初始化,下面的函式也能實現名字和顏色之間的轉化,注意獲取名字的時候只能得到#rrggbb形式的.
9.預定義顏色
qt提供了一堆預定義的顏色,其中color0和color1是兩個特殊的顏色,它們是bitmap方面用到.
列舉量值
qt.white
3qt.black
2qt.red
7qt.darkred
13qt.green
8qt.darkgreen
14qt.blue
9qt.darkblue
15qt.cyan
10qt.darkcyan
16qt.magenta
11qt.darkmagenta
17qt.yellow
12qt.darkyellow
18qt.gray
5qt.darkgray
4qt.lightgray
6qt.transparent
19qt.color0
0qt.color1
1 它們的實際效果如下:
10.變亮變暗
qcolor提供了兩個有趣的函式,來實現顏色的變亮變暗.
函式的工作原理是把顏色轉換成hsv模式,然後調整v(明度),再轉換回來.
其中無er字尾和有er字尾的效果貌似一樣,並且qt裡本身沒有dark()和light()函式.
引數裡的f是乙個程度係數.
如lighter()函式,如果f<100,則顏色反而會變暗,如果f=150,顏色大概變亮50%.
對於darker()函式,如果f<100,則顏色反而會變亮,如果f=300,顏色會變成原來的1/3亮度.
注意,這些函式都不會改變自身,只是會返回乙個更亮或更暗的顏色.
pyqt4文件閱讀 9 QColor
qcolor,是qt裡代表顏色的類,是許多更抽象資料結構和作圖的基礎.1.顏色模式 qcolor支援三種模式的顏色,分別有rgb,hsv,cmyk.同時qcolor支援整數和浮點數設定,如果用浮點數設定的話,所有取值範圍都是 0,1 qcolor在某一時刻只能以一種模式存在,qcolor有一系列函式...
pyqt4文件閱讀 6 QGridLayout
本系列文章長期更新修改.qgridlayout,網格布局,是qt裡十分常用的布局,下圖即為網格布局示意圖.1.網格系統 qgridlayout是一種網格布局系統,和css裡的bootstrap相似,但比它更複雜.乙個網格布局就是乙個矩陣,每個格仔都可以放乙個控制項或者乙個子布局,也可以乙個控制項占用...
pyqt4文件閱讀 7 QSize
本系列文章長期更新修改.qsize,是qt的乙個常用資料結構,它是整數寬度高度的封裝,本質上就是兩個int的結構體.1.主要屬性 qsize的主要屬性就是寬度和高度,所有方法都圍繞它們進行計算.初始化的時候如果沒有給出引數,寬度和高度為 1.2.函式解釋 函式 解釋transpose self 交換...