Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qwerky от Октябрь 14, 2009, 20:13



Название: грамотная очистка и заполнение layout-a
Отправлено: qwerky от Октябрь 14, 2009, 20:13
какая наилучшая последовательность уделения из лейаута виджетов и заполнения новыми ?
widget.deleteLater() достаточно ?


Название: Re: грамотная очистка и заполнение layout-a
Отправлено: uriel от Октябрь 14, 2009, 20:35
Извиняюсь за вопрос не совсем по теме, но всё-таки интересно, в каком случае может возникнуть необходимость именно удалять и добавлять заново другие виджеты?
Просто есть в принципе QStackedLayout и он, как правило, спасает в подобных ситуациях. :)


Название: Re: грамотная очистка и заполнение layout-a
Отправлено: reymon от Октябрь 15, 2009, 00:56
впринципе не вижу разницы что первым пихать, а что вторым. Есть функции специальные по порядку размещения виджетов в layout-e, как бы добавляй как удобней. Насчет удаления: deleteLater() конечно достаточно, если до него сделать hide(). Можно еще поставить атрибут виджету deleteOnClose и делать ему не hide();deleteLater(); а просто close(), а так как close() слот можно еще и сигналчик прикрутить


Название: Re: грамотная очистка и заполнение layout-a
Отправлено: whirlwind от Октябрь 15, 2009, 09:59
достаточно, но надо помнить, что deleteLater работает только при работающем event loop. То есть, вот в таком случае

Код:

MySuperPuperWidget* mw = new MySuperPuperWidget;

mw->show();

app.exec();

delete mw;

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

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

Просто есть в принципе QStackedLayout и он, как правило, спасает в подобных ситуациях. :)
может, именно из него удалять и надо


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

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


Название: Re: грамотная очистка и заполнение layout-a
Отправлено: spectre71 от Октябрь 20, 2009, 12:20
Для начала необходимо грамотно поставить задачу.

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

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

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

2) А зачем вам вообще использовать deleteLater