3

2 つの同一の QTableView があり、そのうちの 1 つは並べ替え可能です。これらのテーブルには両方とも、サイズ変更モードが QHeaderView::ResizeToContents に設定された最後の 4 つの列があります。

並べ替え不可のテーブルの列幅は正しいように見えますが、列ヘッダーの左端と右端に数ピクセルのパディングがあるだけです。しかし、並べ替え可能なテーブルの列幅により、列ヘッダーの左右の端に約 30 ピクセルが追加され、必要以上に幅が広くなります。

これらのテーブルとそのモデルの構造は、単一行の setSortingEnabled(bool) を除いて同じです。

これは仕様によるものですか、またはソート可能なテーブルからこの余分なパディングをすべて削除する方法はありますか?

4

1 に答える 1

3

追加のパディングの理由は、 がQHeaderViewソート インジケーターを描画する必要があるためです。そのため、テーブルの現在の並べ替え状態に関する目に見えるインジケーターが必要な場合は、余分なパディングをそのままにしておくことをお勧めします。それ以外の場合は、次のことができます。

table->setSortingEnabled( true );
table->horizontalHeader()->setSortIndicatorShown( false );

これらの関数呼び出しの順序が重要であることに注意してください。

QHeaderView仮想関数をサブクラス化してオーバーライドしsectionSizeFromContents()、特定のニーズに合わせてカスタマイズすることもできます。

于 2012-09-24T22:49:18.220 に答える