Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: T0Nikk от Апрель 07, 2010, 13:29



Название: изменение набора и расположения виджетов на экране
Отправлено: T0Nikk от Апрель 07, 2010, 13:29
Привет!
У меня такая проблема: есть два GroupBox. Мне необходимо в определенные моменты работы программы устанавливать один из них в качестве центрального виджета окна ( setCentralWidget() ). Один такой переход удается, но обратно - никак. Пробовал поочередно скрывать один из виджетов ( hide() <=> show() ), не работает  :-\
Подскажите, как можно организовать эти переходы


Название: Re: изменение набора и расположения виджетов на экране
Отправлено: BRE от Апрель 07, 2010, 13:46
Посмотри на QStackedWidget.
Каждый GroupBox на своей странице, а дальше переключай их как захочешь.


Название: Re: изменение набора и расположения виджетов на экране
Отправлено: T0Nikk от Апрель 07, 2010, 21:31
Не выходит  :-\
BRE, на практике у Вас это получалось таким способом?
Картина примерно такая:

    this->createGroupBoxes(); // создает два QGroupBox

switch( .... )
case ....:
    this->drawInitWindow(); // this->stackedWidget->setCurrentIndex( 0 );setCentralWidget( this->stackedWidget )
    break;
case ....:
    this->changeWindow(); // // this->stackedWidget->setCurrentIndex( 1 );setCentralWidget( this->stackedWidget )
    break;


Название: Re: изменение набора и расположения виджетов на экране
Отправлено: BRE от Апрель 07, 2010, 21:58
В assistant все написано + есть пример.
Код
C++ (Qt)
MainWindow::MainWindow()
{
mainWidget = new QStackedWidget( this );
 
GroupWidget1 *group1 = new GroupWidget1( this ); // Первый виджет с необходимыми элементами (или просто QWidget + добавляем на него элементы)
mainWidget->addWidget( group1 );
 
GroupWidget2 *group2 = new GroupWidget2( this ); // Второй виджет с необходимыми элементами (или просто QWidget + добавляем на него элементы)
mainWidget->addWidget( group2 );
 
setCentralWidget( mainWidget );
}