如何通过模型设置QTableView列的宽度?

4
我正在使用 QTableView 和一个继承自 QAbstractTableModel 的子类作为它的模型。通过在子类化的模型中实现 data()headerdata(),可以控制表格的许多属性,如数据、标题值、字体等。
在我的情况下,我希望模型设置每个表格列的宽度。这该怎么做?
1个回答

10

有两种方法:

  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中保存的项矩形的高度。


3
我已经使用这个答案来解决我的问题,但是为了能够在Qt 4.8.5中编译,我需要将return QSize(128, option.rect().height());改为return QSize(128, option.rect.height()); - Jepessen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接