Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Coding objects in GroupBox in a main layout



  • I'm creating a Dialog for which I have created a main layout. I have added a 2D array of toolbuttons to the Dialog and next need to create a GroupBox that contains a few child widgets. To get the GroupBox to show up on the Dialog, I've had to add it to a SubLayout. But when I try to write code that places child widgets in the GroupBox, they show up outside the GroupBox. I have worked on this all day and have tried several variations suggested by the Qt Documentation examples. . Below is the code that I have written so far, it just attempts to add a QLabel to the GroupBox. Thanks for any help in advance.

    @
    #include "gamedialog.h"
    #include <QtGui>

    GameDialog::GameDialog(QWidget parent) :QDialog(parent)
    {
    // Create and configure layouts
    QVBoxLayout
    mainLayout = new QVBoxLayout(this);
    QGridLayout* gridLayout = new QGridLayout;
    QVBoxLayout* groupBoxLayout = new QVBoxLayout;

    mainLayout->addLayout(gridLayout);
    mainLayout->addLayout(groupBoxLayout);
    mainLayout->addStretch();
    
    // Create grid of toolbuttons and add to layout
    const int ROWS = 11;
    const int COLUMNS = 21;
    
    for(int i = 0; i < ROWS; i++)
            for(int j = 0; j < COLUMNS; j++)
            {
                toolButton = new QToolButton;
                gridLayout->addWidget(toolButton, i, j);
            }
    
    groupBox = new QGroupBox("Simulation Configuration");
    groupBoxLayout->addWidget(groupBox);
    numStepsLabel = new QLabel("Number of Steps");
    groupBoxLayout->addWidget(numStepsLabel);
    

    }@



  • Well, I'm not sure what you meant, but if you want your gridLayout (containing those toolbuttons) to be inside groupBox, shouldn't you put the gridLayout inside your groupBox? Something like this:

    [code]
    // Make grid
    QGridLayout *gridLayout = ...

    for(int i = 0; ...) ... gridLayout->addWidget(toolButton, i, j);

    // Make groupbox and set layout
    groupBox = new QGroupBox;
    QVBoxLayout groupBoxLayout = new QVBoxLayout;
    groupBox->setLayout(groupBoxLayout);

    // Add things to groupbox (via layout)
    groupBoxLayout->addLayout(gridLayout);
    groupBoxLayout->addWidget(new QLabel);
    [/code]

    ...And then put groupBox to dialog?

    EDIT: I mean, it seems that you add your grid to main layout (line 12), and not in your groupbox's layout.


Log in to reply