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

时间:2012-06-17 07:23:07

标签: qt qt4 qtableview model-view

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

就我而言,我希望模型设置每个表列的宽度。怎么办呢?

1 个答案:

答案 0 :(得分:9)

有两种方法:

  1. 在模型的数据方法中,您可以返回角色SizeHintRole。

  2. 更好的方法是继承QItemDelegate并覆盖该方法。

  3. 见这里(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中保存的项目矩形的高度。