我一直在用Qt中的圆圈进行物理模拟.到目前为止,我发现定义圆的最简单方法是制作一个QRect
对象,然后用该矩形绘制椭圆作为"蓝图".现在我遇到的问题是它画了一个圆圈,但是命中检测的命中框仍然是一个正方形,看起来很尴尬.到目前为止,我还没能找到解决方案,希望能在这里找到一些帮助.
QRectF Ball::boundingRect() const
{
return QRect(0,0,20,20);
}
void Ball::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
QBrush Brush(Qt::gray);
//basic Collision Detection
if(scene()->collidingItems(this).isEmpty())
{
//no collision
Brush.setColor(Qt::green);
}
else
{
//collision!!!!!
Brush.setColor(Qt::red);
//Set position
DoCollision();
}
//painter->fillEllipse(rec,Brush);
painter->drawEllipse(rec);
}
Run Code Online (Sandbox Code Playgroud)