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 20:32:38 浏览: 24
这段代码看起来像是一个用于计算鼠标相对于窗口部件的偏移量的函数。它首先调用isWidgetInnerOrOuter函数判断鼠标是否在窗口部件内或外,如果在窗口部件内,就调用isBlankOfWidget函数判断鼠标是否点击了窗口部件中的空白区域。如果是,就获取鼠标所在窗口部件的位置,然后计算偏移量并返回;否则说明鼠标点击了窗口部件中的其他部分,例如标签或文本框,需要获取父窗口部件的位置,计算偏移量并返回。
如果鼠标不在窗口部件内,就说明鼠标点击了窗口部件外部,需要将偏移量设置为鼠标的位置,并返回该位置。
相关问题
error C3867: “QPoint::x”: 函数调用缺少参数列表;请使用“&QPoint::x”创建指向成员的指针报这个错
这个错误是因为您在使用 QPoint 的 x 和 y 成员时,没有使用正确的语法。正确的语法是使用 `&QPoint::x` 和 `&QPoint::y` 创建指向成员的指针,然后将其作为参数传递给函数。例如,您可以将您的代码修改为以下形式:
```
for (int n = 0; n < m_markInfo.size(); n++) {
for (int m = 0; m < m_markInfo[n].size(); m++) {
QPoint point(m_markInfo[n][m].x(), m_markInfo[n][m].y()); // 使用 x() 和 y() 函数获取坐标值
m_painter.drawPoint(point);
}
}
```
在上面的示例中,我们使用 `x()` 和 `y()` 函数获取 QPoint 对象的 x 和 y 坐标值,然后将它们传递给 QPoint 的构造函数。
如果您需要直接访问 QPoint 的 x 和 y 成员,可以使用 `&QPoint::rx` 和 `&QPoint::ry` 创建指向成员的指针,例如:
```
for (int n = 0; n < m_markInfo.size(); n++) {
for (int m = 0; m < m_markInfo[n].size(); m++) {
QPoint point;
point.rx() = m_markInfo[n][m].x;
point.ry() = m_markInfo[n][m].y;
m_painter.drawPoint(point);
}
}
```
在上面的示例中,我们使用 `rx()` 和 `ry()` 函数获取 QPoint 对象的可写引用,然后将其分配给您的变量。
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 相关的功能。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)