Qt drag(拖動圖片)時如何設定圖片某個位置與滑鼠繫結在一起移動
阿新 • • 發佈:2019-01-24
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));//讓圖片中心點隨滑鼠移動
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));