关于QGraphicsView中的对象移动问题. z

117 篇文章 1 订阅

转自:http://blog.chinaunix.net/uid-2384984-id-2183162.html

  个人在看qwt 中的svgmap样例时,放大缩小的位置的源代码查到在哪里出现,但关于移动却找了一阵,不知道它的源代码在哪里出现,从跟踪情况来看,在void QwtMagnifier::widgetMouseMoveEvent( QMouseEvent *mouseEvent )中没有执行(或效果)。

  后来查看了QT自带样例:imageviewer,感觉与Scroll相关,由于需要显示,与View相关,暂时就不看GraphicsScence了.
在void QGraphicsView::mouseMoveEvent(QMouseEvent *event)中,经跟踪发现与下面带码有关:
 if (d->dragMode == QGraphicsView::ScrollHandDrag) {
        if (d->handScrolling) {
             QScrollBar *hBar = horizontalScrollBar();
            QScrollBar *vBar = verticalScrollBar();
            QPoint delta = event->pos() - d->lastMouseEvent.pos();
            hBar->setValue(hBar->value() + (isRightToLeft() ? delta.x() : -delta.x()));
            vBar->setValue(vBar->value() - delta.y());

            // Detect how much we've scrolled to disambiguate scrolling from
            // clicking.
            ++d->handScrollMotions;
        }
    }
     d->mouseMoveEventHandler(event);
}
在红色代码处下断点,用Mouse拖动GraphicsView中的内容时,会在红色断下来,然后把光标移到蓝色处,跳过与QScrollBar相关的代码,看看GraphicsView中的显示的内容位置变化了吗?没有,应该还保留在原来的位置。QScrollBar或其相关类如何控制与它关联的类的位置,细节还要看Scroll相关的代码,这里只是抛砖引玉提示一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值