如何使一个qwidget知道另一个qwidget在它上面



我在屏幕上有很多固定的qwidgets,我有很多其他的小部件可以在屏幕上拖拽。当将小部件拖放到固定小部件上时,固定小部件需要执行一些代码。我不明白静止的物体是如何知道它上面有一个小部件并且知道它是哪个小部件的。

编辑:我拖拽的对象被我自己创建的函数拖拽,而不是Qt拖拽函数。这就是我使用的

void Piece::mouseMoveEvent(QMouseEvent *event) 
{ 
     if(event->buttons() == Qt::LeftButton && turn == color) 
     { 
          x = event->globalX()-18;
          y = event->globalY()-18;
          move(x,y);
     }
}

使用此方法,dropEvent还能工作吗?我试着做一个,但是当我把小部件放在固定小部件的顶部时,dropEvent从未进入。

您需要使用setAcceptDrops(true)使静止对象接受拖放事件,然后实现这些事件,以便在拖放其他小部件时执行一些代码:

void dragMoveEvent(QDragMoveEvent* event);
void dragEnterEvent(QDragEnterEvent* event);
void dropEvent(QDropEvent* event);

最新更新