私はTextItem
継承していQGraphicsTextItem
ます。ダブルクリックでテキストを編集でき、クリックアウトするとテキストが編集できなくなるようにしました。
void TextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent * event)
{
setTextInteractionFlags(Qt::TextEditorInteraction);
setFocus();
int p = document()->documentLayout()->hitTest(event->pos(), Qt::FuzzyHit);
QTextCursor _cursor = textCursor();
_cursor.setPosition(p);
setTextCursor(_cursor);
}
void TextItem::focusOutEvent(QFocusEvent *event)
{
Q_UNUSED(event);
setTextInteractionFlags(Qt::NoTextInteraction);
}
クリックアウトすると、テキストは編集できなくなりますが、キャレットは引き続き表示されます。
を追加setCursor(Qt::OpenHandCursor);
するとfocusOutEvent
(そして、設定するカーソルの形状を覚えようとしている可能性があります...まだ方法はわかりません)、これを修正します-キャレットが消えます-しかし、それは正しい修正だとは思いません。
QTextCursor
それでも、編集モードでなくなったときにキャレットを非表示にする方法が見つかりません-そして、設定がそれNoTextInteraction
を行うべきだったようです...
編集モードでないときにキャレットを非表示にする最良の方法は何ですか?