以螢幕的左上角為原點即(0, 0)點,從左向右為x軸正向,從上向下為y軸正向,這整個螢幕的座標系統就用來定位頂層視窗;
此外,視窗內部也有自己的座標系統,它依然以左上角作為原點,從左向右為x軸正向,從上向下為y軸正向,原點、x軸、y軸圍成的區域叫做client area(客戶區),在客戶區的周圍則是標題欄(windows title)和邊框(frame)。
建立了乙個最頂層widget。
#include "widget.h"
{ widget w;
w.show();
qdebug()<
qdebug()輸出結果:
結論:
1.qwidget提供的x,y表示的座標與framegeometry().x(),framegeometry().y()的相同。
2.geomerty()函式,表示客戶區的函式,其長和寬 和 widget的長和寬相同,但是其x、y座標比widget的x、y座標大,這就證實上圖中的座標系統。
3.framegeometry().width(),framegeometry().height(),比widget的長和寬要大一些。
分析2:
呼叫move(0,0)方法。使其移動到遮蔽的左上角。以下是我呼叫move(0,0)方法後,可以明顯看見視窗左上角未與螢幕左上角重合,可以自己去試試。
結論:
以下是qt的注釋:
move函式移動的位置其實是它的外框移動的位置。
呼叫w.setgeometry(0,0,400,300)方法,可以使客戶區x、y座標與螢幕左上角重合,需要隱藏視窗標題欄。呼叫以下方法設定視窗隱藏。
w.setwindowflags(qt::framelesswindowhint)
在視窗上放了乙個pushbutton,如圖
如果想要知道pushbutton的左上角座標相對於整個螢幕的座標,則呼叫
qpoint pos = ui->pushbutton->pos();
qpoint posleftup = w.maptoglobal(pos);
如果想要知道pushbutton的右下角座標相對於整個螢幕的座標,則呼叫
qpoint pos = ui->pushbutton->pos();
qpoint pos2;
pos2.setx(pos.x()+ui->pushbutton->width());
pos2.sety(pos.y()+ui->pushbutton->height());
qpoint posrightdown= w.maptoglobal(pos2);
座標變換、包括平移、旋轉、縮放。
Qt 座標系統
1 move 移動位置 對於父視窗 主視窗 座標系統相對於螢幕 原點 相對於螢幕左上角 x 往右遞增 y 往下遞增 move 100,100 座標相對於螢幕 子視窗,座標系統相對于父視窗 原點 相對於視窗空白區域左上角 不包括邊框 x 往右遞增 y 往下遞增 qpushbutton b1 new q...
Qt座標系統
座標變換 world corrdinates window coordinates device coordinates 邏輯座標 世界變換 中間態座標 視窗視口變換 物理座標 在預設情況下,3個座標系是一致的。世界變換 qpainter setworldmatrixenabled 啟用 禁用世界變...
Qt座標系統
座標變換 world corrdinates window coordinates device coordinates 邏輯座標 世界變換 中間態座標 視窗視口變換 物理座標 在預設情況下,3個座標系是一致的。世界變換 qpainter setworldmatrixenabled 啟用 禁用世界變...