如何从Qt QGraphicsTextItem中删除选择图纸

时间:2012-11-02 18:58:31

标签: windows qt selection qgraphicsscene

我正在使用Windows XP上的QGraphicsScene开发Qt 4.8应用程序。 当用户双击QGraphicsTextItem时,我调用

textItem->setTextInteractionFlags(Qt::TextEditorInteraction);

在下次选择更改时,我致电

textItem->setTextInteractionFlags(Qt::NoTextInteraction);

这可以正常工作,但我发现无法删除编辑后剩余的背景颜色的反转。在下面的屏幕截图中,我首先双击第一个文本项并选择字符“2927”。然后我点击第二个测试项目并选择“est”。我发现没有办法摆脱第一个文本项中仍然倒置的“2927”(虽然它不再处于编辑模式)。

enter image description here

我也试着打电话:

    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 个答案:

答案 0 :(得分:4)

由于QGraphicsTextItem::textCursor()返回光标的副本,您必须将其设置回文本项才能使其生效。

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