Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vexar от Декабрь 28, 2009, 04:48



Название: QGroupBox
Отправлено: vexar от Декабрь 28, 2009, 04:48
Кто знает как отобразить два QGroupBox в MainWindow ?

Код:
MainWindow::MainWindow()
{
    QGroupBox *groupBox1 = new QGroupBox(trUtf8("Текст"));
   
    QLabel *text1 = new QLabel(tr("Текст"));

    QVBoxLayout *vbox1 = new QVBoxLayout;
    vbox->addWidget(text1);
    vbox->addStretch(1);
    groupBox->setLayout(vbox1);

   QGroupBox *groupBox2 = new QGroupBox(trUtf8("Текст"));
   
    QLabel *text2 = new QLabel(tr("Текст"));

    QVBoxLayout *vbox2 = new QVBoxLayout;
    vbox->addWidget(text2);
    vbox->addStretch(1);
    groupBox->setLayout(vbox2);
}

Один отобразить получается через setCentralWidget(groupBox1); , а вот как два ?
P.S. извиняюсь если пример плохой.


Название: Re: QGroupBox
Отправлено: Dendy от Декабрь 28, 2009, 05:16
Смотря как вам нужно чтоб они рассполагались. В любом случае результат будет примерно такой:

Код
C++ (Qt)
MainWindow::MainWindow()
{
   QLayout * layout = new Q...Layout // depends how result should look like
 
   QGroupBox * oneBox = new QGroupBox;
   layout->addWidget( oneBox );
 
   QGroupBox * otherBox = new QGroupBox;
   layout->addWidget( otherBox );
 
   QWidget * centralWidget = new QWidget;
   centralWidget->setLayout( layout );
   setCentralWidget( centralWidget );
}
 


Название: Re: QGroupBox
Отправлено: vexar от Январь 11, 2010, 08:01
Смотря как вам нужно чтоб они рассполагались. В любом случае результат будет примерно такой:

Код
C++ (Qt)
MainWindow::MainWindow()
{
   QLayout * layout = new Q...Layout // depends how result should look like
 
   QGroupBox * oneBox = new QGroupBox;
   layout->addWidget( oneBox );
 
   QGroupBox * otherBox = new QGroupBox;
   layout->addWidget( otherBox );
 
   QWidget * centralWidget = new QWidget;
   centralWidget->setLayout( layout );
   setCentralWidget( centralWidget );
}
 

Данный пример не подходит или я что-то не так делаю.
Вот например попробуй тоже самое с QLabel проделать.


Название: Re: QGroupBox
Отправлено: ilot от Январь 11, 2010, 08:08
Данный пример не подходит или я что-то не так делаю.
Вот например попробуй тоже самое с QLabel проделать.
Ты что-то не так делаешь. Dendy все правильно написал. Тебе нужно только вместо
Код:
QLayout * layout = new Q...Layout;
написать
Код:
QLayout * layout = new QVBoxLayout;
чтобы получить то, что ты хочешь в первом примере.


Название: Re: QGroupBox
Отправлено: vexar от Январь 11, 2010, 08:30
Ага, это я не так что-то делал  :)

Возник второй вопрос. А как теперь в GroupBox добавить виджеты ?


Название: Re: QGroupBox
Отправлено: ilot от Январь 11, 2010, 08:35
Точно также, только теперь layout с созданными элементами устанавливаешь не на MainWindow, на GroupBox
Код:
oneBox->setLayout(layout);


Название: Re: QGroupBox
Отправлено: vexar от Январь 11, 2010, 09:21
Все спасибо. Тему можно закрыть.