本人是一个新手,最近在写一个纸牌类的游戏,现在遇到一个问题,就是我鼠标指定那一张纸牌,需要删除掉,并且还必须要用QGraphicsItem的删除方法,因为用delete的话,会出现内存处理错误,下面是我的纸牌类:
class Pixmap : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
public:
Pixmap()
{
setCursor(Qt::OpenHandCursor);
setAcceptedMouseButtons(Qt::LeftButton);
}
Pixmap(const QImage &filename,int &n): QObject(), QGraphicsPixmapItem(QPixmap::fromImage(filename))
{
setCacheMode(DeviceCoordinateCache);
pic = QImage(filename);
position = n;
}
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event)
{
setCursor(Qt::ClosedHandCursor);
}
void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QDrag *drag = new QDrag(event->widget());
QMimeData *mime = new QMimeData;
QImage image (pic);
mime->setImageData(image);
drag->setMimeData(mime);
drag->setHotSpot(QPoint(30,30));
drag->setPixmap(QPixmap::fromImage(image));
drag->exec()
}
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
setCursor(Qt::OpenHandCursor);
}
private:
QImage pic;
};
然后就是我的GraphicsScene
class GraphicsScene: public QGraphicsScene
{
Q_OBJECT
public:
GraphicsScene( qreal x, qreal y, qreal width, qreal height,QObject * parent = 0)
: QGraphicsScene (x, y, width, height, parent ){}
public slots:
void AcceptMouseDrop(Pixmap *p)
{
system("pause");
QList<QGraphicsItem*> listItem = this->items();
this->removeItem(//指定的位置);
listItem.removeAt(0);
}
};
现在遇到一个问题就是,我鼠标拖动的时候,不知道怎样把对应的牌的传递给GraphicsScene的那个槽,请问有大牛可以帮忙给个建议,或者给个解决方法吗??
紧急!!!!