我在触摸屏上点击一个点,然后希望把这点(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点明显跑飞了。
大家帮我看看 怎么解决阿
------解决方案--------------------
------解决方案--------------------