我正在使用QTableView
,其子类为QAbstractTableModel
作为其模型。通过在子类模型中实现data()
和headerdata()
,可以控制表的许多属性,如数据,标题值,字体等。
就我而言,我希望模型设置每个表列的宽度。怎么办呢?
答案 0 :(得分:9)
有两种方法:
在模型的数据方法中,您可以返回角色SizeHintRole。
更好的方法是继承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
中保存的项目矩形的高度。