我正试图在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
答案 0 :(得分:0)
如果您使用Qt 4.6.2,那么这可能是一个问题,因为它是一个非常错误的版本:QScrollArea有时会滞后,甚至QTimer也不会在鼠标指针未在应用程序窗口上时传递事件。您可以尝试下载更新版本。