void Sheet::setGridSize(const QSize &size) { if(size.width() < 0 || size.height() < 0) return; QGridLayout *l = qobject_cast<QGridLayout*>(layout()); l->setEnabled(false); clear(); grid_size = size; // Add cell controls for(int r = 0; r < size.height(); ++r) for(int c = 0; c < size.width(); ++c) { CellControl *cc = new CellControl(QPoint(c, r), *this); l->addWidget(cc, r, c); cc->show(); } // Set cell neighbours for(int r = 0; r < size.height(); ++r) for(int c = 0; c < size.width(); ++c) { cellAt(r, c).setNeighbours( r > 0 ? &cellAt(r - 1, c ) : 0, c > 0 ? &cellAt(r , c - 1) : 0, r < size.height() - 1 ? &cellAt(r + 1, c ) : 0, c < size.width() - 1 ? &cellAt(r , c + 1) : 0 ); } setFixedSize(l->minimumSize()); l->setEnabled(true); }
void QGridLayoutProto::setEnabled(bool enable) { QGridLayout *item = qscriptvalue_cast<QGridLayout*>(thisObject()); if (item) item->setEnabled(enable); }