вы можете сделать это так:
QVector<QCheckBox*> checkBoxVector;
for(int x = 0; x < 12; ++x){
for(int y = 0; y < 12; ++y){
checkBoxVector.append(new QCheckBox(this));
checkBoxVector.last()->setGeometry(x * 20, y * 20, 20, 20);
}
}
вы хотите сохранить указатели на вновь созданные элементы в некотором классе контейнера, чтобы вы могли использовать их позже (например, чтобы уничтожить их).
Этот пример немного упрощен. Вы должны позаботиться о правильном уничтожении объектов. Использование вектора умных указателей сделало бы этот код более надежным. Хотя в этом случае, поскольку все флажки являются дочерними элементами оконного или родительского виджета (указатель this
в моем примере), они будут уничтожены вместе с родительским. Поэтому, пока вы просто показываете их один раз, а затем уничтожаете родителя, вы должны быть в безопасности.
И, конечно, таким образом (только один вектор) вы как-то теряете два измерения сетки. Если вы хотите получить доступ к одному элементу по его позиции, вам придется выполнить несколько простых вычислений с помощью x и y.
В качестве альтернативы вы можете использовать два вектора, первый из которых содержит строку, а это второй вектор, который, в свою очередь, содержит указатели на флажки. Но опять же, это немного усложнит код.