void FineryFlawDialog::showTotalAttributes() {
while (!flawsCheckBoxes.isEmpty()) {
QCheckBox *rc = flawsCheckBoxes.first();
flawsCheckBoxes.removeFirst();
delete rc;
}
QList<FineryAttribute> flaws = dao->getNodes();
foreach(FineryAttribute flaw, flaws) {
QCheckBox *rc = new QCheckBox(flaw.getName(), this);
flawsCheckBoxes.append(rc);
}
int countOfColumn = 9;
QGridLayout *gridLayout = new QGridLayout();
int row = 0;
int col = 0;
foreach(QCheckBox *rc, flawsCheckBoxes) {
gridLayout->addWidget(rc, row, col, 1, 1);
++row;
if (row > countOfColumn) {
++col;
row = 0;
}
}
QWidget *flawsWidget = new QWidget(this);
flawsWidget->setLayout(gridLayout);
// Layout for scroll area.
QHBoxLayout *hLayout = new QHBoxLayout();
hLayout->addWidget(flawsWidget);
hLayout->addStretch();
QVBoxLayout *vLayout = new QVBoxLayout();
vLayout->addLayout(hLayout);
vLayout->addStretch();
hLayout->setMargin(1);
vLayout->setMargin(1);
QWidget *scrollAreaContentsWidget = new QWidget();
scrollAreaContentsWidget->setLayout(vLayout);
QPalette palette = scrollAreaContentsWidget->palette();
palette.setColor(QPalette::Window, Qt::white);
scrollAreaContentsWidget->setPalette(palette);
ui->scrollArea->setWidget(scrollAreaContentsWidget);
}
把check boxes 放到一个网格中, 按列排,每列排N个,第一列排满后再排第二列。
或许能帮到你。