Штраф использования QGraphicsObject по сравнению с QGraphicsItem?

У меня в настоящее время есть иерархия объектов, базирующихся прочь QGraphicsItem.

Я хочу переместиться в QGraphicsObject вместо этого так, чтобы я мог поместить свойства на свои объекты. Я не буду использовать сигналы/слоты или любые другие функции QObject.

Мне говорят, что Вы не должны происходить из QObject, потому что это "тяжело" и "медленно".

Для тестирования влияния я происхожу из QGraphicsObject, добавляю пару свойств к моим объектам и смотрю на использование памяти запущенного приложения. Я создаю 1 000 объектов с помощью обеих разновидностей, и я не замечаю что-то большее чем 10k больше использования памяти.

Так как все, что я прибавляю к своим объектам, является свойствами, действительно ли безопасно сказать, что QObject только добавляет вес при использовании сигналов/слотов?

6
задан Dutch 18 February 2010 в 20:46
поделиться

2 ответа

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

Но если все, что вам нужно, это способ сохранить некоторую дополнительную информацию, почему бы не создать подкласс QGraphicsItem и добавить один или два метода, которые позволят вам хранить необходимые данные? Поступая таким образом, я думаю, вы лучше сообщите намерение своего кода, что кажется более важным, чем все вышеперечисленное.

3
ответ дан 17 December 2019 в 18:15
поделиться

Как насчет производительности? QGraphicsObject требует дополнительных затрат при вызове setX / setY и так далее. Вы можете перейти к QGraphicsItemPrivate :: setPosHelper и найти более подробную информацию.

0
ответ дан 17 December 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: