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*/
}
}在坐標位置變換時注意下不同坐標系的坐標軸原點差異,就能靈活應對了。
總結(jié)
到此這篇關于Qt如何通過pos()獲取坐標信息的文章就介紹到這了,更多相關Qt pos()獲取坐標內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言實現(xiàn)文件內(nèi)容按行隨機排列的算法示例
這篇文章主要介紹了C語言實現(xiàn)文件內(nèi)容按行隨機排列的算法,涉及C語言字符串、數(shù)組遍歷與隨機數(shù)相關算法實現(xiàn)技巧,需要的朋友可以參考下2017-09-09
使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼
這篇文章主要介紹了opencv車道線檢測實戰(zhàn),效果非常逼真,代碼簡單易懂,對opencv車道線檢測實戰(zhàn)代碼感興趣的朋友一起看看吧2022-03-03
深入理解C++中的new和delete并實現(xiàn)對象池
這篇文章主要介紹了C++中的new和delete并實現(xiàn)對象池,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09

