程序想判断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的对象没有释放
------解决方案--------------------
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;
我试了下可以,跟顺序有关