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);