系列文章目录
QGraphicsItem图元的简单使用(一)
QGraphicsItem图元拖动绘制(二)
QGraphicsItem图元旋转缩放和自定义图元(三)
前言
接上一篇,本章将讲解如何通过鼠标拖动图元进行缩放拉伸
一、演示效果

二、相关代码
需要先在打开图元接受鼠标悬浮事件的开关,构造函数中添加如下代码:
// 接收鼠标悬浮事件
this->setAcceptHoverEvents(true);
计算鼠标各个悬浮区域,鼠标悬浮时,显示不同的鼠标样式
void RectItem::UpdateHandlesArea()
{
QRectF rect = this->boundingRect();
m_handlesArea[Mouse_LeftTop] = QRectF(rect.left(), rect.top(), m_dHandleSize, m_dHandleSize); // 左上
m_handlesArea[Mouse_RightTop] = QRectF(rect.right() - m_dHandleSize, rect.top(), m_dHandleSize, m_dHandleSize); // 右上
m_handlesArea[Mouse_LeftBottom] = QRectF(rect.left(), rect.bottom() - m_dHandleSize, m_dHandleSize, m_dHandleSize); // 左下
m_handlesArea[Mouse_RightBottom] = QRectF(rect.right() - m_dHandleSize, rect.bottom() - m_dHandleSize, m_dHandleSize, m_dHandleSize); // 右下
m_handlesArea[Mouse_MiddleTop] = QRectF(rect.center().x() - m_dHandleSize / 2, rect.top(), m_dHandleSize, m_dHandleSize); // 中上
m_handlesArea[Mouse_MiddleBottom] = QRectF(rect.center().x() - m_dHandleSize / 2, rect.bottom() - m_dHandleSize, m_dHandleSize, m_dHandleSize);
m_handlesArea[Mouse_MiddleLeft] = QRectF(rect.left(), rect.center().y() - m_dHandleSize / 2, m_dHandleSize, m_dHandleSize); // 中左
m_handlesArea[Mouse_MiddleRight] =

本文介绍如何使用Qt中的QGraphicsItem实现图元的拖动缩放功能,包括设置鼠标样式、重写鼠标事件及缩放算法。
&spm=1001.2101.3001.5002&articleId=126303517&d=1&t=3&u=b9b7abfc4f2e46029923661c781e874d)
3232

被折叠的 条评论
为什么被折叠?



