динамическое окно (qt4)

Модератор: Модераторы разделов

Аватара пользователя
chups
Сообщения: 79
ОС: Debian Lenny GNU/Linux

динамическое окно

Сообщение chups »

здравствуйте. прошу уважаемых форумчан направить меня в нужном направлении. поиск по форуме ничего не дал. нужно реализовать динамическое изменение содержимого окна, точнее его одного виджета. У меня есть QComboBox со списком чего-то. список формируется динамически. выбираю один итем - в соответственном виджете появляются нужные кнопочки, надписи и т.п. выбираю другой итем - старое содержимое удаляется, появляется новое.
Как пытаюсь реализовать: в качестве виджета-контейнера я использую QGroupBox, при изменении итема он получает ссылку на QLayout и делает setLayout. Но ничего не отображается и не меняется. как он был пуст, так и осталься. пробовал после добавления layout сделать repaint QGroupBox'a - тоже никакого эффекта. Вот приблизительно как пробую:

Код: Выделить всё

void cipherWindow::setWidgetToBox(int i){
    qWarning("setWidgetToBox: activated %d item\n", i);
    if(i==1){
        vig = new vigener(this);
        ciphersBox->setLayout(vig->getLayout());
//         ciphersBox->repaint();
//         ciphersBox->show();
//ciphersBox - указатель на QGroupBox
    }
}


На прикрепленных скриншотах изображен какой эффект должен быть.




Прошу помочь мне: правильный ли я подход выбрал. если да, то где туплю, если нет - то куда мне идти? :)
и еще - как потом удалить layout из QGroupBox?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
DiS
Сообщения: 296
ОС: Gentoo

Re: динамическое окно

Сообщение DiS »

Если я всё правильно понял, то что Вам нужно называется QStackedLayout (QStackedWidget)
Если правильно задать вопрос, то он сам по себе будет ответом.
Спасибо сказали:
Аватара пользователя
chups
Сообщения: 79
ОС: Debian Lenny GNU/Linux

Re: динамическое окно

Сообщение chups »

DiS, да такой вариант тоже возможен, но в моем случае тоже все работает. проблема была банальная - моя невнимательность.
не тому указателю говорил setLayout. проблема решена, можно лавочку прикрыть.
Спасибо сказали: