Russian Qt Forum

Qt => Общие вопросы => Тема начата: knyajich от Ноябрь 21, 2007, 00:24



Название: operator delete
Отправлено: knyajich от Ноябрь 21, 2007, 00:24
Вопрос от «новичка» в работе с библиотекой Qt.

Глядя стандартные примеры библиотеки, я удивился тому, что, хотя динамические объекты создаются сплошь и рядом, нигде никогда не происходит вызова delete для их удаления!

Например,

Qt\4.1.0\examples\mainwindows\menus\mainwindow.h
Содержит указатели,

    QAction *newAct;
    QAction *openAct;
    QAction *saveAct;
    QAction *printAct;
    QAction *exitAct;

Которые инициализированы в конструктере –

openAct = new QAction(tr("&Open..."), this);
saveAct = new QAction(tr("&Save"), this);
printAct = new QAction(tr("&Print..."), this);
exitAct = new QAction(tr("E&xit"), this);

логично было бы увидеть их удаление в деструкторе, но пример ничего подобного не содержит. И при этом, вроде бы, не происходит утечки памяти.
Правильно ли я понял, что динамически созданные Qt-шные объекты можно не удалять, они удалятся сами?

То есть, например я могу написать так –

QTableWidget* table = new  QTableWidget(this);
table->setColumnCount(10);
table->setRowCount(10);

for (int i = 1; i<10; i++)
  for (int j = 1; j<10; j++)
   {
QTableWidgetItem* item = new QTableWidgetItem(QString().setNum(i+j)));
table->setItem(i,j,item);
   }

И не волноваться об удалении table и сотни item-ов?





Название: Re: operator delete
Отправлено: QCasper от Ноябрь 21, 2007, 00:42
Вкратце - да, можете. А вообще прочитайте книжку и assistant на предмет QObject


Название: Re: operator delete
Отправлено: pastor от Ноябрь 21, 2007, 00:51
Объекты порождённые от QObject и имеющие parent можно не удалять явно. Эти объекты будут удалены, когда будет убит parent.


Название: Re: operator delete
Отправлено: ритт от Ноябрь 21, 2007, 01:37
есть ещё неявные родительско-дочерние связи (как, например, при добавлении кувиджетов, кулэоутов друг к другу)
однозначно - читать ассистант, прикреплённую ветку "Книги (статьи) по QT" и книги, названия которых встретятся в этой ветке :)


Название: Re: operator delete
Отправлено: knyajich от Ноябрь 21, 2007, 01:44
спасибо большое!
а хелп я читаю во всю, просто не все сходу в нем находится )))