1
後,我的派生類從QQuickPaintedItem
中,我要處理的mousePressEvent
和mouseReleasEvent
(以及mouseMoveEvent
但現在不是我prolem)。QQuickPaintedItem mouseReleaseEvent被稱爲唯一的DoubleClick
每次按下鼠標左鍵時都會正確調用mousePressEvent
。但mouseReleaseEvent
只能在雙擊後才能調用。我期望的是每次釋放按鈕時都能獲得該事件。我該如何改變這一點?
這是我做的:
MyView::MyView(QQuickItem *parent):
QQuickPaintedItem(parent)
{
setAcceptedMouseButtons(Qt::LeftButton);
}
void MyView::mousePressEvent(QMouseEvent *evt)
{
//gets called after every single mouse click
qDebug("mousePressEvent");
if(evt->button() == Qt::LeftButton)
{
//do something...
evt->accept();
}
else
{
evt->ignore();
}
QQuickPaintedItem::mousePressEvent(evt);
}
void MyView::mouseReleaseEvent(QMouseEvent *evt)
{
//gets only called when releasing the mouse button after a double click
qDebug("mouseReleaseEvent");
if(evt->button() == Qt::LeftButton)
{
//do something...
evt->accept();
}
else
{
evt->ignore();
}
QQuickPaintedItem::mouseReleaseEvent(evt);
}
完美,謝謝!文檔是否明確表示不要在某處執行此操作?爲了完整性,我通常總是調用基類實現。 – Andrew
不,不幸的不是。我也總是調用基礎實現。除非你真的知道你爲什麼要忽略它,否則通常應該這樣做。但這意味着你也知道你的基類會發生什麼。我認爲這是不好的風格。 但通常我也會在覆蓋的方法之上執行此操作。而現在,當我再次看到它時,我不記得爲什麼我把它放在最後。最重要的是它不應該受到傷害(但我不知道在忽略調用中發生了什麼「魔術」)。我不再和Qt一起工作,所以我可能會在家裏檢查。 – Andi