setPlainText在QGraphicsSimpleTextItem中调用focusOutEvent

时间:2014-04-16 06:44:20

标签: qt qgraphicsitem

我覆盖了QGraphicsTextItem中的focusOutEvent

void EditTextItem::focusOutEvent(QFocusEvent *event)
{
    setTextInteractionFlags(Qt::NoTextInteraction);
    emit lostFocus(this);
    QGraphicsTextItem::focusOutEvent(event);
}

当用户编辑文本项时,我将编辑后的文本保存到文件中。在用户编辑文本im调用以显示前一个文本之前 setPlainText(" Old Data") 它反过来调用了GraphicsTextItem和lostFocus()信号的focusOutEvent(),并且只将旧数据保存到文件中。

我想知道如何避免setPlainText调用focusOutEvent。

1 个答案:

答案 0 :(得分:1)

我不知道你是否可以避免它,但是你可以在之后调用bool-memberfalse之前引入设置为setPlainText的{​​{1}}。在true中,然后检查成员的状态。

我通常不喜欢这些东西,并认为它们有点肮脏,但通常只是一种简单,快速和可靠的方式。