本文介紹qt
的qrect
和windows
下的crect
的比較。
qrect
的無參構造方法是這樣的:
qrect(): x1(0),y1(0),x2(-1),y2(-1)
預設構造的x2和y2為-1,而crect
的無參構造這兩個數值為0。
帶4個整形引數未知的構造方法是這樣的:
qrect(int aleft, int atop, int awidth, int aheight)
crect的四個整形引數構造方法是這樣的:
crect::crect(int l, int t, int r, int b)
注意第三個引數是寬度,第四個是高度,而crect
的4個整形引數,後兩個是right
和bottom
,內在
因為qrect
在設定寬度時,x2的座標有-1操作,要獲得構造時的寬度,就通過x2 - x1 + 1
,這樣的方法來獲得,這也是qrect::width()
的內部實現。
crect
的寬度width
直接等於right - left
。在crect中,經常是這樣設定寬度的,
const int nwidth = 15;
crect rt;
rt.left = 10;
rt.right = rt.left + nwidth;
這樣設定目標寬度和設定是要一致的。如果上述做法遷移到qrect
上,就會有偏大。
const int nwidth = 15;
qrect rt;
rt.setleft(10);
rt.setright(rt.left() + nwidth);
這樣設定,rt的寬度實際上是16,而不是期望的15.如果需要正確的設定,則需要這樣:
const int nwidth = 15;
qrect rt;
rt.setleft(10);
rt.setwidth(nwidth);
呼叫setwidth
來設定寬度,可使得結果與預期一致。qrect
的高度設定也是一樣,建議用setheight
來設定高度.
另一點注意,qrect::setwidth
和qrect::setheight
是通過更改x2
、y2
來改變寬高,左上角座標是不會改變的。以下的做法是不能達到目的的:
// 先設定右邊距,再設定寬度,這樣不會使得left邊界位於10這裡
qrect rt;
rt.setright(20);
rt.setwidth(10);
moveleft
是移動整個矩形,使之位於指定左邊距。
setleft
是移動左邊距,不會改變右邊距。
獲得右邊距:建議使用 x() + width(),而不是 right()。right()會比實際位置少1個單位。
獲得下邊距:建議使用 y() + height(),而不是 bottom()。
qrect
類建議只使用left(),top(),width()和height()
這些成員函式,不要用right()
和bottom()
函式。
qt 學習之路 :座標系統
qrect的使用 qt 使用Qt介面以及邏輯實現
用過qt的朋友 特別是qtcreator的習慣在介面ui上面對應的cpp中寫 但是在pyqt中不是這樣的。pyqt只是個介面,只會生成介面即ui,就算是乙個按鈕也需要在python只自己寫。不會想當然的找槽函式自動生成那麼簡單了。安裝pyqt5 pip3 install pyqt 安裝設計器 pip...
CRect和HRGN的區別
crect 就是乙個普通的資料結構 類?hrgn是資源控制代碼 由作業系統管理,數量有限 1 構造出異形hrgn 這個hrgn必須有效,並且不為空 2 setwindowrgn crect顧名思義,只是個矩形 hrgn是區域,有各種api函式可以建立任意形狀的區域 建立區域後,使用setwindow...
VC中CRect類的簡單介紹
crect crect類與windows rect結構相似,並且還包括操作crect物件和windows rect結構的成員函式。在傳遞lprect,lpcrect或rect結構作為引數的任何地方,都可以傳遞crect物件來代替。注意 這個類是從tagrect結構派生而來的。tagrect是rect...