4

我正在使用QTableView一个子类QAbstractTableModel作为它的模型。通过实现data()headerdata()在子类模型中,可以控制表的许多属性,如数据、标题值、字体等。

就我而言,我希望模型设置每个表格列的宽度。如何才能做到这一点?

4

1 回答 1

9

有两种方法:

  1. 在模型的数据方法中,您可以返回角色 SizeHintRole。

  2. 更好的方法是子类QItemDelegate化并覆盖该方法。

见这里 ( qitemdelegate.html#sizeHint )

例子 -

QSize ItemDelegate::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
    QSize sz;

    if(index.column()==2)
    {
        return QSize(128, option.rect().height());
    }

    return QSize();
}

在这里,我将第 2 列的宽度设置为 128 像素,并从QStyleOptionViewItem.

于 2012-06-18T10:32:11.530 回答