2010-04-07 24 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也不能提供事件,而鼠標指針不在應用程序窗口上方。您可以嘗試下載更新的版本。

相關問題