• 7787阅读
  • 1回复

用QGraphicsView的centerOn实现地图拖动 (已解决) [复制链接]

上一主题 下一主题
离线nanguaemail
 
只看楼主 倒序阅读 楼主  发表于: 2010-05-23
我重新了mouseMoveEvent,因为希望没按下左键时可以随时显示鼠标所在的地图坐标,代码如下:

void MapWidget::mousePressEvent ( QMouseEvent * event )
{
      initialPos=event->pos();
      initialScenePos=this->mapToScene(400,375);//我的视窗是800*750,所以中间坐标是(400,375)
}


void MapWidget::mouseMoveEvent(QMouseEvent * event)
{
    if(event->buttons()==Qt::LeftButton)
    {
        QPoint endPoint = event->pos();
        
       this->centerOn(initialScenePos.x()+endPoint.x()-initialPos.x(),initialScenePos.y()+endPoint.y()-initialPos.y());
    }
    else
    {
    // view coordinate
    QPoint viewPoint = event->pos();
    viewCoord->setText(QString::number(viewPoint.x()) + ", " + QString::number(viewPoint.y()));
   }
}

我利用endPoint.x()-initialPos.x()获得坐标的前后差值,但现在问题时原始的center坐标我不知道要如果获得[/color,有没有那位前辈能指点下,  谢谢


ps:睡眠不足头脑就是比较钝..........其中initialScenePos,initialPos是在类中定义的QPointF和QPointF类对象
[ 此帖被nanguaemail在2010-05-23 17:05重新编辑 ]
离线nanguaemail
只看该作者 1楼 发表于: 2010-05-23
感觉今天好热闹..
快速回复
限100 字节
 
上一个 下一个