x 축을 통해서만 객체를 움직이는 데 문제가 있습니다. 나는 기능이 QVariant itemChange (GraphicsItemChange change, const QVariant & value)
인 무언가에 당신이 필요하다는 것을 안다. 다음과 같은 것을 발견했습니다 :QGraphicsItem은 X 축을 통해서만 객체를 이동합니다.
QVariant CircleItem::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange)
return QPointF(pos().x(), value.toPointF().y());
return QGraphicsItem::itemChange(change, value);
}
그러나 작동하지 않습니다. 나는 Qt는 새로운, 그래서 난 내 GraphicsItem이 thing.Here의 코드를 변경하는 방법을 알고하지 않습니다 응답에 대한
#include "circleitem.h"
CircleItem::CircleItem()
{
RectItem = new RoundRectItem();
MousePressed = false;
setFlag(ItemIsMovable);
}
void CircleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if(MousePressed)
{
painter->setBrush(QBrush(QColor(0, 0, 255)));
painter->setPen(QPen(QColor(0, 0, 255)));
}
else
{
painter->setBrush(QBrush(QColor(255, 255, 255)));
painter->setPen(QPen(QColor(255, 255, 255)));
}
painter->drawEllipse(boundingRect().center(), boundingRect().height()/4 - 7, boundingRect().height()/4 - 7);
}
QRectF CircleItem::boundingRect() const
{
return RectItem->boundingRect();
}
void CircleItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
MousePressed = true;
update(QRectF().x(), boundingRect().y(), boundingRect().width(), boundingRect().height());
QGraphicsItem::mousePressEvent(event);
}
void CircleItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
MousePressed = false;
update(QRectF().x(), boundingRect().y(), boundingRect().width(), boundingRect().height());
QGraphicsItem::mouseReleaseEvent(event);
}
QVariant CircleItem::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange)
return QPointF(pos().x(), value.toPointF().y());
return QGraphicsItem::itemChange(change, value);
}
감사합니다.
들으 응답을 위해, 그것은 일 (그냥 난 너무 어지러워) 대기 어떤 시간에 대답 할 몇 가지 질문 :) –