QGraphicsRectItem的信号itemChange不会在拖动时生成

时间:2015-07-08 11:30:00

标签: qt qt5 qgraphicsview qgraphicsitem qgraphicsscene

我制作了一个源自QGraphicsRectItem的自定义类。

<div id="wrapper">
    <div id="main" style="float:right;">articles listing</div>
    <div id="left-nav" style="float:left;">recent posts</div>
</div>

CPP档案

class CornerPoint : public QGraphicsRectItem
{
  public:
  CornerPoint(QPointF centre);

 enum { Type = UserType + 1 };

 int type() const{ return Type; }

QVariant itemChange(GraphicsItemChange change, const QVariant &value);

public slots:

void updatePosition(QPointF);

};

我已将这些对象选为可移动的。但是当我拖动它们时,我没有收到该矩形位置变化的信号。我收到的只是值为4( CornerPoint::CornerPoint(QPointF centre): QGraphicsRectItem(NULL) { setPos(55,22); setRect(0,0,99,99); } QVariant CornerPoint::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) { std::cout << "Change is" << change << std::endl; if( QGraphicsItem::ItemPositionChange == change && scene()) { std::cout << "New values " << value.toPointF().x() << value.toPointF().y() << std::endl; } return QGraphicsItem::itemChange(change, value); } )和14(ItemSelectedChange)的信号。

This post说我需要启用一些标志。但我无法找到任何人这样做的任何例子,使用这些标志会给出错误。

1 个答案:

答案 0 :(得分:0)

垃圾。

我只需要启用此标志:

setFlag(GraphicsItemFlag::ItemSendsGeometryChanges);