model不是有个data函数么?这是我的方法:
QVariant HandCaseModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();
    switch (role)
    {
    case Qt::TextAlignmentRole:
        return int(Qt::AlignVCenter);
    case Qt::BackgroundRole:
        return QColor(250, 250, 250);
    case Qt::DisplayRole:
    case Qt::EditRole:
        return m_list.at(index.column());
    case Qt::SizeHintRole:
        return QSize(80, 20);           //就是这里改变大小,还可以根据不同的index设置不同的值
    default:
        break;
    }
    return QVariant();
}
当你调用setModel或reset model的时候需要调用一下:
void QTableView::resizeColumnsToContents ()   //根据data函数设置的size调整列宽
void QTableView::resizeRowsToContents ()        //根据data函数设置的size调整行高