Трубадур в основном прав, что вам нужно установить правильный виджет в качестве родителя. Хотя QScrollArea по умолчанию не имеет виджета, вам нужно создать его следующим образом:
checkBoxArea = new QScrollArea(this); // this is the MainWindow or other parent
background = new QWidget;
checkBoxArea->setGeometry(0, 0, 200, 200);
checkBoxArea->setWidgetResizable(true);
checkBoxArea->setWidget(background);
background->show();
for(int i = 0; i < 5; ++i){
for(int j = 0; j < 5; ++j){
checkBoxVector.append(new QCheckBox(background));
checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20);
}
}
важно, чтобы вы использовали checkBoxArea->setWidgetResizable(true)
, иначе вам придется устанавливать размер вручную каждый раз, когда вы изменяете размер.
Если виджет не отображается там, где вы ожидаете, в большинстве случаев это происходит по одной из следующих причин:
- неправильный родитель
- невидимый: используйте show ()
- нулевой размер: используйте setGeoemetry