1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "CTextItem.h"
- #include <QKeyEvent>
- #include <QGraphicsSceneMouseEvent>
- #include <QDebug>
- CTextItem::CTextItem(QGraphicsItem *parent) : CTextItem(QString(), parent) { }
- CTextItem::CTextItem(const QString &text, QGraphicsItem *parent) : QGraphicsTextItem(text, parent)
- {
- setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable);
- setTextInteractionFlags(Qt::TextEditorInteraction);
- }
- void CTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
- {
- if (event->button() == Qt::LeftButton) { //左键双击进入可编辑状态并打开焦点
- if (allowEdit()) {
- beginEditing();
- }
- QGraphicsTextItem::mouseDoubleClickEvent(event);
- }
- }
- void CTextItem::keyPressEvent(QKeyEvent *event)
- {
- switch (event->key()) {
- case Qt::Key_Return: {
- endEditing();
- emit sigTextChanged();
- }
- }
- QGraphicsTextItem::keyPressEvent(event);
- }
- void CTextItem::beginEditing()
- {
- setTextInteractionFlags(Qt::TextEditorInteraction);
- setFocus();
- }
- void CTextItem::endEditing()
- {
- setTextInteractionFlags(Qt::NoTextInteraction);
- setSelected(false);
- clearFocus();
- }
- bool CTextItem::isEditing() const
- {
- return (textInteractionFlags() & Qt::TextEditorInteraction) == Qt::TextEditorInteraction;
- }
- bool CTextItem::allowEdit() const
- {
- return m_allowEdit;
- }
- void CTextItem::setAllowEdit(bool a)
- {
- m_allowEdit = a;
- endEditing();
- }
|