У меня проблемы в PySide при попытке определить, какая кнопка мыши нажата в функции события. Он мне нужен, в частности, для игнорирования события перемещения мыши, потому что он выполняет работу с обеими кнопками мыши — левой и правой.
Я хочу игнорировать событие перемещения мыши, если нажата правая кнопка на сцене. Любая помощь?
Все события мыши имеют два метода (button
а также buttons
) определить, какая из кнопок нажата. Но только для move
событие документация говорит:
Обратите внимание, что возвращаемое значение всегда Qt :: NoButton для событий перемещения мыши.
за mouseMoveEvent
ты должен использовать buttons
метод.
void mouseMoveEvent(QMouseEvent *e)
{
if(e->buttons() == Qt::RightButton)
qDebug() << "Only right button";
}
Чтобы игнорировать события перемещения, вам нужно выполнить эту работу в eventFilter
конечно.
QApplication::mouseButtons()
вернет статус mouseButton
,
Таким образом, вы можете получить статус мыши в KeyPressEvent
,
Вы можете использовать логическое значение:
void mousePressEvent(QMouseEvent *event)
{
if (event->button()==Qt::RightButton){
qDebug() << "right button is pressed
pressed=true; //<-----
}
}
и на mouseMoveEvent
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
float dx = event->x() - lastPos.x(); // where lastpos is a QPoint member
float dy = event->y() - lastPos.y();
if (dx<0) dx=-dx;
if (dy<0) dy=-dy;
if (event->buttons() & Qt::LeftButton) { //if you have MOVEd
...do something
}
if (event->buttons() & Qt::RightButton) {
if (pressed==true) return;
else{
...do
}
}
}
При отпускании мыши вы должны установить нажатие = ложь; («нажат» должен быть членом класса)
Надеюсь, это поможет, дайте мне знать
Вы можете проверить, какая кнопка мыши нажата с помощью Qt::RightButton
, Извините за код C ++, но я надеюсь, вы все равно поймете идею:
void mousePressEvent(QMouseEvent *event)
{
if (event->button()==Qt::RightButton){
qDebug() << "right button is pressed
}
}