要實現左鍵點擊鼠標時圖片跟著鼠標移動,可以通過以下步驟來實現:1. 在QGraphicsView的構造函數中設置鼠標跟蹤屬性,以便能夠捕獲鼠標事件。```cpp
QGraphicsView::QGraphicsView(QWidget *parent) : QGraphicsView(parent)
{setMouseTracking(true);
}
```2. 在QGraphicsView中重寫鼠標按下、鼠標移動和鼠標釋放事件的處理函數。```cpp
void QGraphicsView::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {// 獲取點擊位置QPointF pos = mapToScene(event->pos());// 判斷是否點擊到圖片if (scene()->itemAt(pos, QTransform()) == imageItem) {// 記錄鼠標起始位置lastMousePos = pos;// 設置鼠標移動跟蹤setDragMode(QGraphicsView::ScrollHandDrag);}}QGraphicsView::mousePressEvent(event);
}void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
{if (dragMode() == QGraphicsView::ScrollHandDrag) {// 獲取鼠標位置QPointF pos = mapToScene(event->pos());// 計算鼠標移動距離QPointF delta = pos - lastMousePos;// 更新圖片位置imageItem->setPos(imageItem->pos() + delta);// 更新鼠標位置lastMousePos = pos;}QGraphicsView::mouseMoveEvent(event);
}void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {// 停止鼠標移動跟蹤setDragMode(QGraphicsView::NoDrag);}QGraphicsView::mouseReleaseEvent(event);
}
```3. 創建一個QGraphicsScene,并將QPixmap添加到場景中。```cpp
QGraphicsScene *scene = new QGraphicsScene(this);
QPixmap pixmap("image.png");
QGraphicsPixmapItem *imageItem = scene->addPixmap(pixmap);
```4. 創建一個QGraphicsView,并將QGraphicsScene設置給它。```cpp
QGraphicsView *view = new QGraphicsView(this);
view->setScene(scene);
```通過以上步驟,就可以實現左鍵點擊鼠標時圖片跟著鼠標移動的功能。