Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: trot от Июня 01, 2011, 20:21



Название: Почему локальная переменная типа QWidget не удаляется
Отправлено: trot от Июня 01, 2011, 20:21
Создаю в методе локальную переменную типа QWidget (см. пример)
Код:
void myClass::myMethod(){
   QWidget widget1(this);
   // далее создаю форму
   ...
  widget1.show();
}
Окно создается и отображается на экране. Вопрос заключается в том, почему окно отображается, а не удаляется при выходе из метода? Локальные переменные должны удаляться при выходе из метода и соответственно окно тоже должно удалиться. Поясните почему окно не удаляется? Спасибо.


Название: Re: Почему локальная переменная типа QWidget не удаляется
Отправлено: Авварон от Июня 01, 2011, 20:44
хз. должна удаляться:)
приведи больше кода...


Название: Re: Почему локальная переменная типа QWidget не удаляется
Отправлено: trot от Июня 01, 2011, 21:16
Вот код.
Код:
	
void testWidget::myclick(){
QWidget widget1(this, Qt::CustomizeWindowHint | Qt::Dialog);
widget1.resize(600,800);
widget1.show();
QEventLoop eventLoop;
           eventLoop.exec(QEventLoop::DialogExec);
}



Название: Re: Почему локальная переменная типа QWidget не удаляется
Отправлено: Авварон от Июня 01, 2011, 21:40
потому что ты не выходишь из ф-ии


Название: Re: Почему локальная переменная типа QWidget не удаляется
Отправлено: LisandreL от Июня 01, 2011, 21:41
А вы никуда из метода и не выходите - так и крутитесь в eventLoop.exec(QEventLoop::DialogExec); .

Код
C++ (Qt)
void testWidget::myclick(){
QWidget widget1(this, Qt::CustomizeWindowHint | Qt::Dialog);
widget1.resize(600,800);
widget1.show();
QEventLoop eventLoop;
          eventLoop.exec(QEventLoop::DialogExec);
          qDebug( "We don't come there "); // до сюда не дойдём
}


Название: Re: Почему локальная переменная типа QWidget не удаляется
Отправлено: trot от Июня 01, 2011, 21:51
Понял. Спасибо.