关于qt中的拖放操作,首先可以看这篇官方文档:http://doc.qt.io/qt-5.5/dnd.html
一、QDrag
首先是创建QDrag,可以在mousePressEvent或者mouseMoveEvent中创建。
void DragDropWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
QDrag *drag = new QDrag(this);
QMimeData *data = new QMimeData;
drag->setMimeData(data);
drag->exec(Qt::MoveAction);
}
}
或者
void DragDropWidget::mousePressEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton)
{
startPos = event->pos();
}
}
void DragDropWidget::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton)
{
if ((event->pos() - startPos).manhattanLength() >= QApplication::startDragDistance())
{
QDrag *drag = new QDrag(this);