#qt #pyqt #qgraphicsitem
#qt #pyqt #qgraphicsitem
Вопрос:
Я масштабирую QGraphicsItem в некоторых частях моего pyqt-кода. В другом разделе моего кода, когда я вызываю self.rect.adjusted(0, 0, 0, 0), он возвращает размеры до преобразования. Мой вопрос в том, как я могу найти размеры после преобразования?
Ответ №1:
После преобразования можно запросить sceneBoundingRect () или вызвать boundingRegion (), который используется для большей точности, чем boundingRect (). Эта функция находится в QGraphicsItem. В QTAssistant вы можете прочитать больше об этом:
Ограничивающая область описывает грубый контур визуального содержимого элемента. Хотя вычислять это дорого, это также более точно, чем boundingRect(), и это может помочь избежать ненужного перерисовывания при обновлении элемента. Это особенно эффективно для тонких элементов (например, линий или простых полигонов). Вы можете настроить степень детализации для ограничивающей области, вызвав setBoundingRegionGranularity(). Степень детализации по умолчанию равна 0; при этом ограничивающая область элемента совпадает с его ограничивающей прямой. itemToDeviceTransform — это преобразование координат элемента в координаты устройства. Если вы хотите, чтобы эта функция возвращала QRegion в координатах сцены, вы можете передать sceneTransform() в качестве аргумента.