qt - 实际上当dragEnterEvent,dragLeaveEvent和gragMoveEvent被激活?

时间:2010-06-20 16:45:50

标签: qt

在我的程序中,我覆盖了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);
}
}
*/

2 个答案:

答案 0 :(得分:3)

对我来说问题是你没有接受掉落。 我不确定QGraphicsScene()是否接受了drop,但你应该在构造函数中执行它。 因此,将调用setAcceptDrops(true)dragEnterEvent处理程序。

答案 1 :(得分:0)

从Qt 4.5.3文档,

QDragEnterEvent类提供了一个事件,当拖放操作进入时,该事件会发送到窗口小部件。有关QDragEnterEvent here

的更多信息