LINUX.ORG.RU

QGraphicsScene: размеры сцены вырастают сильно и скачкообразно...

 , , ,


0

1

Есть у меня, братцы, QGraphicsScene с несколькими объектами на ней. И когда я таскаю их мышкой, то при достижении левого края экрана сцена не просто увеличивается в размерах (что правильно), но увеличивается чертовски сильно (едва ли не вдвое) и скачкообразно (что не есть хорошо).

Вот небольшая демка (там надо перетащить один из квадратиков к левому краю экрана).


import sys

from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QGraphicsItem, QGraphicsTextItem, QGraphicsRectItem

if __name__ == "__main__":

    #########################################
    sys._excepthook = sys.excepthook
    def exception_hook(exctype, value, traceback):
        sys._excepthook(exctype, value, traceback)
        sys.exit(1)
    sys.excepthook = exception_hook
    ##########################################



    app = QtWidgets.QApplication(sys.argv)

    view = QtWidgets.QGraphicsView()
    view.setRenderHint(QtGui.QPainter.Antialiasing)
    view.setMouseTracking(True)
    view.setDragMode(QtWidgets.QGraphicsView.RubberBandDrag)

    scene = QtWidgets.QGraphicsScene()

    rect_item = QGraphicsRectItem(-50, -50, 100, 100)
    rect_item.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable | QGraphicsItem.ItemIsMovable)
    scene.addItem(rect_item)


    rect_item2 = QGraphicsRectItem(-50, -50, 100, 100)
    rect_item2.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable | QGraphicsItem.ItemIsMovable)
    scene.addItem(rect_item2)

    rect_item2.setPos(-120, -120)

    view.setScene(scene)
    view.showMaximized()

    sys.exit(app.exec_())

Имею спросить: а как бы мне это забороть?



Последнее исправление: Yak (всего исправлений: 1)

Ответ на: комментарий от RazrFalcon

Мне нужно, чтобы поведение при таскании влево было таким же, как и при таскании вправо: чтобы размер сцены изменялся настолько, насколько QGraphicsItem вылез за её пределы.

Yak
() автор топика
Ответ на: комментарий от SuoiCat

Если задать размер сцены через setSceneRect, то сцена вообще не будет расширяться, если какой элемент выйдет за её границы.

Yak
() автор топика

Ты имеешь в виду максимальные координаты? Под размером сцены обычно имеют в виду количество объектов.

buddhist ★★★★★
()
Ответ на: комментарий от buddhist

Да, геометрические размеры сцены.

Yak
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.