如何通过模式设置QTableView中列的宽度?(How to set width of QTabl

2019-09-18 04:53发布

我使用QTableView使用的一个子类QAbstractTableModel作为它的模型。 通过实施data()headerdata()在子类的模式,它是控制数据等,标头值,字体等表中的许多特性是可行的。

就我而言,我希望模型设定每个表列的宽度。 如何才能做到这一点?

Answer 1:

有两种方法:

  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



文章来源: How to set width of QTableView columns by model?