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;
  }
}
Beispiel #3
0
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;
}