当前位置: 代码迷 >> QT开发 >> 请问一个触摸屏单击点坐标地图ToScene(地图View->point).toPoint()的有关问题
  详细解决方案

请问一个触摸屏单击点坐标地图ToScene(地图View->point).toPoint()的有关问题

热度:197   发布时间:2016-04-25 04:04:04.0
请教一个触摸屏单击点坐标mapToScene(mapView->point).toPoint()的问题
          我在触摸屏上点击一个点,然后希望把这点(A)和屏左上点(O)连接画一条线,但是画出来的这条线(OA)的A点和我点击的A点差距太大,请问为什么呀。


下面我把源码贴出来,这里使用了graphics。
1、首先是事件mousePressEvent的定义
void MyGraphicsView::mousePressEvent(QMouseEvent *qme)
{
    QGraphicsView::mousePressEvent(qme);
    qDebug()<<"mousePressEvent";
    point=this->cursor().pos();
    QTimer::singleShot(3000,this,SLOT(ShowMenu()));//3秒后判断鼠标位置是否与3秒前的一致
}

void MyGraphicsView::ShowMenu()
{
    QCursor cur = this->cursor();
    QPoint pp=cur.pos();

    if(qAbs(pp.x()-point.x())>5 || qAbs(pp.y()-point.y())>5)//位置偏移大于5的话,认为不一致
    {
        point=pp;
        return;
    }
    menu->exec(cur.pos());//否则显示menu,(menu = new QMenu(this);)menu会显示四个Menu->addAction, 点击一个,通过信号与槽,到下面这个函数
}

void Graphics::MenuLocationMap()
{
    
    quint32 x0, y0;

    x0=mapView->mapToScene(mapView->point).toPoint().x();
    y0=mapView->mapToScene(mapView->point).toPoint().y();

    for (int i = 0; i < 10; i++)
    {
            QGraphicsLineItem *newLine = mapScene->addLine(0, 0, x0 ,y0, QPen(Qt::magenta, 4));//画出左上点到这点
            if (newLine != NULL)
            {
                    newLine->update();
                    mapView->update();
                    mapScene->update();
                   // qDebug()<<"DrawLine success!";
                    break;
            }
            //qDebug()<<"DrawLine again!";
    }
 }

这是我手头的例程序,我现在怀疑MenuLocationMap函数里的x0,y0和mousePressEvent函数里的 QPoint pp=cur.pos()不一样,这中间隔了按Menu里选项的动作,但是和画出来的差别也很大。
下面是两幅截图
http://hi.csdn.net/space-7288074-do-album-picid-814095.html  这个上面鼠标的位置  但是menu出来时没法截图,只能看鼠标的位置
http://hi.csdn.net/space-7288074-do-album-picid-814095-goto-down.html  这幅和上幅比多了的那条线就是OA线,但是明显A点明显跑飞了。
大家帮我看看  怎么解决阿

------解决方案--------------------
该回复于2011-10-27 17:06:19被版主删除

------解决方案--------------------
该回复于2011-10-27 17:06:30被版主删除
  相关解决方案