Название: 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 спасибо большое!
а хелп я читаю во всю, просто не все сходу в нем находится ))) |