QPoint AllWidget::getOffset(QPoint pointMouse) { QPoint offset; if(isWidgetInnerOrOuter(pointMouse)) { if(isBlankOfWidget(pointMouse) == 1) { QWidget *child = static_cast<QWidget*>(m_mainwindow->childAt(pointMouse)); QPoint cp = child->pos(); offset = pointMouse - cp; return offset; } else // indicate we clicked label or lineEidit { QWidget *child = static_cast<QWidget*>(m_mainwindow->childAt(pointMouse)); QWidget *wid = (QWidget *)child->parent(); offset = pointMouse - wid->pos(); return offset; } } else // indicate clicked none widget { offset = pointMouse; return pointMouse; } }
时间: 2024-02-14 21:32:38 浏览: 66
这段代码看起来像是一个用于计算鼠标相对于窗口部件的偏移量的函数。它首先调用isWidgetInnerOrOuter函数判断鼠标是否在窗口部件内或外,如果在窗口部件内,就调用isBlankOfWidget函数判断鼠标是否点击了窗口部件中的空白区域。如果是,就获取鼠标所在窗口部件的位置,然后计算偏移量并返回;否则说明鼠标点击了窗口部件中的其他部分,例如标签或文本框,需要获取父窗口部件的位置,计算偏移量并返回。
如果鼠标不在窗口部件内,就说明鼠标点击了窗口部件外部,需要将偏移量设置为鼠标的位置,并返回该位置。
相关问题
QPoint AllWidget::findPosOfWidgetOrLabel(QPoint posTmp) { QWidget *childLastPortLabel = static_cast<QWidget*>(m_mainwindow->childAt(posTmp)); QString LastPortLabelName = childLastPortLabel->objectName(); QLabel *label = m_mainwindow->findChild<QLabel *>(LastPortLabelName); QWidget *wid = label->parentWidget(); QPoint tmp; int a=label->pos().x(); int b=label->pos().y(); int c=wid->pos().x(); int d=wid->pos().y(); tmp=QPoint(a+c,b+d); return tmp; }
这是一个函数实现,函数名为findPosOfWidgetOrLabel,参数为一个QPoint类型的posTmp。该函数的作用是查找在posTmp位置上的QWidget或QLabel的位置,并返回其左上角的坐标。
具体实现是通过调用mainwindow的childAt函数,获取在posTmp位置上的QWidget指针childLastPortLabel,并获取其对象名LastPortLabelName。然后通过调用mainwindow的findChild函数,根据LastPortLabelName获取QLabel指针label。接着通过label的parentWidget函数获取其父QWidget指针wid。
最后计算出label在wid中的位置,即相对位置,再加上wid在mainwindow中的位置,即绝对位置,得到最终的位置坐标tmp,将其返回。
综合来看,该函数实现了查找指定位置上的QWidget或QLabel,并返回其位置坐标的功能。
bool AllWidget::isLabelLogoOrName(QPoint pointMouse) { QWidget child = static_cast<QWidget>(m_mainwindow->childAt(pointMouse)); QString childName = child->objectName(); if(childName.contains("logo")||childName.contains("name")) { return true; } return false; }
这段代码是用来判断鼠标所在位置是否在主窗口中的 logo 或 name 标签上的。它首先通过传入的鼠标坐标获取到鼠标所在的子控件,然后判断该子控件的 objectName 是否包含 "logo" 或 "name",如果包含则返回 true,否则返回 false。该函数返回值的使用场景不清楚,可能是用来控制一些和 logo 或 name 相关的功能。
阅读全文