8

QSplitter を使用して、いくつかのウィジェットを並べて配置します。

ユーザーとして、スプリッターをドラッグするだけでこれらのウィジェットのサイズを変更できます。

プログラマーとして、現時点で必要な幅と高さを正確に指定する方法がわかりません。

それが私の元の状態です(さまざまなストレッチで調整されています)。 元の状態

setFixedSize() を使用しようとしましたが、その後、ユーザーはそれ自体でウィジェットのサイズを変更できなくなりました (サイズが「固定」されるため、これは間違いなく正しい動作です)。 ここに画像の説明を入力

resize() を使用しても、ほとんど効果がありません。ウィジェットのサイズは変更されますが、(!) 間違っており、(!) 再度ドラッグを開始すると、ウィジェットは初期状態になります。 ここに画像の説明を入力

コード内の左のウィジェットのサイズを正しく変更する方法はありますか? サイズを固定したくありませんが、ご覧のとおり、 resize() が正しく機能しません。それで、私は何をすべきですか?

4

1 に答える 1

12

QSplitterQSplitter::setSizes(QList<int>)には、リスト内の各エントリが左から右または上から下のウィジェットのサイズ (ピクセル単位) であるメソッドがあります。この方法では、正確な幅を知る必要はありません。推測されたサイズでも機能します。

たとえば、この機能を使用して、ユーザー定義のサイズ (によって取得QSplitter::sizes()) をQSettingsプログラムのシャットダウン時にインスタンスに保存し、ソフトウェアの再起動時にそれらを再適用します。何らかの理由で設定されていない場合は、全体の幅をスプリッターのウィジェットの数で割った値に設定するだけで、初期状態としては十分に機能します。

于 2015-08-12T17:01:10.790 に答える