qt 中,如何實(shí)現(xiàn)圖片展示及旋轉(zhuǎn)矩形操作
圖片加載
QPixmap pixmap("img2.png"); ? ? ?
?painter.drawPixmap(rect(), pixmap);
旋轉(zhuǎn)矩形繪制

3.實(shí)現(xiàn)鼠標(biāo)事件響應(yīng)
void mousePressEvent(QMouseEvent *event) override { ? ? ? ? ? if (event->button() == Qt::LeftButton && isPointInOuterCircle(event->pos())) { ? ? ? ? ? ? ? isRotating = true; ? ? ? ? ? ? ? prevPos = event->pos(); ? ? ? ? ? ? ? this->setCursor(Qt::CrossCursor); ? ? ? ? ? } ? ? ? }
? ? ? void mouseReleaseEvent(QMouseEvent *event) override { ? ? ? ? ? if (event->button() == Qt::LeftButton) { ? ? ? ? ? ? ? isRotating = false; ? ? ? ? ? ? ? this->setCursor(Qt::ArrowCursor); ? ? ? ? ? } ? ? ? }
? ? ? void mouseMoveEvent(QMouseEvent *event) override { ? ? ? ? ? if(isPointInOuterCircle(event->pos())) ? ? ? ? ? { ? ? ? ? ? ? ? this->setCursor(Qt::CrossCursor); ? ? ? ? ? } ? ? ? ? ? ?? ? ? ? ? if (isRotating) { ? ? ? ? ? ? ? QPoint delta = event->pos() - prevPos; ? ? ? ? ? ? ? angle += delta.x(); ? ? ? ? ? ? ? if (angle < 0) { ? ? ? ? ? ? ? ? ? angle += 360; ? ? ? ? ? ? ? } else if (angle >= 360) { ? ? ? ? ? ? ? ? ? //angle -= 360; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? prevPos = event->pos(); ? ? ? ? ? ? ? update(); ? ? ? ? ? } ? ? ? }
注意:① 構(gòu)造函數(shù)設(shè)置鼠標(biāo)跟蹤:this->setMouseTracking(true);
?????????? ② 設(shè)置光標(biāo)? this->setCursor(Qt::ArrowCursor);
?????????? ③ 計(jì)算角度

計(jì)算角度可能有問(wèn)題!