изменение размера, перемещение и поворот QWidget во время работы программы

У меня есть QWidget и мне нужно изменять его размер, перемещать и поворачивать по форме (как в Фотошоп или QtDesigner).

Это всё должно быть во время работы приложения.

Помогите пожалуйста и нет я не Фотошоп делаю.

Вот мой код перемещения, но вот изменение размера и поворот я не где в Google не нашёл: '''

def mousePressEvent(self, event):
    self.__mousePressPos = None
    self.__mouseMovePos = None
    if event.button() == Qt.LeftButton:
        self.__mousePressPos = event.globalPos()
        self.__mouseMovePos = event.globalPos()
    super(DragButton, self).mousePressEvent(event)

def mouseMoveEvent(self, event):
    if event.buttons() == Qt.LeftButton:
        # adjust offset from clicked point to origin of widget
        currPos = self.mapToGlobal(self.pos())
        globalPos = event.globalPos()
        diff = globalPos - self.__mouseMovePos
        newPos = self.mapFromGlobal(currPos + diff)
        self.move(newPos)
        self.__mouseMovePos = globalPos
    super(DragButton, self).mouseMoveEvent(event)

def mouseReleaseEvent(self, event):
    if self.__mousePressPos is not None:
        moved = event.globalPos() - self.__mousePressPos 
        if moved.manhattanLength() > 3:
            event.ignore()
            return
    super(DragButton, self).mouseReleaseEvent(event)

'''


Ответы (1 шт):

Автор решения: Alexander Chernin

Вот небольшой пример использования QGraphicsProxyWidget, может быть это ваш случай

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGraphicsScene, QGraphicsView

if __name__=='__main__':
  app = QApplication(sys.argv)

  scene = QGraphicsScene()
  view = QGraphicsView(scene)
  view.setGeometry(100, 100, 400, 200)
  view.show()

  widget = QWidget() # << Ваш виджет
  proxy = scene.addWidget(widget)

  // Модифицируем виджет, используя его прокси
  // Масштаб
  proxy.setScale(2.0)
  // Вращение
  proxy.setRotation(30)

  sys.exit(app.exec_())

В документации есть такое предупреждение:

Using an OpenGL viewport limits the ability to use QGraphicsProxyWidget . Not all combinations of widgets and styles can be supported with such a setup. You should carefully test your UI and make the necessary adjustments.

→ Ссылка