Открывакем исходник QTableWidget и смотрим:
C++ (Qt)
void QTableWidget::clear()
{
Q_D(QTableWidget);
selectionModel()->clear();
d->model()->clear();
}
Смотрим что происходит в моделе:
C++ (Qt)
void QTableModel::clear()
{
for (int j = 0; j < verticalHeaderItems.count(); ++j) {
if (verticalHeaderItems.at(j)) {
verticalHeaderItems.at(j)->view = 0;
delete verticalHeaderItems.at(j);
verticalHeaderItems[j] = 0;
}
}
for (int k = 0; k < horizontalHeaderItems.count(); ++k) {
if (horizontalHeaderItems.at(k)) {
horizontalHeaderItems.at(k)->view = 0;
delete horizontalHeaderItems.at(k);
horizontalHeaderItems[k] = 0;
}
}
clearContents();
}
void QTableModel::clearContents()
{
for (int i = 0; i < tableItems.count(); ++i) {
if (tableItems.at(i)) {
tableItems.at(i)->view = 0;
delete tableItems.at(i);
tableItems[i] = 0;
}
}
reset();
}
И о чудо, все удалается. ))) Но только:
The table dimensions stay the same.
Еще раз обращаем внимание на пост Павел_F.