删除旧的文本



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

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);
    }
}

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

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);
}

相关内容

  • 没有找到相关文章

最新更新