2013-09-30 81 views
1

我正試圖捕獲控件中的鼠標釋放事件,確保鼠標先前在同一個控件中被按下。 mouseReleaseEvent已成功調用,但我不知道如何處理參數QMouseEvent以檢查鼠標位置是否位於窗口小部件中。我當前的代碼:如何檢查在控件上是否發生了鼠標釋放事件

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e) 
{ 
    if (_mouseClick) 
    { 
     _mouseClick = false; 
     emit mouseClick(_deviceInformation); 
    } 
} 

太感謝你了,

+0

只有在鼠標位於widget上的時候纔會觸發該事件。檢查它是多餘的。 – RedX

+0

不,即使我在另一個地方(如桌面)釋放鼠標,也會觸發它。 –

+0

看看[Qt - 確定絕對小部件和光標位置](http://stackoverflow.com/questions/4450595/qt-determine-absolute-widget-and-cursor-position) – RedX

回答

4

您需要檢查,如果鼠標釋放事件的局部位置是小部件內。我認爲沒有理由使用_mouseClick成員變量。只有當鼠標按在這個小部件上時纔會調用此方法。當您按下按鈕時,小部件開始跟蹤鼠標,並且它將收到釋放事件 - 無論鼠標放在何處。

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e) 
{ 
    if (rect().contains(e->localPos()->toPoint()) { 
     emit mouseClick(_deviceInformation); 
    } 
} 
相關問題