Coding objects in GroupBox in a main layout
-
wrote on 23 Oct 2011, 22:57 last edited by
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);
}@
-
wrote on 23 Oct 2011, 23:40 last edited by
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.
1/2