LINUX.ORG.RU

Qt: убить главный Widget ?


0

0

main.cpp:

#include <QApplication>
#include «MainWidget.h»

int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(application);
QApplication app(argc, argv);
MainWidget * mw = new MainWidget();
mw->show();
return app.exec();
}

Где (как) убить mw, т.е. сделать delete mw; ?


Ответ на: комментарий от drZlo

это атрибут виджета, соответственно он делает так чтобы при закрытии виджет удалялся.

Gorthauer ★★★★★ ()
Ответ на: комментарий от staseg

Это главный wilget, который порождает все остальные. Значит, чтоб убить всех, нужно начать с главного. Так я понимаю ? Или как-то по другому делается ? Т.е. :

MainWidget::~MainWidget() {
delete DerivedW1;
}

DerivedW1::~DerivedW1() {
delete DerivedW2;
}

и т.д. Прально ?

drZlo ()
Ответ на: комментарий от drZlo

Окно удалит все дочерние окна, которому оно указано как родитель, поэтому лишних телодвижений не требуется. В вашем случае проще всего было бы сделать:

int main(int argc, char *argv[])
{
  Q_INIT_RESOURCE(application);
  QApplication app(argc, argv);
  MainWidget mw;
  mw.show();
  return app.exec();
}
Dendy ★★★★★ ()
Ответ на: комментарий от Dendy

Окна то понятно. Но вот не гуишные объекты, но которые пораждаются MainWidget'ом, не уничтожаются, а только из ~MainWidget.

drZlo ()
Ответ на: комментарий от drZlo

Порождайте эти обьекты от QObject и ставьте родителем окна в иерархии MainWindow. Храните обьекты по значениям или в контейнерах. Храните указатели в auto ptr. Или вручную удаляйте указатели в соответствующих деструкторах.

Dendy ★★★★★ ()
Ответ на: комментарий от drZlo

Но вот не гуишные объекты, но которые пораждаются MainWidget'ом, не уничтожаются, а только из ~MainWidget.


When you create a QObject with another object as parent, the object will automatically add itself to the parent's children() list. The parent takes ownership of the object; i.e., it will automatically delete its children in its destructor.

UVV ★★★★★ ()
Ответ на: комментарий от drZlo

>Но вот не гуишные объекты, но которые пораждаются MainWidget'ом, не уничтожаются, а только из ~MainWidget.
так сложно написать delete blah_blah_blah; ??
если так, страшно подумать, сколько у вас глюков в программе... :(

xydo ★★ ()

объявляйте перед майном. а потом extern

если просто хотите выйти QAppliction::exit().

guilder ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.