我正在使用Windows XP上的QGraphicsScene开发Qt 4.8应用程序。 当用户双击QGraphicsTextItem时,我调用
textItem->setTextInteractionFlags(Qt::TextEditorInteraction);
在下次选择更改时,我致电
textItem->setTextInteractionFlags(Qt::NoTextInteraction);
这可以正常工作,但我发现无法删除编辑后剩余的背景颜色的反转。在下面的屏幕截图中,我首先双击第一个文本项并选择字符“2927”。然后我点击第二个测试项目并选择“est”。我发现没有办法摆脱第一个文本项中仍然倒置的“2927”(虽然它不再处于编辑模式)。
我也试着打电话:
textItem->textCursor().clearSelection();
textItem->update();
textItem->setTextInteractionFlags(Qt::NoTextInteraction);
textItem->clearFocus();
但他根本没有改变这种行为。
所以现在我找到了一个解决方法:
QString s = textItem->toPlainText();
textItem->setPlainText("");
textItem->setPlainText(s);
textItem->setTextInteractionFlags(Qt::NoTextInteraction);
我不喜欢这样,但它确实有效。
是否提供更清洁的解决方案?
答案 0 :(得分:4)
由于QGraphicsTextItem::textCursor()
返回光标的副本,您必须将其设置回文本项才能使其生效。
QTextCursor cursor(textItem->textCursor());
cursor.clearSelection();
textItem->setTextCursor(cursor);