Qt6-鼠标移动窗口

网友投稿 677 2022-05-30

新版的Qt6 鼠标事件中函数是有更新了,不过帮助文档还没有更新过来。希望官方也要快速同步呦。

在Qt5中代码

*

* 鼠标按下操作

* 记录当前坐标

*/

static QPoint last(0,0); //保存坐标

const int TITLE_HEIGHT = 50; //这里也可以使用宏定义,保存标题高度,也就是鼠标点击区域的高度

void MainWindow::mousePressEvent(QMouseEvent *event)

{

if(event->y()

{

last = event->globalPos();

}

}

/*

* 鼠标移动函数

* 这里实时修改窗口的坐标

*/

void MainWindow::mouseMoveEvent(QMouseEvent *event)

{

if(event->y()

{

int dx = event->globalX() - last.x();

int dy = event->globalY() - last.y();

last = event->globalPos();

this->move(this->x()+dx,this->y()+dy);

}

}

/*

* 鼠标释放函数

*/

Qt6-鼠标移动窗口

void MainWindow::mouseReleaseEvent(QMouseEvent *event)

{

if(event->y()

{

int dx = event->globalX() - last.x();

int dy = event->globalY() - last.y();

this->move(this->x()+dx,this->y()+dy);

}

}

在Qt6中有部分变化,如下,当时,沿用Qt5中的代码除了警告是没有其他问题的。

static QPoint last(0,0); //保存坐标

const int TITLE_HEIGHT = 50; //这里也可以使用宏定义,保存标题高度,也就是鼠标点击区域的高度

void MainWindow::mousePressEvent(QMouseEvent *event)

{

if(event->position().y()

{

last = event->globalPosition().toPoint();

}

}

void MainWindow::mouseMoveEvent(QMouseEvent *event)

{

if(event->position().y()

{

int dx = event->globalPosition().x() - last.x();

int dy = event->globalPosition().y() - last.y();

last = event->globalPosition().toPoint();

this->move(this->x()+dx,this->y()+dy);

}

}

void MainWindow::mouseReleaseEvent(QMouseEvent *event)

{

if(event->position().y()

{

int dx = event->globalPosition().x() - last.x();

int dy = event->globalPosition().y() - last.y();

this->move(this->x()+dx,this->y()+dy);

}

}

Qt

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:gitlab ci/cd 中使用 ssh-key
下一篇:Maven系列之Maven生命周期简介
相关文章