Russian Qt Forum
Ноябрь 05, 2024, 22:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: грамотная очистка и заполнение layout-a  (Прочитано 4659 раз)
qwerky
Гость
« : Октябрь 14, 2009, 20:13 »

какая наилучшая последовательность уделения из лейаута виджетов и заполнения новыми ?
widget.deleteLater() достаточно ?
Записан
uriel
Гость
« Ответ #1 : Октябрь 14, 2009, 20:35 »

Извиняюсь за вопрос не совсем по теме, но всё-таки интересно, в каком случае может возникнуть необходимость именно удалять и добавлять заново другие виджеты?
Просто есть в принципе QStackedLayout и он, как правило, спасает в подобных ситуациях. Улыбающийся
Записан
reymon
Гость
« Ответ #2 : Октябрь 15, 2009, 00:56 »

впринципе не вижу разницы что первым пихать, а что вторым. Есть функции специальные по порядку размещения виджетов в layout-e, как бы добавляй как удобней. Насчет удаления: deleteLater() конечно достаточно, если до него сделать hide(). Можно еще поставить атрибут виджету deleteOnClose и делать ему не hide();deleteLater(); а просто close(), а так как close() слот можно еще и сигналчик прикрутить
« Последнее редактирование: Октябрь 15, 2009, 00:59 от reymon » Записан
whirlwind
Гость
« Ответ #3 : Октябрь 15, 2009, 09:59 »

достаточно, но надо помнить, что deleteLater работает только при работающем event loop. То есть, вот в таком случае

Код:

MySuperPuperWidget* mw = new MySuperPuperWidget;

mw->show();

app.exec();

delete mw;

если MySuperPuperWidget будет в своем деструкторе делать deleteLater() каким-то дочерним обьектам, деструкторы для этих дочерних обьектов вызваны не будут.

Впрочем, такое скорее актуально не для виджетов, а просто для наследников QObject

Просто есть в принципе QStackedLayout и он, как правило, спасает в подобных ситуациях. Улыбающийся
может, именно из него удалять и надо
Записан
qwerky
Гость
« Ответ #4 : Октябрь 20, 2009, 12:07 »

Цитировать
Извиняюсь за вопрос не совсем по теме, но всё-таки интересно, в каком случае может возникнуть необходимость именно удалять и добавлять заново другие виджеты?
делаю что-то типа таблицы - property editor-a. В одном столбце названия параметров, в другом - радакторы значений. По клику на список объектов редактор должен отобразить список параметров обекта.

Цитировать
достаточно, но надо помнить, что deleteLater работает только при работающем event loop.
да, так и есть. deleteLater вроде бы работает нормально.
Записан
spectre71
Гость
« Ответ #5 : Октябрь 20, 2009, 12:20 »

Для начала необходимо грамотно поставить задачу.

Цитировать
Извиняюсь за вопрос не совсем по теме, но всё-таки интересно, в каком случае может возникнуть необходимость именно удалять и добавлять заново другие виджеты?
делаю что-то типа таблицы - property editor-a. В одном столбце названия параметров, в другом - радакторы значений. По клику на список объектов редактор должен отобразить список параметров обекта.

1) Да, а интересно причем тут лейауты!

Цитировать
достаточно, но надо помнить, что deleteLater работает только при работающем event loop.
да, так и есть. deleteLater вроде бы работает нормально.

2) А зачем вам вообще использовать deleteLater
« Последнее редактирование: Октябрь 20, 2009, 12:21 от Spectre » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 21.