Ho avuto difficoltà a distribuire le larghezze delle colonne tra tutte le celle di una tabella. Nel mio caso, in funzione headerData del modello, ho fatto la seguente (è necessario chiamare resizeColumnsToContents() da qualche parte):
QVariant headerData(int section, Qt::Orientation orientation, int role) const override {
if (orientation == Qt::Vertical) {
return QVariant();
}
if (role == Qt::SizeHintRole) {
auto* p = qobject_cast<QTableView*>(QObject::parent());
if (p == nullptr) return QVariant();
// Parent total width.
const int w = p->viewport()->size().width() -
p->verticalScrollBar()->sizeHint().width();
QSize qs;
// Default height.
qs.setHeight(p->verticalHeader()->defaultSectionSize());
// Width per column.
switch (section) {
case 0:
qs.setWidth(w * 0.45);
return QVariant(qs);
case 1:
qs.setWidth(w * 0.45);
return QVariant(qs);
// ... others
default: ;
}
return QVariant();
}
if (role == Qt::DisplayRole) {
// header titles.
}
}
possibile duplicato del [QStandardItemModel all'interno Qtableview] (http://stackoverflow.com/questions/16931569/qstandarditemmodel-inside-qtableview) –