2013-08-02 34 views
0

我被覆蓋QGraphicsScene和重載2方法:mouseDoubleClickEventmouseReleaseEvent。我希望在每個事件上執行不同的邏輯,但我不知道如何區分它?至少有1 mouseReleaseEvent發生在mouseDoubleClickEvent之前。如何在QGraphicsScene上區分mouseReleaseEvent和mousedoubleClickEvent

+0

可能重複[在Qt中區分單擊和雙擊事件](http://stackoverflow.com/questions/4627347/distinguish-between-single-and-double-click-events-in-qt) –

回答

1

對於雙擊時想要出現的邏輯,將代碼放在mouseDoubleClickEvent()之內,並將代碼放在鼠標釋放時想要發生的邏輯上,將代碼放入mouseReleaseEvent()

如果您希望在用戶點擊但不雙擊時執行某些操作,則必須等待以查看它們是否點擊了兩次。在第一次鼠標釋放時,啓動一個200ms定時器。

如果您在計時器到期前得到mouseDoubleClickEvent(),那麼這是雙擊,您可以執行雙擊邏輯。如果計時器到期之前,你得到另一個mouseDoubleClick()然後你知道這是一個單一的點擊。

main() 
{ 
    connect(timer, SIGNAL(timeout()), this, SLOT(singleClick())); 
} 

mouseReleaseEvent() 
{ 
    timer->start(); 
} 

mouseDoubleClickEvent() 
{ 
    timer->stop(); 
} 

singleClick() 
{ 
    // Do single click behavior 
} 

This答案給出了一個相當類似的解決方案。

+0

I我只使用mouseReleaseEvent是因爲一個原因 - 沒有事件mouseClickEvent。我希望在單擊和其他方面執行一些邏輯 - 雙擊。所以我不能使用你的解決方案 - 它已經實施並且不夠用。 –

+0

您應該使用該信息更新您的問題。 –