4

QTableViewのサブクラスをQAbstractTableModelモデルとして使用しています。data()サブクラス化されたモデルで を実装することによりheaderdata()、データ、ヘッダー値、フォントなど、テーブルの多くのプロパティを制御できます。

私の場合、モデルで各テーブル列の幅を設定したいと考えています。これはどのように行うことができますか?

4

1 に答える 1

9

次の 2 つの方法があります。

  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

于 2012-06-18T10:32:11.530 に答える