예제 #1
0
void FrameShadowFactory::installShadows(QWidget* widget, StyleHelper& helper, bool flat) {
      removeShadows(widget);

      widget->installEventFilter(this);
      if (!flat) {
            installShadow( widget, helper, Left );
            installShadow( widget, helper, Right );
            }

      installShadow( widget, helper, Top, flat );
      installShadow( widget, helper, Bottom, flat );
      }
예제 #2
0
//____________________________________________________________________________________
bool MdiWindowShadowFactory::eventFilter( QObject* object, QEvent* event )
{

    switch( event->type() )
    {
    // TODO: possibly implement ZOrderChange event, to make sure that
    // the shadow is always painted on top
    case QEvent::ZOrderChange:
        updateShadowZOrder( object );
        break;

    case QEvent::Destroy:
        if( isRegistered( object ) )
        {
            _registeredWidgets.remove( object );
            removeShadow( object );
        }
        break;

    case QEvent::Hide:
        hideShadows( object );
        break;

    case QEvent::Show:
        installShadow( object );
        updateShadowGeometry( object );
        updateShadowZOrder( object );
        break;

    case QEvent::Move:
    case QEvent::Resize:
        updateShadowGeometry( object );
        break;

    default:
        break;
    }

    return QObject::eventFilter( object, event );

}