我正在开发一个使用QGraphicsScene的Qt 4.8应用程序,运行在Windows XP平台上。当用户双击QGraphicsTextItem时,我调用以下代码:
在下一次选择更改时,我调用
这样做是正确的,但我找不到方法来删除编辑后保留的背景颜色反转。在下面的截图中,我首先双击第一个文本项,选定字符“2927”。然后我单击第二个测试项目并选择“est”。我发现没有办法摆脱仍然反转的“2927”(尽管它不再处于编辑模式)。
我还尝试调用:
但这并不改变行为。 所以现在我找到了一个解决办法:
我不喜欢这样,但它有效。有没有更简洁的解决方案?
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);
我不喜欢这样,但它有效。有没有更简洁的解决方案?
clearSelection()
的代码实际上被执行,但如果你的解决方法有效,我猜其他代码可能已经被正确调用了。也许我会在这边尝试一下实验。 - Arnold Spence