Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2708357
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2011-08-14 21:13:08

  个人在看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相关的代码,这里只是抛砖引玉提示一下。


阅读(4265) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~