首先,来看效果图:
drag演示
drop演示
1、drag效果实现
我这里是对QListWidget的扩充,当然你可以使用其他Widget,实现方法类似,都要重新实现一下mousePressEvent和mouseMoveEvent两个函数,beginPos的作用在后面会提到。
class DragListWidget
:
public QListWidget
{
Q_OBJECT
public :
explicit DragListWidget ( QWidget * parent = 0 );
protected :
void mousePressEvent ( QMouseEvent * event );
void mouseMoveEvent ( QMouseEvent * e );
private :
QPoint beginPos ;
};
{
Q_OBJECT
public :
explicit DragListWidget ( QWidget * parent = 0 );
protected :
void mousePressEvent ( QMouseEvent * event );
void mouseMoveEvent ( QMouseEvent * e );
private :
QPoint beginPos ;
};
首先在构造函数中启用drag。
DragListWidget
:
: DragListWidget ( QWidget
* parent )
:
QListWidget ( parent )
{
setDragEnabled ( true );
}
QListWidget ( parent )
{
setDragEnabled ( true );
}
在mousePressEvent事件处理函数中,判断是否是左键拖动,如果是,保存一下事件发生的位置。
void DragListWidget
: