当前位置: 代码迷 >> QT开发 >> QPolygonF有关问题
  详细解决方案

QPolygonF有关问题

热度:118   发布时间:2016-04-25 03:19:33.0
QPolygonF问题
程序想判断point是否在LT,RT,LB,RB这四个点所围成的区域里,说是用qpolygonf,这个程序哪里有问题啊?
QPointF p1=QPointF(-20,-20);
QPointF p2=QPointF(20,20);
QPointF *LT=new QPointF(p1.x(),p1.y()-2.5);
QPointF *RB=new QPointFp1.x(),p1.y()+2.5);
QPointF *RT=new QPointF(p2.x(),p2.y()-2.5);
QPointF *LB=new QPointF(p2.x(),p2.y()+2.5);
 QVector<QPointF> *vec=new QVector<QPointF>;
vec->append(*LT);
vec->append(*RB);
vec->append(*RT);
vec->append(*LB);
QPolygonF *poly=new QPolygonF(*vec);
 if (poly->containsPoint(point,Qt::OddEvenFill))
                 return 0; 
------解决方案--------------------
QPointF *RB=new QPointFp1.x(),p1.y()+2.5);

少个左括号
QPointF *LT=new QPointF(p1.x(),p1.y()-2.5);
QPointF *RB=new QPointFp1.x(),p1.y()+2.5);
QPointF *RT=new QPointF(p2.x(),p2.y()-2.5);
QPointF *LB=new QPointF(p2.x(),p2.y()+2.5);
 QVector<QPointF> *vec=new QVector<QPointF>;
vec->append(*LT);
vec->append(*RB);
vec->append(*RT);
vec->append(*LB);
QPolygonF *poly=new QPolygonF(*vec);

这么多new的对象,使用的时候还用的QVector<QPointF>,有什么意义?还有QPolygonF *poly=new QPolygonF(*vec),而且new的对象没有释放
------解决方案--------------------
引用:
刚才我改了。。实验之后找到了4个点(15,0),(15,30),(125,0),(125,30)
然后需要判断的点是(67,17)按道理来说,上面四个点是形成一个矩形,包含所判断的点,但是为什么判断说是不在呢?QPolygonF的containsPoint是这么用吗??

QPointF point(67,17);
QPointF LT(15,0);
QPointF LB(15,30);
QPointF RB(125,30);
QPointF RT(125,0);
QPolygonF poly;
poly.append(LT);
poly.append(LB);
poly.append(RB);
poly.append(RT);
if (poly.containsPoint(point,Qt::OddEvenFill))
return 0; 

我试了下可以,跟顺序有关
  相关解决方案