QWidget
基礎(chǔ)窗口控件 QWidget類是所有用戶界面對(duì)象的基類,所有的窗口和控件都直接或間接繼承自QWidget類。
窗口控件(Widget,簡(jiǎn)稱“控件”)是在PyQt中建立界面的主要元素。在PyQt中把沒有嵌入到其他控件中的控件稱為窗口,一般窗口都有邊框、標(biāo)題欄。窗口是指程序的整體界面,可以包含標(biāo)題欄、菜單欄、工具欄、關(guān)閉按鈕、最小化按鈕、最大化按鈕等;控件是指按鈕、復(fù)選框、文本框、表格、進(jìn)度條等這些組成程序的基本元素。一個(gè)程序可以有多個(gè)窗口,一個(gè)窗口也可以有多個(gè)控件。
1、 窗口坐標(biāo)系統(tǒng)
PyQt 使用統(tǒng)一的坐標(biāo)系統(tǒng)來(lái)定位窗口控件的位置和大小。具體的坐標(biāo)系統(tǒng)如圖所示。

以屏幕的左上角為原點(diǎn),即(0,0)點(diǎn),從左向右為x軸正向,從上向下為y軸正向,整個(gè)屏幕的坐標(biāo)系統(tǒng)就用來(lái)定位頂層窗口的。
此外,在窗口內(nèi)部也有自己的坐標(biāo)系統(tǒng),該坐標(biāo)系統(tǒng)仍然以左上角作為原點(diǎn),從左向右為x軸正向,從上向下為y軸正向,原點(diǎn)、x軸、y軸圍成的區(qū)域叫作ClientArea(客戶區(qū)),在客戶區(qū)的周圍則是標(biāo)題欄(Window Title)和邊框(Frame)。
如圖所示是Qt提供的分析QWidget幾何結(jié)構(gòu)的一張圖,在幫助文檔的“Window and Dialog Widgets”中可以找到相關(guān)的內(nèi)容介紹。

QWidget直接提供的成員函數(shù):x()、y()獲得窗口左上角的坐標(biāo),width()、height()獲得客戶區(qū)的寬度和高度。
QWidget的 geometry()提供的成員函數(shù):x()、y()獲得客戶區(qū)左上角的坐標(biāo),width()、height(獲得客戶區(qū)的寬度和高度。
QWidget的 frameGeometry()提供的成員函數(shù):x()、y()獲得窗口左上角的坐標(biāo),width()、height()獲得包含客戶區(qū)、標(biāo)題欄和邊框在內(nèi)的整個(gè)窗口的寬度和高度。
2、常用的幾何機(jī)構(gòu)
從圖2中可以看出,QWidget有兩種常用的幾何結(jié)構(gòu)。
不包含外邊各種邊框的幾何結(jié)構(gòu)。包含外邊各種邊框的幾何結(jié)構(gòu)。
1)?QWidget不包含邊框的常用函數(shù)
一般情況下,不包含邊框的部分是客戶區(qū),這里面就是我們正常操作的地方,可以添加子控件。這部分是一個(gè)長(zhǎng)方形,會(huì)有大小和位置。大小就是指寬度(width)和高度(height);位置就是指這個(gè)長(zhǎng)方形在屏幕上的位置。在Qt中保存這個(gè)長(zhǎng)方形使用的是 QRect類,這個(gè)類也有自己的大小和位置。要改變其大小和位置,可以使用如下幾個(gè)函數(shù)。
a、改變客戶區(qū)的面積:
這兩個(gè)函數(shù)改變了長(zhǎng)方形的大小,其中第一個(gè)參數(shù)是寬度,第二個(gè)參數(shù)是高度。設(shè)置了大小的窗口,還可以用鼠標(biāo)來(lái)改變它的大小。
b、獲得客戶區(qū)的大小
c、獲得客戶區(qū)的寬度和高度
d、設(shè)置客戶區(qū)的寬度和高度
使用這個(gè)函數(shù),客戶區(qū)的高度就是固定的,不可以改變,只可以改變寬度。
這時(shí)候?qū)挾染褪枪潭?,不可以改變,但是可以改變高度?/p>
通過(guò)上面這兩個(gè)函數(shù),高度和寬度都是固定的,不可以通過(guò)鼠標(biāo)來(lái)改變窗口的寬度和高度。如果要同時(shí)改變客戶區(qū)的大小和位置,需要用到以下函數(shù)。
x和y對(duì)應(yīng)的就是x和y的坐標(biāo)。可以不單獨(dú)設(shè)置x和y的坐標(biāo)。
2)QWidget包含邊框的常用函數(shù)
QWidget包含邊框,這個(gè)邊框有大小和位置,是窗口在屏幕上顯示的整個(gè)區(qū)域。這里沒有設(shè)置這個(gè)邊框大小的函數(shù),因?yàn)橥ㄟ^(guò)上面不包含邊框函數(shù)的設(shè)置,就可以設(shè)置包含邊框的大小了。通過(guò)下面的函數(shù),可以獲得整個(gè)窗口的位置和大小。
a、獲得窗口的大小和位置
b、設(shè)置窗口的位置
c、獲得窗口左上角的坐標(biāo)
實(shí)例:屏幕坐標(biāo)系統(tǒng)顯示
運(yùn)行程序,顯示效果如下:
