当鼠标进入窗口时调用Qt mousePressedEvent
Qt mousePressedEvent called when mouse enter window
我有一个MainWindow(::QMainWindow)
,我重写了mousePressEvent
、mouseReleaseEvent
、mouseMoveEvent
来跟踪鼠标。除了mousePressEvent
,一切都很顺利。
当我按下鼠标左键并移动鼠标时,会调用mouseMoveEvent
,然后我将鼠标移出窗口并释放鼠标左键,然后我在不按下左键的情况下将鼠标移动到窗口中,就会调用mousePressedEvent
。当我自鼠标进入后第一次单击左键时,mousePressedEvent
不会被调用。
奇怪的是,在没有按下按钮的情况下调用mousePressedEvent
我想知道这是qt的默认策略还是一个bug。我该如何克服这一点?
在向这些方法添加日志后,我发现当我在按下按钮的情况下将鼠标移出窗口时,mouseReleaseEvent
会自动调用,而按钮不会释放。
另外,我正在使用Qt 5.4.0 的mac os 10.11上工作
最后我发现这不是Qt的默认策略。我有这个问题是因为我在QtWindow中添加了一个NSView。
您正在使用event(QEvent *curEvent)
公共插槽吗?我按照你说的方法锻炼,效果很好。当您在MainWindow
之外释放鼠标时,您将获得MouseRelese
事件,当您返回MainWindow
时,不会调用mousepress事件。请使用以下代码进行检查。我正在使用QT on Windows
和MinGW
编译器。
bool MainWindow :: event(QEvent *curEvent)
{
if(curEvent->type() == QEvent::MouseButtonPress)
{
qDebug() << "Mouse Press";
}
if(curEvent->type() == QEvent::MouseButtonRelease)
{
qDebug() << "Mouse Release";
}
if(curEvent->type() == QEvent::MouseMove)
{
qDebug() << "Mouse Move";
}
return QWidget::event(curEvent);
}
相关文章:
- 如何在qt中从另一个类调用函数
- 使用Qt框架在c ++类中创建API调用
- 如何从其他类n个Qt C++调用QTimer?
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 如何从qml Keys.oPressed调用qt keyPressEvent(QKeyEvent*事件)
- 从第二个线程调用Qt信号有效 - >对连接的插槽没有影响
- 如何调用QT快速2扩展插件的方法
- Customplaceholder没有用于调用QT标签的匹配函数
- 无法在 QML 列表视图中调用 Qt c++ 方法
- 从QTCreator中调用QT的Fortran代码
- 使用QVariant调用Qt方法
- 从Javascript端调用Qt函数(QWebView)
- 从另一个 std::thread 调用 Qt 对象方法
- 在接收器对象销毁时未调用Qt disconnectNotify()
- 从Javascript代码中调用Qt函数
- C++接口类导致函数调用(Qt)不明确
- Marshal调用Qt主线程
- 当鼠标进入窗口时调用Qt mousePressedEvent
- 检索用户选择的结果作为调用Qt中外部程序的输入
- 只有当两个信号都发出时才调用Qt -调用槽