1. 程式人生 > >Qt drag(拖動圖片)時如何設定圖片某個位置與滑鼠繫結在一起移動

Qt drag(拖動圖片)時如何設定圖片某個位置與滑鼠繫結在一起移動

if ((event->pos() - startPos).manhattanLength() < QApplication::startDragDistance())
return;
QListWidgetItem *item = currentItem();
QMimeData *mimeData = new QMimeData;


mimeData->setImageData(item->icon());
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);

QPixmap pixmap(QSize(128, 128));
QIcon qI(item->icon());
pixmap = qI.pixmap(QSize(128, 128));
drag->setPixmap(pixmap);//設定拖動顯示的圖片
drag->setHotSpot(QPoint(64, 64));//讓圖片中心點隨滑鼠移動

drag->exec(Qt::MoveAction); //, Qt::MoveAction

drag->setHotSpot();是設定熱點,圖片大小是128*128時,如果需要讓圖片中心點隨滑鼠移動,就需要設定成drag->setHotSpot(QPoint(64, 64));如果需要圖片左上頂點跟隨滑鼠移動,就需要設定成drag->setHotSpot(QPoint(0, 0));