坐標系統
每個GUI操作系統都有特定的坐標系統,坐標系統用於在圖形界面程序中進行窗口、組件的定位(定位的前提就是要有坐標系統)及窗口部件的大小設置。
其中定位類型有頂級窗口組件的定位、窗口內部的組件定位和窗口部件的大小設置。
Qt中使用統一的坐標系統定位窗口部件的位置和大小。
Qt的組件類提供成員函數在坐標系統中進行定位,如函數x()、y()。
QWidget類提供了窗口部件所需的坐標系統成員函數。
其中上圖外層坐標表示窗口在屏幕中的坐標,內層表示用戶區,除去標題欄和最小化、最大化、關閉按鈕的坐標,在坐標系中橫為x(向右為增),豎為y(向下為增)。
坐標系統相關成員函數
QWidget直接提供的x()、y() 、width()、 height()函數表示窗口左上角開始計算的坐標(相對於電腦界面左上角而言)和客戶區的寬度和高度。
geometry()提供的x()、y() 、width()、 height()函數表示客戶區左上角開始計算的坐標和客戶區的寬度和高度
frameGeometry()提供的x()、y() 、width()、 height()函數表示窗口左上角開始計算的坐標和窗口的寬度和高度
注意:提供三組坐標就是為了跨平台使用,由於不同平台的標題欄大小不同,以及注意每組坐標系統中的適用區域。
在編程中:
親測,如果在show()調用之前調用的話數據是無效的。
因為在不同的平台中如果窗口還未顯示出來我們則無法知道邊框大小,只有將窗口顯示出來后才能獲取有效的坐標系統數據.
窗口部件大小、位置設置
QWidget提供了成員函數用來設置窗口組件的位置大小信息。
使用void resize(int w, int h)和void resize(const QSize&)來設置窗口寬度、高度(用戶區的寬度和高度)。
使用void move(int w, int h)和void move(const QPoint&)函數和坐標位置(窗口左上角的坐標),當設置的寬度小於了操作系統最小寬度值時系統默認設為系統的最小值,不同的操作系統所規定的最小值不同。
QPushButton組件
QPushButton生成的對象在界面上呈現就是一個按鈕。
QPushButton用於接受用戶點擊事件。
QPushButton能夠顯示提示性字符串,QLabel也有相同作用哦。
QPushButton是功能性組件,需要父組件作為容器。
QPushButton能夠在父組件中定位。
綜合代碼片段:
1 QWidget w;//生成QWidget對象,作為頂級組件
2 QPushButton btn(&w);//將按鈕對象放到容器里
3 btn.setText("Button");//給按鈕設置顯示的字符串
4 btn.move(10, 10);//移動按鈕位置
5 btn.resize(100, 25);//設置按鈕的寬度和高度
設置坐標為用戶區左上角為起始位置的坐標。
可以生成多個QPushButton對象來創建多個按鈕。
主窗口和用戶區都是以相同的方向創建坐標。