bool imageCompareBase::eventFilter(QObject* watched, QEvent* event) { // make sure we setCur on an image click if (event->type() == QEvent::FocusIn) { if (watched == leftScroll_) { setCur(leftImage()); } else { setCur(rightImage()); } } else if (event->type() == QEvent::KeyPress) { QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); return filterKeyEvent(keyEvent); } else if (event->type() == QEvent::Wheel) { QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event); // shift scroll should give a horizontal scroll if (wheelEvent->modifiers() == Qt::ShiftModifier) { // must check both the scroll and its viewport if (watched == rightScroll_ || watched == rightScroll_->viewport()) { rightScroll_->horizontalScrollBar()->event(event); return true; } else if (watched == leftScroll_ || watched == leftScroll_->viewport()) { leftScroll_->horizontalScrollBar()->event(event); return true; } } } return imageSaverWindow::eventFilter(watched, event); }
void QtEventConsumer::handleKeyPressEvent ( QObject *obj, QEvent *event ) { // check the object QWidget *widget = isValidWidget(obj); if (!widget){ DEBUG(D_CONSUMER,"(QtEventConsumer::handleKeyPressEvent) No widget to handle"); return; } DEBUG(D_CONSUMER,"(QtEventConsumer::handleKeyPressEvent)"); QKeyEvent *keyEvent = dynamic_cast<QKeyEvent *> ( event ); //if it is a recognized key if ( filterKeyEvent ( static_cast<Qt::Key> ( keyEvent->key() ) ) ) { //create the event QOE::QOE_KeyPress qoe; qoe.timestamp(_timer.restart()); completeBasicData(qoe,widget); qoe.key(keyEvent->key()); qoe.text(keyEvent->text()); qoe.modifiers(keyEvent->modifiers()); ///sensitive value completeSensitiveData(qoe, widget); //send event if qoe is valid if (isValidQOE(qoe) && isValidQOEKey(qoe)) sendNewTestItem(qoe); } }
void sendKeyEventToFilter(unsigned gdkKeyValue, GdkEventType type, unsigned modifiers = 0) { GdkEvent* event = gdk_event_new(type); event->key.keyval = gdkKeyValue; event->key.state = modifiers; event->key.window = gtk_widget_get_window(m_testWindow); event->key.time = GDK_CURRENT_TIME; g_object_ref(event->key.window); gdk_event_set_device(event, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_display_get_default()))); GUniqueOutPtr<GdkKeymapKey> keys; gint nKeys; if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeyValue, &keys.outPtr(), &nKeys)) event->key.hardware_keycode = keys.get()[0].keycode; filterKeyEvent(&event->key); gdk_event_free(event); }