qt - на самом деле, когда dragEnterEvent, dragLeaveEvent и gragMoveEvent активированы? - PullRequest
1 голос
/ 20 июня 2010

В моей программе я переопределяю 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 ]

3 голосов
/ 26 января 2011

Для меня проблема в том, что вы не приняли капли. Я не уверен, что QGraphicsScene() принимает капли, но вы должны сделать это в своем конструкторе. Поэтому вызовем обработчик setAcceptDrops(true) и dragEnterEvent.

0 голосов
/ 20 июня 2010

Из документации Qt 4.5.3,

Класс QDragEnterEvent предоставляет событие, которое отправляется виджету при поступлении в него действия перетаскивания. Подробнее о QDragEnterEvent здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...