// -------------------------------------------------------------------------- void ctkMatrixWidgetPrivate::updateGeometries() { Q_Q(ctkMatrixWidget); QSize viewportSize = q->size(); // columns const int ccount = q->columnCount(); int colWidth = viewportSize.width() / ccount; int lastColWidth = colWidth + (viewportSize.width() - colWidth * ccount); for (int j=0; j < ccount; j++) { bool lastColumn = (j==(ccount-1)); int newWidth = lastColumn ? lastColWidth : colWidth; this->Table->setColumnWidth(j, newWidth); Q_ASSERT(this->Table->columnWidth(j) == newWidth); } // rows const int rcount = q->rowCount(); int rowHeight = viewportSize.height() / rcount; int lastRowHeight = rowHeight + (viewportSize.height() - rowHeight * rcount); for (int i=0; i < rcount; i++) { bool lastRow = (i==(rcount-1)); int newHeight = lastRow ? lastRowHeight : rowHeight; this->Table->setRowHeight(i, newHeight); Q_ASSERT(this->Table->rowHeight(i) == newHeight); } this->Table->updateGeometry(); }
// -------------------------------------------------------------------------- void ctkMatrixWidgetPrivate::validateItems() { Q_Q(ctkMatrixWidget); for (int i=0; i < q->rowCount(); ++i) { for (int j=0; j < q->columnCount(); ++j) { QTableWidgetItem* item = this->Table->item(i, j); if (!item) { this->Table->setItem(i, j , this->Table->itemPrototype()->clone()); this->setIdentityItem(i, j); } else { double value = item->data(Qt::DisplayRole).toDouble(); item->setData(Qt::DisplayRole, qBound(this->Minimum, value, this->Maximum)); } } } }