如何解决Qt 决定忽略函数?
所以我有这个带有无框窗口的项目,为了在屏幕上移动它们,为每个窗口都做了这样的功能:
window.h
private:
Ui::MainWindow *ui;
void main_mousePressEvent(QMouseEvent *event);
void main_mouseMoveEvent(QMouseEvent *event);
int m_nMouseClick_X_Coordinate;
int m_nMouseClick_Y_Coordinate;
window.cpp
void MainWindow::main_mousePressEvent(QMouseEvent *event) {
m_nMouseClick_X_Coordinate = event->position().x();
m_nMouseClick_Y_Coordinate = event->position().y();
//qDebug() << m_nMouseClick_X_Coordinate << " 1 " << m_nMouseClick_Y_Coordinate;
}
void MainWindow::main_mouseMoveEvent(QMouseEvent *event) {
move(event->globalPosition().x()-m_nMouseClick_X_Coordinate,event->globalPosition().y()-m_nMouseClick_Y_Coordinate);
//qDebug() << m_nMouseClick_X_Coordinate << " 2 " << m_nMouseClick_Y_Coordinate;
}
在我重新启动计算机并再次运行该程序之前,它一直工作得很好……由于某种原因,Windows 现在无法移动,您知道发生了什么吗?
附言Qt版本- 6
解决方法
也许是个愚蠢的问题,但是您启用了鼠标跟踪吗?例如。 setMouseTracking(true);
在窗口构造函数中。
此外,通过您的实现,即使您没有按下鼠标,窗口也会不断移动。我这样做的方法是覆盖两个函数:onMousePressEvent()
和 onMouseReleaseEvent()
,并创建一个变量 isMousePressed
,该变量将在移动窗口之前在 mouseMoveEvent()
中检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。