問題タブ [qsplitter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1665 参照

python - QSplitter、QWidget のサイズ変更、setSizes()、setStretchFactor()、および sizeHint() - すべてを連携させるには?

特定の状況で、タイトルのすべてのものを連携させる方法を考え出すのに苦労しています。ここでは PyQt5 を使用していますが、非常に簡単に翻訳できるので、通常の C++ Qt で応答してください。

私は次のUIを作成しようとしています:

  • メイン フォーム ( から継承しQWidget、 を使用することもできますQMainWindow)

  • メイン フォームには、上部に が含まれ、残りのスペースを占有する画像を表示するカスタム クラス ( から継承) を含むQSplitter垂直方向の が含まれている必要があります。QTextEditQLabel

  • 上部のQTextEditはデフォルトで約 3 行のテキストの高さに設定する必要がありますが、これはQSplitter.

  • カスタム クラスは、アスペクト比を維持しながら、使用可能なスペースを考慮して、できるだけ大きくなるように画像のサイズを変更する必要があります。

もちろん、トリッキーな部分は、ユーザーのモニターの大きさとフォームの移動方法に応じて、すべてを正しくサイズ変更することです。これは、幅が約 1,000 px の小さな画面で実行する必要があり、おそらく 3,000 px 以上の幅の画面で実行する必要があります。

これが私がこれまでに持っているものです:

現在、私は2560x1440の画面でテストしており、魔法を1000入力すると、この画面サイズで動作しますが、ハードコードされ1000た. 何かが欠けているコードの領域は次の部分だと思います。

ハードコーディングされた 1000 を使用すると、この特定の画面ではかなりうまく機能します。

ここに画像の説明を入力

繰り返しますが (できればもっと明確に)、次のようにハードコードされた 1000 とコマンド Qt を削除できるようにしようとしています。

  • 最初に、フォームが画面の約 2/3 を占めるようにします。
  • 最初に、テキスト ボックスを約 3 行のテキストの高さにします (最小で 2 行のテキストの高さ)。
  • ユーザーが QSplitter を使用して、テキスト ボックスと画像のサイズをいつでも無制限に変更できるようにする
  • フォームのサイズが変更された (または最小化または最大化された) 場合、テキスト ボックスと画像のサイズを、ユーザーがサイズ変更時にどのように持っていたかに比例してサイズ変更します。

タイトルとこれまでの投稿で言及されているもののすべての組み合わせを試しましたが、おそらく別の画面サイズでは機能しないハードコードされた 1000 を除いて、この機能を取得できませんでした.

ハードコーディングされた 1000 を削除し、上記を変更して意図した機能を実現するにはどうすればよいですか?

0 投票する
1 に答える
454 参照

pyqt5 - PYQT5:スプリッターをグリッドレイアウトに設定するには?

スプリッターにプロットのグリッドを追加したい。垂直 (QSplitter(Qt.Vertical)) および水平 (QSplitter(Qt.Horizo​​ntal)) レイアウトをスプリッターに設定する方法は知っていますが、グリッド レイアウトで作成する方法がわかりません。