crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 9.7.2025, 0:33