2011-09-04 38 views
0

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

编辑: 我拖动的对象被我自己创建的函数拖动,而不是拖动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从未输入。

回答

2

你需要让使用setAcceptDrops(true)丢弃事件,然后实现这些事件来执行一些代码的其他控件拖动或跌落时,静止物体接受:

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