为QgraphicsTextItem调用复制粘贴

时间:2014-11-20 06:02:50

标签: qt

如何为QgraphicsTextItem调用剪切,复制粘贴槽。虽然文本编辑器有剪切,复制和粘贴的默认插槽,但我不知道如何调用它们。

我有一个继承自QgraphicsTextItem的类。使用此类是在GraphicsView中添加文本。现在我想要它的剪切,粘贴和复制功能。我该怎么做呢?

drawText.h

#include <QGraphicsTextItem>
#include <QPen>

QT_BEGIN_NAMESPACE
class QFocusEvent;
class QGraphicsItem;
class QGraphicsScene;
class QGraphicsSceneMouseEvent;
QT_END_NAMESPACE

class mText : public QGraphicsTextItem
{
    Q_OBJECT
public:
    mText( int, QGraphicsItem *parent=0 );
    enum { Type = UserType + 5 };
    int type() const;
    int id;

signals:
    void lostFocus(mText *item);
    void selectedChange(QGraphicsItem *item);


protected:
    QVariant itemChange(GraphicsItemChange change, const QVariant &value);
    void focusOutEvent(QFocusEvent *event);
    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);

};

的.cpp

#include "mtext.h"

mText::mText( int i, QGraphicsItem *parent)
    : QGraphicsTextItem(parent )
{
    //assigns id
    id = i;
}

int mText::type() const
{
    // Enable the use of qgraphicsitem_cast with text item.
    return Type;
}

QVariant mText::itemChange(GraphicsItemChange change,
                                 const QVariant &value)
{
    if (change == QGraphicsItem::ItemSelectedHasChanged)
        emit selectedChange(this);
    return value;
}

void mText::focusOutEvent(QFocusEvent *event)
{
    setTextInteractionFlags(Qt::NoTextInteraction);
    emit lostFocus(this);
    QGraphicsTextItem::focusOutEvent(event);
}

void mText::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
    if (textInteractionFlags() == Qt::NoTextInteraction)
        setTextInteractionFlags(Qt::TextEditorInteraction);

    QGraphicsTextItem::mouseDoubleClickEvent(event);
}

0 个答案:

没有答案