在我的程序中,我覆盖了dragEnterEvent,但它从未调用过,所以我想知道它什么时候被调用?
更新
这里是代码
class RealBoard:public QGraphicsScene
{
public:
RealBoard();
void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
//void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
// void mousePressEvent(QGraphicsSceneMouseEvent *event);
};
RealBoard::RealBoard():QGraphicsScene()
{
setSceneRect(-10,-10,620,620);
}
void RealBoard::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
exit(0);
// addItem(temp);
}
void RealBoard::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
{
/*
QGraphicsScene::dragLeaveEvent(event);
tempCoin->setZValue(0);
delete temp;
temp=NULL;
*/
exit(0);
}
/*
void RealBoard::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsScene::mousePressEvent(event);
QPointF click=event->buttonDownScenePos(Qt::LeftButton);
if(itemAt(click)!=boardP)
{
itemAt(click)->setZValue(1);
tempCoin=dynamic_cast<QGraphicsPixmapItem *>(itemAt(click));
// exit(0);
temp=new QGraphicsPixmapItem((static_cast<QGraphicsPixmapItem *>(itemAt(click))->pixmap()));
temp->setPos(itemAt(click)->pos());
temp->setZValue(0);
addItem(temp);
update(temp->pos().x(),temp->pos().y(),75,75);
}
}
*/
答案 0 :(得分:3)
对我来说问题是你没有接受掉落。
我不确定QGraphicsScene()
是否接受了drop,但你应该在构造函数中执行它。
因此,将调用setAcceptDrops(true)
和dragEnterEvent
处理程序。
答案 1 :(得分:0)
从Qt 4.5.3文档,
QDragEnterEvent类提供了一个事件,当拖放操作进入时,该事件会发送到窗口小部件。有关QDragEnterEvent
here