gpt4 book ai didi

qt - 用鼠标移动物体

转载 作者:行者123 更新时间:2023-12-04 13:56:17 25 4
gpt4 key购买 nike

我使用 Qt,我想用鼠标移动一些对象。例如,用户单击对象并将该对象拖动到窗口的另一个位置。我该怎么做?

我试过mouseMoveEvent:

void QDropLabel::mouseMoveEvent(QMouseEvent *ev)
{
this->move(ev->pos());
}

但不幸的是对象移动的方式很奇怪。它从一个地方跳到另一个地方。

QDropLabel 继承了 QLabel。它也给出了一个像素图。
我试图用不同的对象来做,但结果是一样的。

最佳答案

您的可移动小部件必须有 QPoint offset成员。它将存储光标单击相对于小部件左上角的位置:

void DropLabel::mousePressEvent(QMouseEvent *event)
{
offset = event->pos();
}

在鼠标移动事件中,您只需在其父坐标系中移动您的小部件。请注意,如果不减去 offset从光标位置开始,您的小部件将“跳跃”,因此其左上角将位于光标下方。
void DropLabel::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
this->move(mapToParent(event->pos() - offset));
}
}

关于qt - 用鼠标移动物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com