图形编辑必备功能,剪贴板。
Qt本身提供 QClipboard 对象,它使用也很方便,有轮子就不用自己造轮子,不说废话,我们需要利用QMimeData对象来存储我们的图形元素,所以我们要声明一个QMimeData的派生类。
class ShapeMimeData : public QMimeData
{
Q_OBJECT
public:
ShapeMimeData( QList<QGraphicsItem * > items);
~ShapeMimeData();
QList<QGraphicsItem *> items() const ;
private:
QList<QGraphicsItem * > m_items;
};
这里面包含一个存储对象的列表,这样我们就可以拷贝多个对象了。看看怎么用吧。
首先我们需要在主窗口创建几个slot
void on_copy();
void on_paste();
void on_cut();
//没找到如何判断剪贴板中有数据存在的方法,变通的方法就是只要剪贴板数据有变化就认为它可以做粘贴操作。
void dataChanged();
连接信号槽
connect(copyAction,SIGNAL(triggered()),this,SLOT(on_copy));
connect(pasteAction,SIGNAL(triggered()),this,SLOT(on_paste));
connect(cutAction,SIGNAL(triggered()),th