有没有更好的方法来移动 window?
Is there any better way to move a window?
我正在使用 Qt Framework for desktop 开发一个应用程序。因为我删除了每个 window 装饰,所以我必须实现主要的 window 来接收用户单击它并移动鼠标时的移动事件。
我尝试了下面的代码,但我不满意。我想知道是否有更好的方法可以更优雅地做到这一点。
QPoint* mouseOffset; //global variable that hold distance of the cursor from
the top left corner of the window.
void ArianaApplication::mouseMoveEvent(QMouseEvent* event)
{
move(event->screenPos().x() - mouseOffset->x(),
event->screenPos().y() - mouseOffset->y());
}
void ArianaApplication::mousePressEvent(QMouseEvent*)
{
mouseOffset = new QPoint(QCursor::pos().x() - pos().x(),
QCursor::pos().y() - pos().y());
}
你能给我一些建议吗?
方法是正确的,但实现上可以改进以下几点:
mouseOffset
不一定是指针,因为您不必要地创建了动态内存,您有责任消除它。
不需要获取每个组件,QPoint
支持subtraction。
*.h
QPoint mouseOffset;
*.cpp
void ArianaApplication::mouseMoveEvent(QMouseEvent * event)
{
move(event->globalPos() - mouseOffset);
}
void ArianaApplication::mousePressEvent(QMouseEvent * event)
{
mouseOffset = event->globalPos() - frameGeometry().topLeft();
}
我正在使用 Qt Framework for desktop 开发一个应用程序。因为我删除了每个 window 装饰,所以我必须实现主要的 window 来接收用户单击它并移动鼠标时的移动事件。
我尝试了下面的代码,但我不满意。我想知道是否有更好的方法可以更优雅地做到这一点。
QPoint* mouseOffset; //global variable that hold distance of the cursor from
the top left corner of the window.
void ArianaApplication::mouseMoveEvent(QMouseEvent* event)
{
move(event->screenPos().x() - mouseOffset->x(),
event->screenPos().y() - mouseOffset->y());
}
void ArianaApplication::mousePressEvent(QMouseEvent*)
{
mouseOffset = new QPoint(QCursor::pos().x() - pos().x(),
QCursor::pos().y() - pos().y());
}
你能给我一些建议吗?
方法是正确的,但实现上可以改进以下几点:
mouseOffset
不一定是指针,因为您不必要地创建了动态内存,您有责任消除它。不需要获取每个组件,
QPoint
支持subtraction。
*.h
QPoint mouseOffset;
*.cpp
void ArianaApplication::mouseMoveEvent(QMouseEvent * event)
{
move(event->globalPos() - mouseOffset);
}
void ArianaApplication::mousePressEvent(QMouseEvent * event)
{
mouseOffset = event->globalPos() - frameGeometry().topLeft();
}