【问题标题】:How to set width of QTableView columns by model?如何按型号​​设置 QTableView 列的宽度?
【发布时间】:2012-06-19 15:23:44
【问题描述】:

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

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

【问题讨论】:

    标签: qt qt4 qtableview model-view


    【解决方案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 中保存的项目矩形的高度。

    【讨论】:

    • 我已使用此答案解决我的问题,但我需要将 return QSize(128, option.rect().height()); 更改为 return QSize(128, option.rect.height()); 才能使用 Qt 4.8.5 进行编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2018-06-27
    • 2014-01-19
    • 1970-01-01
    • 2017-09-02
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多