QGraphicsSceneTextItem удалить старый текст

Что я хочу сделать, это удалить или обновить текстовое значение 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);
    }
}

1 ответ

Может быть, вам просто нужно удалить две строки из вашего кода:

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

Вы инициализируете текст в конструкторе класса? Если да, тогда предыдущий код будет в порядке, но если нет, вы можете использовать это:

if ( txt == nullptr )
{
    QString tx = mydiag->getname();
    txt = new QGraphicsSimpleTextItem;
    txt->setText(tx);
    // txt->setParentItem(this);
}
Другие вопросы по тегам