PDA

View Full Version : Mouse press



User 23
20th February 2016, 09:36
I want to register when the mouse is pressed and released on a QTableWidget. There are signals only for pressed, not released. Therefore I use mousePressEvent and mouseReleaseEvent instead.

MyWidget.h

protected:
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent * event);

MyWidget.cpp

void MyWidget::mousePressEvent(QMouseEvent *event)
{
qDebug() << "Pressed";
}

void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << "Released";
}

It prints "Released" when the left, right or middle mouse button is released over the table. However, it prints "Pressed" only when the right or middle button is pressed.

What could be wrong? How can I register when the left button is pressed?

d_stranz
20th February 2016, 17:16
And what is "MyWidget"? Is it a widget derived from QTableWidget?

If MyWidget is derived from QTableWidget, it is possible that the base class event handler (QTableWidget::mousePressEvent()) is being called first and is eating the event.

You could verify this by adding an event filter to the class that creates your MyWidget instance, and installing it on the MyWidget instance. An event filter will receive all events for the widget it is installed on -before- they are sent to the widget for handling. See QObject::installEventFilter() if you don't know how event filters work. Be sure to return false from your event filter if you want the table widget to keep working.