0

我想要做的是删除或更新QGraphicsSimpleTextItem我添加到的文本值QGraphicsItem,但由于某种原因,文本不会更新,但它会累积在创建的项目中。这就是我现在所做的:

void DiagramItem::mouseDoubleClickEvent( QGraphicsSceneMouseEvent* event )
{
    if (event->button() != Qt::LeftButton)
    {
        return;
    }

    Dialog *mydiag = new Dialog();
    mydiag->show();
    if(mydiag->exec())
    {
        QString tx = mydiag->getname();
        txt = new QGraphicsSimpleTextItem;
        txt->setText(tx);
        txt->setParentItem(this);
    }
}
4

1 回答 1

0

也许您只需要从代码中删除两行:

QString tx = mydiag->getname();
// txt = new QGraphicsSimpleTextItem;
txt->setText(tx);
// txt->setParentItem(this);

所以你不会一直创建新项目。

但在此之后,您可以再删除一行:

// QString tx = mydiag->getname();
// txt = new QGraphicsSimpleTextItem;
txt->setText( mydiag->getname() );
// txt->setParentItem(this);

你在类构造函数中初始化 txt 吗?如果是,那么前面的代码就可以了,但如果你不这样做,你可能想要使用这个:

if ( txt == nullptr )
{
    QString tx = mydiag->getname();
    txt = new QGraphicsSimpleTextItem;
    txt->setText(tx);
    // txt->setParentItem(this);
}
于 2015-06-06T14:18:36.597 回答