QWT zoomer加上具有连续重绘的panner

时间:2013-02-07 09:42:59

标签: plot zoom pan qwt

我有一些QWT做一些小测试程序的经验,但现在我需要做一些专业的。

我有一个情节,我需要进行缩放和平移。我安装了一个效果很好并且添加了一个平移器的变焦镜,但是当我平移缩放区域时,重新绘制在平移结束时工作正常,但是在移动过程中我只是从最后一个重新绘制的图像中移动并在侧面移动我有空白的图像。无论如何,我可以让它在移动时显示连续更新的图像(类似于护目镜地图)?我意识到谷歌地图只是一个jpg图像,所以它不一样,但如果我能做到这一点,它看起来会更清晰。感谢。

1 个答案:

答案 0 :(得分:1)

这可能有用......

class CustomPanner: public QwtPlotPanner
{

public:
    explicit CustomPanner(QWidget* parent) : QwtPlotPanner(parent){}

virtual bool eventFilter( QObject * object, QEvent * event)
{
    if ( object == NULL || object != parentWidget() )
            return false;

    switch ( event->type() )
    {
        case QEvent::MouseButtonPress:
        {
            widgetMousePressEvent( static_cast<QMouseEvent *>( event ) );
            break;
        }
        case QEvent::MouseMove:
        {
            QMouseEvent * evr = static_cast<QMouseEvent *>( event );
            widgetMouseMoveEvent( evr );
            widgetMouseReleaseEvent( evr  );
            setMouseButton(evr->button(), evr->modifiers());
            widgetMousePressEvent( evr);
            break;
        }
        case QEvent::MouseButtonRelease:
        {
            QMouseEvent * evr = static_cast<QMouseEvent *>( event );
            widgetMouseReleaseEvent( static_cast<QMouseEvent *>( event ) );
            break;
            grab();
        }
        case QEvent::KeyPress:
        {
            widgetKeyPressEvent( static_cast<QKeyEvent *>( event ) );
            break;
        }
        case QEvent::KeyRelease:
        {
            widgetKeyReleaseEvent( static_cast<QKeyEvent *>( event ) );
            break;
        }
        case QEvent::Paint:
        {
            if ( isVisible() )
                return true;
            break;
        }
        default:;
    }

    return false;
   }
};

现在使用tihs而不是PlotPanner