crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Удаление виджета за ненадобностью.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
edwardoid Дата 15.6.2011, 22:51
 
Цитата(RazrFalcon @ 15.6.2011, 18:58) *
Какая ОС?
На лине это делает valgrind.

Приходится работать под Windows 7, а под Linux есть конечно gcc, gdb, gprof, valgrind...
RazrFalcon Дата 15.6.2011, 16:58
  Какая ОС?
На лине это делает valgrind.
edwardoid Дата 15.6.2011, 13:34
  Как посмотреть сколько места нимает каждый объект в RAM? Как проверить на прожорливость программу?

Как посмотреть сколько места нимает каждый объект в RAM? Как проверить на прожорливость программу?
Litkevich Yuriy Дата 15.6.2011, 6:06
  Деструктор вызовется при возвращении в цикл обработки событий, см. доку по QObject::deleteLater()
silver47 Дата 15.6.2011, 4:59
 
Цитата(Litkevich Yuriy @ 14.6.2011, 19:08) *
Это почему?


Не знаю. Пробовал делать так, деструктор не вызывался сразу после закрытия окна. А вот если поставить флаг удалять виджет сразу после закрытия - то деструктор вызывается сразу же после закрытия. В общем, по итогам: или флаг Qt::WA_DeleteOnClose или ручками delete %Имя виджета%
Litkevich Yuriy Дата 14.6.2011, 16:08
 
Цитата(edwardoid @ 14.6.2011, 15:17) *
Но когда закрываю окна, память не высвобождается.
Нужно делать так, как сказал silver47, т.е. QWidget::setAttribute(Qt::WA_DeleteOnClose);
Цитата(silver47 @ 14.6.2011, 16:25) *
mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван.
Это почему?
edwardoid Дата 14.6.2011, 15:56
  :lol: Понимаю ваше удивление, увы сейчас мне верить нечему кроме как ТМ.
RazrFalcon Дата 14.6.2011, 14:47
 
Цитата(silver47 @ 14.6.2011, 13:25) *
mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван. Необходимо в конструкторе класса напрямую указать:
this->setAttribute(Qt::WA_DeleteOnClose);

Именно это я выше и написал.


PS: с каких это пор мы верим диспетчеру? Тем более виндовому...
silver47 Дата 14.6.2011, 13:25
  mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван. Необходимо в конструкторе класса напрямую указать:
this->setAttribute(Qt::WA_DeleteOnClose);
edwardoid Дата 14.6.2011, 13:17
  По ходу да, только все равно обычный Task manager все равно показывает старое значение занятой памяти.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 24.5.2022, 0:42