功能保留状态

时间:2015-09-27 10:28:50

标签: c++ qt

每个节点(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"

0 个答案:

没有答案