QTableView
のサブクラスをQAbstractTableModel
モデルとして使用しています。data()
サブクラス化されたモデルで を実装することによりheaderdata()
、データ、ヘッダー値、フォントなど、テーブルの多くのプロパティを制御できます。
私の場合、モデルで各テーブル列の幅を設定したいと考えています。これはどのように行うことができますか?
QTableView
のサブクラスをQAbstractTableModel
モデルとして使用しています。data()
サブクラス化されたモデルで を実装することによりheaderdata()
、データ、ヘッダー値、フォントなど、テーブルの多くのプロパティを制御できます。
私の場合、モデルで各テーブル列の幅を設定したいと考えています。これはどのように行うことができますか?
次の 2 つの方法があります。
モデルのデータ メソッドで、ロール SizeHintRole を返すことができます。
より良い方法は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
。