Любая причина, по которой QGraphicsItem.setRotation может пойти не так?

[МИНИМИЗИРОВАННЫЙ код предоставлен для примера и вопрос ОТРЕДАКТИРОВАН]

Я подписался здесь, чтобы задать, казалось бы, простой вопрос (см. заголовок и более подробное описание ниже), но он возник в результате часов отслеживания ошибок вплоть до обычно самого безвредного метода и нескольких минут трепета, задающихся вопросом, что может быть технически происходит.

Контекст

Две пары QGraphicsView+Scene в разных окнах и простая иерархия QGraphicsItem.

Проблема

Приложение зависает на любом setRotation, указанном в примере.

Минимальный набор файлов помещается в ветку "debug" Репозитории Git, чтобы вы могли загрузить моментальный снимок и столкнуться с проблемой. [Серьезные усилия по сокращению :-p "173 файла изменены, 356 вставок(+), 2763256 удалений(-)"]

Примечания

  • Если вы закомментируете обе строки setRotation (66 и 95, помеченные «#FIXME») в модуле GUI.graphics.contact, вы получите работающую программу, в которой вы можете без проблем перемещаться по сцене и панорамировать ее.
  • Зависание также исчезает, если вы закомментируете создание нового окна (строка 17 в GUI.main).
  • Нет зависания, если элементы находятся вне поля зрения.

Пытался решить

  • Перемещение setRotation за пределы метода рисования и настройка из parentItem, но все равно зависает, поэтому не проблема вызова из метода рисования.
  • QMutexing setRotations ничего не изменил (в отчаянии вы пытаетесь делать забавные вещи!)

Вопрос

Конечно, вы можете просто точно знать, что я должен делать с моей программой, но если нет, я хотел бы ответить на простой вопрос: при условии, что я набрал 'x' float и буду настолько изобретателен, насколько это возможно, что может сделать .setRotation (x) вызов, чтобы заморозить программу?

Спасибо тебе.


person Michael    schedule 06.08.2015    source источник
comment
Добро пожаловать в СО. Обратите внимание, что немногие люди, скорее всего, захотят скачать и просмотреть весь ваш проект, чтобы помочь вам. Я предлагаю вам прочитать Как задать хороший вопрос, в котором рекомендуется включить достаточно кода, чтобы другие могли воспроизведите проблему и Как создать минимальный, полный и проверяемый пример. Затем отредактируйте свой вопрос соответствующим образом.   -  person TheDarkKnight    schedule 06.08.2015
comment
Мне потребовалось так много времени, чтобы обвинить во всем наименее подозрительные методы, что в то время мне не хотелось этого делать. Я скорее надеялся получить ответ на простой вопрос, предоставив код только хардкорным тестерам. Но сегодня утром я набралась храбрости, и вот оно. Вы можете загрузить новый снимок, который на этот раз состоит всего из нескольких файлов. Спасибо.   -  person Michael    schedule 09.08.2015


Ответы (1)


Решено!

(Поскольку здесь не было обсуждения, а ответ пришел откуда-то еще, не лучше ли было бы удалить вопрос? В любом случае, он здесь, люди могут смотреть эту ветку.)

Ответ можно найти здесь.

person Michael    schedule 13.08.2015