Qt如何通過pos()獲取坐標信息
更新時間:2024年01月05日 11:32:10 作者:lpl輕舟已過萬重山
這篇文章主要給大家介紹了關于Qt如何通過pos()獲取坐標信息的相關資料,文中通過代碼介紹的非常詳細,對大家學習或者使用qt具有一定的參考借鑒價值,需要的朋友可以參考下
背景:這是一個QWidget窗體,里面是各種布局的組合,一層套一層。
我希望得到綠色部分的坐標信息(x,y)
QPoint get_pos(QWidget* w, QWidget* parent) { if ((QWidget*)w->parent() == parent) { return w->pos(); } else { QPoint pos(w->pos()); pos += get_pos((QWidget*)w->parent(), parent); return pos; } }
假設
綠色窗體為w
最外面的窗體為m
get_pos(w,m);
附:在實現(xiàn)一個可以自由拖動位置的widget時
void ShadowWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton && !mouse_press) { mouse_press = true; } //窗口移動距離 orig_point = event->globalPos(); orig_pos = pos() ; } void ShadowWidget::mouseReleaseEvent(QMouseEvent *) { if (mouse_press) { mouse_press = false; } } void ShadowWidget::mouseMoveEvent(QMouseEvent *event) { //移動窗口 if (mouse_press) { QPoint move_point = event->globalPos(); move(move_point - orig_point + orig_pos ); /*move是相對于桌面系統(tǒng)來移動widget,所以是相對于移動前 widget在桌面系統(tǒng)的位置上來進行的, 所以要加上orig_pos*/ } }
在坐標位置變換時注意下不同坐標系的坐標軸原點差異,就能靈活應對了。
總結
到此這篇關于Qt如何通過pos()獲取坐標信息的文章就介紹到這了,更多相關Qt pos()獲取坐標內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
全局靜態(tài)存儲區(qū)、堆區(qū)和棧區(qū)深入剖析
在C++中,內存可分為系統(tǒng)數(shù)據區(qū),自由存儲區(qū),文本區(qū),const數(shù)據區(qū),全局靜態(tài)區(qū),堆區(qū)和棧區(qū)2012-11-11