QWT zoomer plus panner 连续重绘

Posted

技术标签:

【中文标题】QWT zoomer plus panner 连续重绘【英文标题】:QWT zoomer plus panner with continuous replot 【发布时间】:2013-02-07 09:42:58 【问题描述】:

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

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

【问题讨论】:

【参考方案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

【讨论】:

效果很好。当然,我必须根据我的情况调整代码。他们应该将这样的设置设为 qwt 的默认设置。它是在计算机速度慢得多的日子里设计的。它仍然是一个很棒的代码库,但我们现在可以节省 CPU 以便更好地重绘。

以上是关于QWT zoomer plus panner 连续重绘的主要内容,如果未能解决你的问题,请参考以下文章

Windows环境下QWT安装及配置

HDU - 1024 Max Sum Plus Plus 滚动数组优化

HDU - 1024 Max Sum Plus Plus(dp+滚动数组优化)

Qwt: 编译 · 安装

Qt 之 qwt 和 qwtpolar

Qwt开发笔记:Qwt简介下载以及基础demo工程模板