Некоторые части Qrect отсутствуют
Я пытаюсь переместить круг (мой класс наследует QGraphicsItem) с помощью QTimer в функции keyPressEvent. вот мой класс:
class Shape :public QGraphicsObject
{
Q_OBJECT
public:
Shape();
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
void keyPressEvent(QKeyEvent *event);
}
и boundingRect и paintfunction:
QRectF Shape::boundingRect() const
{
return QRectF(0,0,30,30);
}
void Shape::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF circle=boundingRect();
//painter->setClipRect( option->exposedRect );
QBrush brush(QColor(Qt::darkGreen));
painter->setPen(QColor(Qt::darkGreen));
painter->setBrush(brush);
painter->drawEllipse(circle);
}
и вот как работает таймер:
if(event->key()==Qt::Key_1){
if(!start){
timer->stop();
timer=NULL;
}
setScale(1);
timer=new QTimer(scene());
connect(timer,SIGNAL(timeout()),this,SLOT(moveRightLeft()));
timer->start(2);
start=false;
}
void Shape::moveRightLeft()
{
if(scene()->collidingItems(this).isEmpty()==true){//no collision
setPos(x()+dir,y());
}
else{
dir=-(dir);
setPos(x()+dir,y());
}
}
Проблема заключается в том, что когда клавиша нажимается через несколько секунд, некоторые части круга отсутствуют в зависимости от направления его перемещения. Даже prepareGeometryChange() и update() не работали. это форма круга во время движения, спасибо за вашу помощь!