У меня в настоящее время есть иерархия объектов, базирующихся прочь QGraphicsItem.
Я хочу переместиться в QGraphicsObject вместо этого так, чтобы я мог поместить свойства на свои объекты. Я не буду использовать сигналы/слоты или любые другие функции QObject.
Мне говорят, что Вы не должны происходить из QObject, потому что это "тяжело" и "медленно".
Для тестирования влияния я происхожу из QGraphicsObject, добавляю пару свойств к моим объектам и смотрю на использование памяти запущенного приложения. Я создаю 1 000 объектов с помощью обеих разновидностей, и я не замечаю что-то большее чем 10k больше использования памяти.
Так как все, что я прибавляю к своим объектам, является свойствами, действительно ли безопасно сказать, что QObject только добавляет вес при использовании сигналов/слотов?
Я думаю, это зависит от того, что вы имеете в виду под весом. Если вас не беспокоит ни дополнительная память, ни все дополнительные методы и вещи, которые поставляются с QObject
, которые в вашем случае звучат как багаж, то да.
Но если все, что вам нужно, это способ сохранить некоторую дополнительную информацию, почему бы не создать подкласс QGraphicsItem и добавить один или два метода, которые позволят вам хранить необходимые данные? Поступая таким образом, я думаю, вы лучше сообщите намерение своего кода, что кажется более важным, чем все вышеперечисленное.
Как насчет производительности? QGraphicsObject требует дополнительных затрат при вызове setX / setY и так далее. Вы можете перейти к QGraphicsItemPrivate :: setPosHelper и найти более подробную информацию.