crossplatform.ru

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


  Ответ в убрать виджет с лайаута
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
ernie Дата 7.10.2010, 16:07
  igor_bogomolov,kwisp спасибо,обнуление родителя дало как раз то что надо.
igor_bogomolov Дата 7.10.2010, 15:48
 
Цитата(kwisp)
тебе владельца виджета сменить надо.
Если точнее, то родителя нужно обнулить, т.к. layout его принудительно назначает. Тек же, возможно, придется скрыть виджет в ручную QWidget::hide ()
kwisp Дата 7.10.2010, 15:42
  ernie,
судя по доке
Цитата
void QLayout::removeWidget ( QWidget * widget )
Removes the widget widget from the layout. After this call, it is the caller's responsibility to give the widget a reasonable geometry or to put the widget back into a layout.

Note: The ownership of widget remains the same as when it was added.

See also removeItem(), QWidget::setGeometry(), and addWidget().

тебе владельца виджета сменить надо.
что даёт
void QLayout::removeItem ( QLayoutItem * item )
???
ernie Дата 7.10.2010, 15:27
  Доброго времени суток господа.Вопрос такой:
Создается QVector,далее создаются нужные виджеты и помещаются в этот вектор,после этого нужные виджеты из вектора помещаются на лайаут.
В определённый момент надо удалить все виджеты с лайата и поместить туда снова(т.е. виджеты из того же вектора,некоторые остаются теми же,некоторые новые из этого же вектора),но тут то и возникает проблема,если делаю :
QLayoutItem *child;
    while ((child = dockLayout->takeAt(0))!=0)
    {
        QWidget *w=child->widget();
        delete child;
        dockLayout->removeWidget(w);
        delete w;
    }

то виджеты удаляются и в векторе,что в дальнейшем вызывает проблемы,если просто делаем removeWidget() для всех виджетов,то они так и продолжают отрисовываться,подскажите выход,заранее спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 10:53