Qt makes me question my sanity and existence. I don't know why code that works in one program that I wrote will not work in another program I wrote. The following code is identical in both programs. In P1 it works correctly by only allowing left clicks. In P2 it is exactly the same, except the left click code is does something different.
In P2 I have it checking the left click condition and do the code if it is true. Well, when I left or right click, it won't do the code. If I change the condition to check for a right click and return if true, then the left click works normally, but right click won't return. If I remove the conditions, both left and right click runs the code.
I am losing my mind because stupid stuff like this keeps happening all the time and I don't know why even though I do everything the same as the other programs that work (that I wrote).
Edit: It seems to ignore the if-check in the mouseRelease function and works correctly for mousePress and mouseMove.
P1 (this program works exactly how I want it to):
void GLWidget::mousePressEvent(QMouseEvent *event)
{
clickOn = event->pos();
clickOff = event->pos();
// right mouse button
if (event->buttons() & Qt::RightButton){
return;
}
// rest of left-click code here
}
/*************************************/
void GLWidget::mouseReleaseEvent(QMouseEvent *event)
{
clickOff = event->pos();
// right mouse button shouldn't do anything
if (event->buttons() & Qt::RightButton)
return;
// rest of left click code here
}
/*************************************/
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
clickOff = event->pos();
// do it only if left mouse button is down
if (event->buttons() & Qt::LeftButton) {
// left click code
updateGL();
} else if(event->buttons() & Qt::RightButton){
// right mouse button code
}
}
P2 (structured similar to P1, but doesn't work correctly):
void GLWidget::mousePressEvent(QMouseEvent *event)
{
clickOn = event->pos();
clickOff = event->pos();
// do it only if left mouse button is down
if (event->buttons() & Qt::LeftButton) {
// left click code
}
}
void GLWidget::mouseReleaseEvent(QMouseEvent *event)
{
clickOff = event->pos();
// do it only if left mouse button is down
if (event->buttons() & Qt::LeftButton) {
// left click code
}
}
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
clickOff = event->pos();
clickDiff = clickOff - clickOn;
// do it only if left mouse button is down
if (event->buttons() & Qt::LeftButton) {
// left click code
updateGL();
}
}