21 #include <QGraphicsOpacityEffect>
22 #include <QMouseEvent>
29 setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
33 resize(minimumSize());
55 float changeX = newBoundary.width() /
static_cast<float>(
boundaryRect.width());
56 float changeY = newBoundary.height() /
static_cast<float>(
boundaryRect.height());
73 actualPos = QPointF(percentageX * (newBoundary.width() - width()),
74 percentageY * (newBoundary.height() - height()));
75 actualPos += QPointF(newBoundary.topLeft());
91 resize(width(), width() /
ratio);
102 if (event->buttons() & Qt::LeftButton) {
113 QPoint moveTo = pos() - (
lastPoint -
event->globalPos());
121 if (!(event->buttons() & Qt::LeftButton)) {
132 if (event->x() > width() - 6)
137 if (event->y() > height() - 6)
149 if ((
mode & ResizeUpRight) == ResizeUpRight || (
mode & ResizeDownLeft) == ResizeDownLeft)
150 setCursor(Qt::SizeBDiagCursor);
151 else if ((
mode & ResizeUpLeft) == ResizeUpLeft || (
mode & ResizeDownRight) == ResizeDownRight)
152 setCursor(Qt::SizeFDiagCursor);
154 setCursor(Qt::SizeHorCursor);
156 setCursor(Qt::SizeVerCursor);
158 if (event->buttons() & Qt::LeftButton) {
159 QPoint lastPosition = pos();
160 QPoint displacement =
lastPoint -
event->globalPos();
161 QSize lastSize = size();
165 lastSize.setHeight(height() + displacement.y());
167 if (lastSize.height() > maximumHeight())
168 lastPosition.setY(y() - displacement.y()
169 + (lastSize.height() - maximumHeight()));
171 lastPosition.setY(y() - displacement.y());
175 lastSize.setWidth(width() + displacement.x());
176 if (lastSize.width() > maximumWidth())
177 lastPosition.setX(x() - displacement.x() + (lastSize.width() - maximumWidth()));
179 lastPosition.setX(x() - displacement.x());
183 lastSize.setWidth(width() - displacement.x());
186 lastSize.setHeight(height() - displacement.y());
188 if (lastSize.height() > maximumHeight())
189 lastSize.setHeight(maximumHeight());
191 if (lastSize.width() > maximumWidth())
192 lastSize.setWidth(maximumWidth());
196 int height = lastSize.width() /
getRatio();
199 lastPosition.setY(lastPosition.y() - (height - lastSize.height()));
201 resize(lastSize.width(), height);
203 if (lastSize.width() < minimumWidth())
204 lastPosition.setX(pos().x());
206 if (height < minimumHeight())
207 lastPosition.setY(pos().y());
209 resize(lastSize.width(), lastSize.width() /
getRatio());
212 resize(lastSize.height() *
getRatio(), lastSize.height());
233 if (!(event->buttons() & Qt::LeftButton))
239 if (!(event->buttons() & Qt::LeftButton))
242 if (!graphicsEffect()) {
243 QGraphicsOpacityEffect* opacityEffect =
new QGraphicsOpacityEffect(
this);
244 opacityEffect->setOpacity(0.5);
245 setGraphicsEffect(opacityEffect);
247 setGraphicsEffect(
nullptr);