可変長のテキストを含む最後の列を持つQTableWidgetがあります。QHeaderView:列のコンテンツサイズに基づくストレッチまたはResizeToContents
QHeaderViewの最後のセクションをセクションのサイズに基づいて内容に伸ばしたり、サイズを変更したりします。コンテンツのサイズがウィジェットの残りのスペースを超えていない場合、私はそれを伸ばす(ウィジェット内の醜い、埋められていないスペースを防ぐために)。私はsetStretchLastSection(True)
を使ってこれを達成することができます。ただし、コンテンツのサイズが伸長された列を超える場合、列のサイズが変更されないため、コンテンツの最後の部分が切り取られます。 QHeaderViewはこの場合にはResizeToContents
ResizeModeを提供しますが、短いコンテンツの場合はウィジェットに空白が残ります。
手動で列のサイズを変更することを考えました。残念ながら、sectionSizeFromContents()
は保護されているため、コンテンツサイズに直接アクセスすることはできません。私は、QHeaderViewをサブクラス化して再実装することができると思いますが、より良いソリューションがあるかどうかは疑問でした。
保護されたメソッドはpyqtでアクセスできます。pythonを使用しない場合は、pyqtタグを削除してくださいあなたの質問から。 – ekhumoro
私はpyqt5を使用しています。 'sectionSizeFromContents()'をコールしようとすると、次の例外が発生します。 'RuntimeError:保護された関数やPythonから作成されていないオブジェクトのシグナルにアクセスできません。 – tsabsch
はい、 'QHeaderView'のインスタンスを作成し、それをテーブルに設定するだけです。サブクラスを作成する必要はありません。 – ekhumoro