我正在使用QTableView
一个子类QAbstractTableModel
作为它的模型。通过实现data()
和headerdata()
在子类模型中,可以控制表的许多属性,如数据、标题值、字体等。
就我而言,我希望模型设置每个表格列的宽度。如何才能做到这一点?
我正在使用QTableView
一个子类QAbstractTableModel
作为它的模型。通过实现data()
和headerdata()
在子类模型中,可以控制表的许多属性,如数据、标题值、字体等。
就我而言,我希望模型设置每个表格列的宽度。如何才能做到这一点?
有两种方法:
在模型的数据方法中,您可以返回角色 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
.