Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Tricitron от Август 03, 2012, 12:07



Название: Как отобразить QGroupBox
Отправлено: Tricitron от Август 03, 2012, 12:07
Не получается отобразить QGroupBox с элементами. Надо сделать так:  QWidget - QVBoxLayout - QGroupBox.

Как на QGroupBox добавить QPushButton

Код:
#include <QtGui>

int main (int argc, char** argv)
{
    QApplication app(argc, argv);
    QWidget wgt;

    QPushButton* pbtA = new QPushButton("Button 1");
    QPushButton* pbtB = new QPushButton("Button 2");
    QPushButton* pbtC = new QPushButton("Button 3");

    QGroupBox* gbA = new QGroupBox("&Group Push Buttons");

    QVBoxLayout *vboxLayoutA = new QVBoxLayout;

    vboxA->addWidget(pbtA);
    vboxA->addWidget(pbtB);
    vboxA->addWidget(pbtC);


    vboxLayoutA->addWidget(gbA);

    gbA->setLayout(vboxLayoutA);

    wgt.setLayout(vboxLayoutA);
    wgt.show();

    return app.exec();

}


Название: Re: Как отобразить QGroupBox
Отправлено: mutineer от Август 03, 2012, 12:09
Переменная vboxA не определена


Название: Re: Как отобразить QGroupBox
Отправлено: Tricitron от Август 03, 2012, 12:15
не правильно написал,

Код:
#include <QtGui>

int main (int argc, char** argv)
{
    QApplication app(argc, argv);
    QWidget wgt;

    QPushButton* pbtA = new QPushButton("Button 1");
    QPushButton* pbtB = new QPushButton("Button 2");
    QPushButton* pbtC = new QPushButton("Button 3");

    QGroupBox* gbA = new QGroupBox("&Group Push Buttons");

    QVBoxLayout *vboxLayoutA = new QVBoxLayout;

    vboxLayoutA->addWidget(pbtA);
    vboxLayoutA->addWidget(pbtB);
    vboxLayoutA->addWidget(pbtC);


    vboxLayoutA->addWidget(gbA);

    gbA->setLayout(vboxLayoutA);

    wgt.setLayout(vboxLayoutA);
    wgt.show();

    return app.exec();

}


Название: Re: Как отобразить QGroupBox
Отправлено: mutineer от Август 03, 2012, 12:18
Ты добавляешь групбокс в лейаут, а потом задаешь этот же лейаут этому же групбоксу. Это какая-то глупость - групбокс не сможет отобразиться сам внутри себя. Посмотри доку по QGroupBox, там есть пример


Название: Re: Как отобразить QGroupBox
Отправлено: kambala от Август 03, 2012, 12:28
лэйаут может относиться только к одному виджету
Код
C++ (Qt)
#include <QtGui>
 
int main (int argc, char** argv)
{
   QApplication app(argc, argv);
 
   QPushButton* pbtA = new QPushButton("Button 1");
   QPushButton* pbtB = new QPushButton("Button 2");
   QPushButton* pbtC = new QPushButton("Button 3");
 
   QGroupBox gbA("&Group Push Buttons");
 
   QVBoxLayout *vboxLayoutA = new QVBoxLayout(&gbA);
 
   vboxLayoutA->addWidget(pbtA);
   vboxLayoutA->addWidget(pbtB);
   vboxLayoutA->addWidget(pbtC);
   gbA.show();
 
   return app.exec();
}


Название: Re: Как отобразить QGroupBox
Отправлено: Tricitron от Август 03, 2012, 12:59
Объясните пожалуйста вот эти две строчки

Код:
QGroupBox gbA("&Group Push Buttons");
 
QVBoxLayout *vboxLayoutA = new QVBoxLayout(&gbA);


Название: Re: Как отобразить QGroupBox
Отправлено: kambala от Август 03, 2012, 13:11
первая - создаем групбокс на стеке (в main главный виджет необязательно создавать в куче), вторая - устанавливаем лэйаут на групбокс