Search code examples
c++qtqt-creatorqt5.5qtabwidget

Qt - How to add multiple QGroupBox to a QTabWidget?


I'm going to create multiple tabs with multiple group box inside each tab like below.

 _______ ______
|              |            |
|  Tab1    |  Tab2   |
|              |______|_________________
|
|    Group Box 1
|   ------------------------------------
|
|
|    Group Box 2
|   ------------------------------------

How can I do this with QTabWidget and QGroupBox?

Edit

The code that I use for one group box in tab widget are:

QGroupbox * testGB = new QGroupbox("Group Box 1");
...
// create a test layout and add some widget to it
...
testGB.setLayout(testLayout);

QTabWidget * tab = new QTabWidget this;
tab->addTab(testGB, tr("Tab1"));  

But I don't know how to append another group box to Tab1


Solution

  • Maybe here's something useful for you.

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        QVBoxLayout* lay=new QVBoxLayout;
        ui->centralWidget->setLayout(lay);
        QTabWidget* tab = new QTabWidget(this);
        lay->addWidget(tab);
    
        QWidget* w1=new QWidget(this);
        QVBoxLayout* lay1=new QVBoxLayout;
        lay1->setSizeConstraint(QLayout::SetMaximumSize);
        w1->setLayout(lay1);
        tab->addTab(w1,"tab1");
        QGroupBox* gb1=new QGroupBox("Group 1-1");
        gb1->setMaximumSize(250,100);
        gb1->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Preferred);
        lay1->addWidget(gb1);
        QGroupBox* gb2=new QGroupBox("Group 1-2");
        gb2->setMaximumSize(250,100);
        gb2->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Preferred);
        lay1->addWidget(gb2);
    
        QWidget* w2=new QWidget(this);
        QVBoxLayout* lay2=new QVBoxLayout;
        lay2->setSizeConstraint(QLayout::SetMaximumSize);
        w2->setLayout(lay2);
        tab->addTab(w2,"tab2");
        QGroupBox* gb3=new QGroupBox("Group 2-1");
        gb3->setMaximumSize(250,100);
        gb3->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);
        lay2->addWidget(gb3);
        QGroupBox* gb4=new QGroupBox("Group 2-2");
        gb4->setMaximumSize(250,100);
        gb4->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);
        lay2->addWidget(gb4);
    }
    

    enter image description here