Qt:Обнаружение двойного щелчка с помощью клавиши Modkey (Shift, CTRL и т.д.)

StackOverflow https://stackoverflow.com/questions/2252335

Вопрос

Как я могу определить, произошел ли двойной щелчок по QWidget (в моем случае QStatusBar), когда была нажата клавиша-модификатор?

Я могу перегружать void QWidget::mouseDoubleClickEvent ( QMouseEvent * event ) чтобы получить двойной щелчок, но как я могу убедиться, получает ли виджет ключевые события, когда он может не иметь фокуса?

Это было полезно?

Решение

Я нашел ответ:

QMouseEvent является производным от QInputEvent и у этого есть метод, называемый modifiers():

Из Документация Qt:

Возвращает флаги модификатора клавиатуры, которые существовали непосредственно перед тем, как произошло событие.

Другие советы

Если у вас есть СЛОТ для вашего события или сигнала (Мыши), вы можете протестировать модификаторы там:

Qt::KeyboardModifiers modifiers  = QApplication::queryKeyboardModifiers ();
if(modifiers.testFlag( Qt::ControlModifier )){
  qDebug() << "CTRL was hold when this function was called";
}
else{
  qDebug() << "CTRL wasn't hold";
}

//SHIFT    = Qt::ShiftModifier
//CTRL     = Qt::ControlModifier
//ALT      = Qt::AltModifier 

Просто чтобы добавить больше информации в вашем QWidget вам нужно только переопределить этот метод

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top