Организация элементов в QGraphicsScene

Это хорошая практика для хранения графических элементов сцены в списках?
я знаю это QGraphicsItem имеет виртуальный метод int type() и вы можете динамически находить предметы по типу. Итак, я имею в виду, что я хочу хранить свои графические элементы в стеке в отдельных списках.

class Scene : public QGraphicsScene
{
public:
// Constructors etc.
private:
// Store graphic items in lists by value
QList<Carrot> m_carrots;
QList<Apple> m_apples;
};

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

delete item;
item = nullptr;

И я хочу управлять элементами, просто используя, скажем, m_apples.removeAt(index).
Проблема в том, что я пока не знаю, к чему это может привести, так как проект довольно большой, поэтому эти изменения могут повлиять на другие части кода и занять много времени. Но я думаю, что это может помочь в управлении памятью более безопасным способом.
заранее спасибо

0

Решение

Если вы храните элементы по значению, вы должны рассматривать их как значения и позволить контейнеру управлять памятью. Явный delete на таком предмете есть баг. Классы элементов Qt не копируются, поэтому вы можете:

  1. Сделайте производные классы копируемыми как QList должен скопировать.

  2. использование std::list поскольку это не должно копировать.

  3. Используйте вектор уникальных указателей, например, std::vector<std::unique_ptr>,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]