0

我在屏幕上有很多固定的 qwidget,我还有很多其他的小部件可以在屏幕上拖动。当一个小部件被拖到固定小部件之上时,固定小部件需要执行一些代码。我无法弄清楚静止对象如何知道它上面有一个小部件并知道它是哪个小部件。

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

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 从未输入过。

4

1 回答 1

2

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

void dragMoveEvent(QDragMoveEvent* event);
void dragEnterEvent(QDragEnterEvent* event);
void dropEvent(QDropEvent* event);
于 2011-09-05T03:18:21.283 回答