bool ToolBarEventFilter::eventFilter (QObject *watched, QEvent *event) { if (watched != m_toolBar) return QObject::eventFilter (watched, event); switch (event->type()) { case QEvent::ChildAdded: { // Children should not interact with the mouse const QChildEvent *ce = static_cast<const QChildEvent *>(event); if (QWidget *w = qobject_cast<QWidget *>(ce->child())) { w->setAttribute(Qt::WA_TransparentForMouseEvents, true); w->setFocusPolicy(Qt::NoFocus); } } break; case QEvent::ContextMenu: return handleContextMenuEvent(static_cast<QContextMenuEvent*>(event)); case QEvent::DragEnter: case QEvent::DragMove: return handleDragEnterMoveEvent(static_cast<QDragMoveEvent *>(event)); case QEvent::DragLeave: return handleDragLeaveEvent(static_cast<QDragLeaveEvent *>(event)); case QEvent::Drop: return handleDropEvent(static_cast<QDropEvent *>(event)); case QEvent::MouseButtonPress: return handleMousePressEvent(static_cast<QMouseEvent*>(event)); case QEvent::MouseButtonRelease: return handleMouseReleaseEvent(static_cast<QMouseEvent*>(event)); case QEvent::MouseMove: return handleMouseMoveEvent(static_cast<QMouseEvent*>(event)); default: break; } return QObject::eventFilter (watched, event); }
void NcWidgetData::handleWidgetEvent( QEvent* event ) { switch ( event->type() ) { default: //qDebug() << "Event = " << event; break; case QEvent::MouseButtonPress: handleMousePressEvent( static_cast<QMouseEvent*>( event ) ); break; case QEvent::MouseButtonRelease: handleMouseReleaseEvent( static_cast<QMouseEvent*>( event ) ); break; case QEvent::MouseMove: handleMouseMoveEvent( static_cast<QMouseEvent*>( event ) ); break; case QEvent::Leave: handleLeaveEvent( event ); break; //Bug fix, hover event is necessary coz child widget does not //propagate mousemove events. so the cursor remains in edge shape //even in middle of widget. case QEvent::HoverMove: handleHoverMoveEvent( static_cast<QHoverEvent*>( event ) ); break; //case QEvent::Enter: //qDebug() << "Enter event";//d->handleEnterEvent( event ); //break; } }
void VMdEditor::mousePressEvent(QMouseEvent *p_event) { if (handleMousePressEvent(p_event)) { return; } VTextEdit::mousePressEvent(p_event); emit m_object->mousePressed(p_event); }
/// /// event filter method /// bool QtEventConsumer::eventFilter ( QObject *obj, QEvent *event ) { /// /// process control /// //if process is stoped... if (f_recording_ == false) { //no event handling DEBUG(D_CONSUMER,"(QtEventConsumer::eventFilter) Stop state. No event handled."); return false; } //if process is paused... else if (f_recording_ && f_paused_) { //filter all events and //block the application DEBUG(D_CONSUMER,"(QtEventConsumer::eventFilter) Pause state. Events blocked."); return true; } //no widget or event provided else if (obj == NULL || event == NULL) { DEBUG(D_CONSUMER,"(QtEventConsumer::eventFilter) No widget or event provided."); return false; } //object is not a widget or window /*else if (!obj->isWidgetType()) { DEBUG(D_CONSUMER,"(QtEventConsumer::eventFilter) Object is not a widget."); return false; }*/ //if process is recording... else { //apply the filter... } //DEBUG(D_CONSUMER,"(QtEventConsumer::eventFilter) Type = " // + QString::number(event->type()).toStdString()); /// ///filter depending on the type.. /// //window events if (event->type() == QEvent::KeyPress) { handleKeyPressEvent(obj, event); } //mouse events else if (event->type() == QEvent::MouseButtonPress) { handleMousePressEvent(obj, event); } else if (event->type() == QEvent::MouseButtonRelease) { handleMouseReleaseEvent(obj, event); } else if (event->type() == QEvent::MouseButtonDblClick) { handleMouseDoubleEvent(obj, event); } else if (event->type() == QEvent::Wheel) { handleWheelEvent(obj, event); } //keyboard events else if (event->type() == QEvent::Close) { handleCloseEvent(obj, event); } ///the event should continue to reach its goal... return false; }