每个节点(QGraphicsItem
是一个继承id
的类)都有自己的id
。当我点击该项时,我希望将inputDialog
传递给QInputDialog
(继承id
)。对于我点击的第一个项目,这很好。
不幸的是,我点击的每个其他项目都会显示被点击的第一个项目的id
。有趣的是,inputDialog
是私人会员,Node
不是input.exec()
的朋友。而且,当我摆脱void Node::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
qDebug() << id;
inputDialog input(id);
input.exec();
}
行时,一切都很好。怎么可能?
class Node : public QGraphicsItem
{
public:
Node(QPointF);
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
private:
static int key;
int id;
};
Node::Node(QPointF point):id(key){
setPos(point);
key++;
qDebug() << id;
}
int Node::key = 0;
inputDialog::inputDialog(int i, QWidget *parent) :
QInputDialog(parent), id(i)
{
}
其余代码很简单:
import sys
MB = 1024 * 1024
cache = ''
while sys.getsizeof(cache) <= 10 * MB:
cache = cache + "0"