bool example_first::eventFilter(QObject* watched,QEvent* event)
{
x = this->width();
y = this->height();
size = (x > y) ? y/18 : x/18;
x -= size;
y -= size;
QMouseEvent *mouseEvent = (QMouseEvent *)event;
if(watched == label1)
{
if(event->type() == QEvent::MouseButtonRelease)
{
label1->setGeometry(QRect(mouseEvent->pos().x(), mouseEvent->pos().y(), size, size));
label21->setText(QString::number(mouseEvent->pos().x()));
label22->setText(QString::number(mouseEvent->pos().y()));
}
}
return QMainWindow::eventFilter(watched,event);
}
获取当前窗口的鼠标的坐标,但是,只有第一次获取的值是对的额,从第二次开始之后就变成错误的坐标,不知道是为什么?
获取鼠标坐标 setGeometry label设置图片
------解决方案--------------------
重写mouseMoveEvent
------解决方案--------------------
能不能定义全局变量,获取鼠标release时的坐标,然后鼠标释放时就执行label的事件。用update()可以吗??。。。。

------解决方案--------------------
重载mousePressEvent和mouseMoveEvent。通过相对值计算label移动的位置。