Я хочу добавить сигналы/слоты в QGraphicsItem, чтобы я мог достичь QGraphicsItemObjects из другого потока. Есть два варианта, о которых я знаю: используйте QGraphicsObject или наследуйте от QObject и QGraphicsItem.
Использование QGraphicsObject
Это считается медленным. Согласно этот ответ на stackoverflow QGraphicsObjects медленны из-за их реализации. Когда я смотрю в источнике QGraphicsObjects, я вижу много сигналов, излучаемых в соответствии с изменениями, внесенными в объект. Для меня это кажется правдоподобным аргументом в пользу того, почему QGraphicsObjects являются медленными, но я думаю, что этот удар производительности (если это действительно один) можно избежать вторым решением.
Унаследовано от QObject и QGraphicsItem.
При построении класса, который наследуется от QObject и QGraphicsItem, кажется, что вы получаете самую интересную функцию QGraphicsObject за вычетом производительности: вы можете определить слоты и испускать сигналы в своем классе, но вы не наследуете реализацию по умолчанию QGraphicsObject, который будет постоянно излучать сигналы об изменениях, которые могут вас не интересовать. Теперь вы можете излучать сигналы, но не должны беспокоиться о том, что сигналы испускаются для вещей, которые вам не нужны (значение x, которое изменяется, испускает сигнал в QGraphicsObject, но не в этом решении).
Резюме моего вопроса
- Являются ли QGraphicsObjects более медленными, чем QGraphicsItems?
- Если это так, это потому, что реализация испускает сигналы (и излучающие сигналы являются большой успех)?
- И если это так, делает ли второе решение (множественное наследование) это наказание?