【发布时间】:2015-07-01 20:59:28
【问题描述】:
我想让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(我可能想要后者)。然后我再次双击,我可以输入添加或删除文本。
这是一种用户可能没有预料到的行为 - 我所做的任何事情似乎都无法改变它。
是我做错了什么,还是有什么需要补充的?
【问题讨论】:
标签: c++ qt text editing qgraphicstextitem