【发布时间】:2012-06-19 15:23:44
【问题描述】:
我使用QTableView 和QAbstractTableModel 的子类作为其模型。通过在子类模型中实现data()和headerdata(),可以控制表格的许多属性,如数据、表头值、字体等。
就我而言,我希望模型设置每个表格列的宽度。如何做到这一点?
【问题讨论】:
标签: qt qt4 qtableview model-view
我使用QTableView 和QAbstractTableModel 的子类作为其模型。通过在子类模型中实现data()和headerdata(),可以控制表格的许多属性,如数据、表头值、字体等。
就我而言,我希望模型设置每个表格列的宽度。如何做到这一点?
【问题讨论】:
标签: qt qt4 qtableview model-view
有两种方式:
在模型的数据方法中,您可以返回角色 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 中保存的项目矩形的高度。
【讨论】:
return QSize(128, option.rect().height()); 更改为 return QSize(128, option.rect.height()); 才能使用 Qt 4.8.5 进行编译。