window frame 的影響
如果 widget 作為一個窗口(帶有標題欄,最小化,最大化,關閉按鈕),那么在計算尺寸和坐標的
時候就有兩種算法.包含 window frame 和 不包含 window frame.
其中x(),y0,frameGeometry(), pos(),move() 都是按照包含 window frame 的方式來計算
的.
其中 geometry(),width(),height(),rect(),size() 則是按照不包含 window frame 的方式來計
算的.
當然,如果一個不是作為窗口的 widget,上述兩類方式得到的結果是一致的
?
①在 Qt 中,關于位置尺寸,提供了很多的 API.
有的 API 的位置信息是以 Widget 本體左上角為原點的(不考 Window frame)
有的 API 的位置信息是以 window frame 左上角為原點的
geometry()
setGeometry()
都是不考慮 window frame
frameGeometry ()
setFrameGeometry ()
考慮 window frame
②?代碼示例: 感受 geometry 和 frameGeometry 的區別
當前代碼是放到了 構造函數 中
此時這個 Widget 對象正在構造
此時也就不具備 Window frame.
因此,此時還看不到 window frame 的影響?
③在按鈕的 slot 函數中,由于用戶點擊的時候,對象樹已經構造好了,此時 Widget 已經具備了
Window frame,因此在位置和尺寸上均出現了差異
如果把上述代碼修改成打印 pushButton 的 geometry 和 frameGeometry,結果就是完全相
同的.因為 pushButton 并非是一個窗口.