【问题标题】:setPlainText calling focusOutEvent in QGraphicsSimpleTextItemsetPlainText 在 QGraphicsSimpleTextItem 中调用 focusOutEvent
【发布时间】:2014-04-16 14:53:49
【问题描述】:

我重写了 QGraphicsTextItem 中的 focusOutEvent

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

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

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

【问题讨论】:

标签: qt qgraphicsitem


【解决方案1】:

我不知道你是否可以避免它,但你可以在调用setPlainTexttrue 之前引入一个设置为falsebool-member。然后在您的focusOutEvent 中检查成员的状态。

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

【讨论】:

  • 好吧,我终于用布尔函数做到了。但我仍然觉得这不是正确的做法。
  • 我同意。如果您找到更好的解决方案,我很高兴听到它,我将来也可以使用它
猜你喜欢
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2013-07-10
相关资源
最近更新 更多