Все сделал. суть в том что, есть итем(QGraphicsItem) который рисует полигон с катринкой генератора, есть класс generator, который создаетьбся вместе с этим итемом, итем добавляеться на сцену. Уэтого итема можно вызвать контекстное меню, его вызов прописан в классе итема (класс переписан мной), есть 2 значения меню "Удалить" и "Изменить параметры", так вот при удалени у еня итем просто убирался со сцены (removeItem(item)), а память выделенная под класс итема и класс генератора не освобождалась!Т.е. при добавлении других устройств на сцену занимаемая память становилась все больше и больше, а при удалении не освобождалась, поэтому утекала.
Нужно было сделать так что бы где удалялся родитель этих 2х классов, но проблема была в том то где сделать удаление родителя! потому что сама реализация контекстного меню была описанаа в классе генератора, т.е. при нажатии на итем на сцене шла обработка нажатия в классе итем, и вызывалось меню собранное в классе генератора, т.е. при удалении генератора нужно было сделать деилт родителя, но из класса генератора или из класса итема нельзя удалить родителя, потому что при удалении он удаляет своих "сыновей" (как Вы мне сказали, я это проверил), а это значит при удалении родителя допустим из класса генератора родитель удалит ЭТОТ класс генератора и выполнение программы не будет знать куда возвращаться после команды делит родителя, ибо указатель на класс в которой вызывался делит уже освобожден.
Об этом говорит вот это строка:
inline T *data() const
{
return d;
}
Решил эту проблему через запуск потока в начале программы, который следит за удалением родителя этих 2х классов, того объекта который удаляют со сцены.
Спасибо, за помощь!