如何从Qt QGraphicsTextItem中移除选择框?

3
我正在开发一个使用QGraphicsScene的Qt 4.8应用程序,运行在Windows XP平台上。当用户双击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);

我不喜欢这样,但它有效。有没有更简洁的解决方案?
1个回答

5

QGraphicsTextItem::textCursor()返回光标的副本,您需要将其设置回文本项才能产生任何效果。

QTextCursor cursor(textItem->textCursor());
cursor.clearSelection();
textItem->setTextCursor(cursor);

抱歉,我错过了!奇怪的是它不起作用。我本来想建议确保调用 clearSelection() 的代码实际上被执行,但如果你的解决方法有效,我猜其他代码可能已经被正确调用了。也许我会在这边尝试一下实验。 - Arnold Spence

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接