Наказание за использование QGraphicsObject против QGraphicsItem? - PullRequest
5 голосов
/ 18 февраля 2010

В настоящее время у меня есть иерархия элементов, основанная на QGraphicsItem.

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

Мне сказали, что вы не должны наследовать QObject, потому что он "тяжелый" и "медленный".

Чтобы проверить влияние, я извлекаю из QGraphicsObject, добавляю пару свойств к моим элементам и смотрю на использование памяти работающим приложением. Я создаю 1000 предметов, используя оба вкуса, и я не замечаю ничего больше, чем использование памяти на 10 КБ больше.

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

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

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

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

0 голосов
/ 18 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...