Я хочу сделать QGraphicsTextItem
доступным для редактирования с двойным щелчком и сделать его подвижным, когда я выхожу.Редактирование QGraphicsTextItem требует выполнения действия дважды
#include <QApplication>
#include <QPainter>
#include <QGraphicsItem>
#include <QGraphicsView>
class TextItem: public QGraphicsTextItem
{
public:
TextItem()
{
setPlainText("hello world");
QFont f;
f.setPointSize(50);
f.setBold(true);
f.setFamily("Helvetica");
setFont(f);
setFlags(QGraphicsItem::ItemIsMovable |
QGraphicsItem::ItemIsFocusable |
QGraphicsItem::ItemIsSelectable);
setTextInteractionFlags(Qt::NoTextInteraction);
}
virtual void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
QWidget* widget = NULL)
{
QGraphicsTextItem::paint(painter, option, widget);
}
protected:
virtual void focusOutEvent (QFocusEvent * event)
{
Q_UNUSED(event);
setTextInteractionFlags(Qt::NoTextInteraction);
}
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * event)
{
Q_UNUSED(event);
setTextInteractionFlags(Qt::TextEditable); // TextEditorInteraction
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TextItem* t = new TextItem();
QGraphicsView view(new QGraphicsScene(-200, -150, 400, 300));
view.scene()->addItem(t);
view.show();
return a.exec();
}
Он делает то, что я хочу - за исключением того, что я должен дважды щелкнуть дважды
- первый раз, когда я дважды щёлкаем, я вижу курсор, но не могу редактировать текст (либо с опцией, TextEditable
или TextEditorInteraction
(I ., вероятно, хотите, последний) Тогда я дважды щелкните еще раз, и я могу ввести, чтобы добавить или удалить текст
это поведение, которое пользователь, вероятно, не ожидал -.. и ничего я, кажется, чтобы изменить его
Я что-то не так, или есть что-нибудь, что мне нужно добавить?