我在OpenGL中使用的是QWindow (不是QMainWindow)。我需要使用QWindow来正确地控制OGL上下文。
我正在尝试遵循Scribble示例来实现类似于平移的东西,但是我找不到一种触发mouseMoveEvent()的典型方法。
如何获得类似于setMouseTracking()的mouseMoveEvent()不断被触发的“工具提示”效果?
发布于 2017-02-10 05:27:36
它对我来说很好。我使用继承QWindow而不是QMainWindow的MainWindow创建了一个测试程序,并处理鼠标移动事件以打印光标位置:
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
qDebug("%d, %d", e->pos().x(), e->pos().y());
}它起作用了,当我移动鼠标时,即使没有按下任何鼠标按键,我也会得到事件。
发布于 2017-02-10 15:42:21
如果禁用鼠标跟踪(默认设置),则只有在移动鼠标时按下至少一个鼠标按键时,小工具才会接收鼠标移动事件。
您可以调用hasMouseTracking()或setMouseTracking()来控制鼠标的跟踪状态。
当鼠标被跟踪时,将调用mouseMoveEvent(),您可以重新植入mouseMoveEven()来获取鼠标位置,就像@sashoalm所做的那样。
顺便说一句,鼠标事件总是被转移到你的应用程序中,但是会被它的父级或者它自己过滤掉。你可以重新植入eventFilter()来编写你自己的过滤器。
https://stackoverflow.com/questions/42145854
复制相似问题