如何按型号​​设置QTableView列的宽度?

sjt*_*eri 4 qt qt4 qtableview model-view

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

在我的例子中,我希望模型设置每个表列的宽度.如何才能做到这一点?

小智 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();
}
Run Code Online (Sandbox Code Playgroud)

这里我将第2列的宽度设置为128像素,并且我从中保留的项目矩形填充高度QStyleOptionViewItem.

  • 我已经将这个答案用于我的问题,但我需要更改`return QSize(128,option.rect().height());`返回QSize(128,option.rect.height());`为了用Qt 4.8.5编译. (3认同)