2010-04-07 23 views
0

我正试图在QGLWidget中捕获鼠标按下事件。我试图使用鼠标的移动在立体窗口中移动人造光标(“浮动”点)。我在自己的QGLWidget来绘图重新实现mousePressEvent,这里的h和.cpp文件中的相关章节:为什么我没有在QGLWidget中获取mousePressEvents?

.h文件

protected:

void initializeGL(); 
    void paintGL(); 

    void mouseMoveEvent(QMouseEvent *event); 
    void mousePressEvent(QMouseEvent *event); 

这里是在.cpp文件

功能

void ImageGLView::mousePressEvent(QMouseEvent *event)
{

if(FLOATING_DOT == mouseMode){ 
     QPoint currentPos = event->pos(); 
     lastPos = currentPos; 
    } 

}

没有看中这里...但我mousePressEvent从来没有得到任何事件。我设置了断点并采取了其他操作,但这些事件正在其他地方发生。

只要启用了鼠标跟踪功能,我就可以获取mouseMoveEvents。如果我没有打开它,即使在移动鼠标的同时按下鼠标按钮,我也不会收到它们。这似乎与文档和所有QT参考文献相反。这让我觉得别人正在获取mousePressEvents - 但这些文本字符串不会出现在我的代码中的任何其他地方。

考虑到我在做什么的简单性,我真的不知道接下来要做什么 - 我在其他QT GL代码中完成了这种精确的事情 - 没有问题 - 也许它与窗户的立体感?任何其他想法?

细节:QT4.6,Windows XP中

+0

你有没有试过在'mousePressEvent((QMouseEvent *)事件)'布线中的'bool QWidget :: event(QEvent * event)'中放置断点?当你进入该功能时会发生什么? – 2010-04-08 17:26:48

+0

不确定你的意思。我在我的功能中随处可见断点,从来都没有达到 - – jhowland 2010-04-14 20:46:40

回答

0

如果您使用Qt 4.6.2,那么这可能是一个问题,因为它是一个非常错误的版本:QScrollArea有时滞后,甚至QTimer也不能提供事件,而鼠标指针不在应用程序窗口上方。您可以尝试下载更新的版本。

相关问题