[Qt-interest] mouse and polygons
Mahendra G.R
mahendra at mahendragr.com
Wed Nov 17 10:25:20 CET 2010
Hi all,
anybody?, i just want to know how to contain the mouse pointer within the
polygon, or avoid seg fault when mouse pointer goes out of my polygon,
Regards,
On Fri, Nov 12, 2010 at 5:01 PM, Mahendra G.R <mahendra at mahendragr.com>wrote:
> Hello all,
>
> I have implemented drawing polygons in a scene using QpolygonF,
> QGraphicsPolygonItem and QgraphicsScene. When i click on the scene, i
> collect the points and create a polygon on the double click, until here its
> fine. When i move/drag the polygon it does move. But the problem is, i
> have a huge data set, and when i move the polygon with this dataset in the
> background, polygon moves slowly, and when the cursor goes out of the
> polygon, i get a segmentaion fault, how should i restrict cursor to be
> inside the polygon item or is there a better solution for this?
>
>
> My function :
>
>
> void CustomScene::addPolygons( QVector<QPointF> &points )
> {
>
> QPolygonF polygon1(points), polygon2;
> MyItem *item1;
> QPointF p1,p2,p3,p4;
>
> p1 = points.at(0);
> p2 = points.at(1);
> p3 = points.at(2);
> p4 = points.at(3);
>
> item1 = new MyItem;
> item1->setPen(QPen(Qt::red));
> item1->setPolygon(polygon1);
> item1->setAcceptDrops(true);
> item1->setFlag(QGraphicsPolygonItem::ItemIsMovable);
> item1->setFlag(QGraphicsPolygonItem::ItemSendsGeometryChanges);
>
>
> this->addItem(item1);
>
> points.clear();
> }
>
> void CustomScene::mousePressEvent ( QGraphicsSceneMouseEvent * event )
> {
>
>
>
> if (addPolygonFlag == true && event->button() == Qt::LeftButton)
> {
>
> points.append(event->scenePos());
>
> }
> else if (event->button() == Qt::RightButton)
> {
> QGraphicsPolygonItem *tempItem;
> tempItem = (QGraphicsPolygonItem*)this->itemAt(event->scenePos());
> removeItem(tempItem);
>
> }
> QGraphicsScene::mousePressEvent(event);
>
> }
> void CustomScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
> {
> addPolygons(points);
> addPolygonFlag = true;
> QGraphicsScene::mouseDoubleClickEvent(event);
>
> }
> void CustomScene::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
> {
>
> QTextStream out(stdout);
> MyItem *tempItem;
>
> tempItem = (MyItem*)this->itemAt(event->scenePos());
>
>
> if (tempItem == 0)
> {
> QGraphicsScene::mouseMoveEvent(event);
> return;
>
> }
>
> tempPoly = tempItem->polygon();
> //tempPoly1 = tempItem1->polygon();
>
> QPointF p1,p2,p3,p4;
> p1 = tempPoly.at(0);
> p1 = tempItem->mapToParent(p1);
> p2 = tempPoly.at(1);
> p2 = tempItem->mapToParent(p2);
> p3 = tempPoly.at(2);
> p3 = tempItem->mapToParent(p3);
> p4 = tempPoly.at(3);
> p4 = tempItem->mapToParent(p4);
>
> out <<"p1: "<<p1.x()<<" "<<p1.y()<<endl
> <<"p2 : "<<" "<<p2.x()<<" "<<p2.y()<<endl
> <<"p3 : "<<" "<<p3.x()<<" "<<p3.y()<<endl
> <<"p4 : "<<" "<<p4.x()<<" "<<p4.y()<<endl;
>
> QGraphicsScene::mouseMoveEvent(event);
>
>
> }
>
> --
> http://www.mahendragr.com
>
--
http://www.mahendragr.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20101117/b39f5260/attachment.html
More information about the Qt-interest-old
mailing list