Ich glaub da hakts nicht erst beim Model/View. Das sind Basics.
Ein Methodenaufruf, bei dem ein anderes Objekt übergeben wird, hat REIN GAR NIX mit einem Konstruktor zu tun
Zwei Konstruktoren und ein Methodenaufruf (wenn du es nicht erkennst, was wo ist, solltest du mit einer allgemeinen Einleitung zu Objektorientierter Programmierung anfangen...).
Um dir den Weg durch die Qt-Sources zu ersparen:
QTableView::setModel() setzt auch die verticalHeader und horizontalHeader neu auf, und hierbei kommt es zum wohl ersten AUfruf von row/columnCount().
Code: Alles auswählen
class QHeaderViewPrivate
{
[...]
inline int modelSectionCount() const {
return (orientation == Qt::Horizontal
? model->columnCount(root)
: model->rowCount(root));
}
[...]
};
void QHeaderView::initializeSections()
{
Q_D(QHeaderView);
const int oldCount = d->sectionCount;
const int newCount = d->modelSectionCount();
[...]
}
void QHeaderView::setModel(QAbstractItemModel *model)
{
[...]
initializeSections();
}
void QTableView::setModel(QAbstractItemModel *model)
{
Q_D(QTableView);
d->verticalHeader->setModel(model);
d->horizontalHeader->setModel(model);
QAbstractItemView::setModel(model);
}
Und so haben wir alles zusammen...
Grüße
Franz