为什么我没有在QGLWidget中获取mousePressEvents?

时间:2010-04-07 17:26:04

标签: events qt4

我正试图在QGLWidget中捕捉鼠标按下事件。我试图使用鼠标的移动来移动立体窗口中的人造光标(“浮动”点)。我在自己的QGLWidget中重新实现了mousePressEvent,这里是.h和.cpp文件的相关部分:

.h文件

protected:

    void initializeGL();
    void paintGL();

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

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

1 个答案:

答案 0 :(得分:0)

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