どのようにしてQMainWindowのframeSizeを設定しますか?QMainWindow set frameSize
私がやろうとしていることを説明するには、私のプログラムのメインウィンドウの高さが画面の高さからタスクバーを引いたものに等しくなければならないという要件があります。幅は現代のワイドスクリーンモニターの画面幅よりもかなり小さくなければならないので、ウィンドウを最大化することはできません。
QApplication::desktop()->availableGeometry()
では、画面の高さからタスクバーを除いた問題が見つかりません。ただし、この値のウィンドウでresize
を呼び出すことはできません。私が言うことができる限り、resize
は、特定のスペース内に外装を作るのではなく、インテリアを一定のスペースを占めるようにします。ドキュメントには、関連するウィンドウプロパティがframeSize
であることが示唆されていますが、直接設定する方法はありません。私はおそらくresize
とframeSize
の間でいくつかの試行錯誤のフィードバックを行うことができますが、よりエレガントな/慣用的な方法がありますか?
右は難しいのは、ウィンドウが最初に表示された後でなければframeGeometryが設定されていないことです(明らかにこれはAPIの欠陥ではありません。Qtは、ウィンドウフレームがホストによって描画されているので、オペレーティング·システム)。回避策:最初にプログラムを実行し、小さなボックスとしてウィンドウを表示し、サーバーに接続するまで待ちます(ユーザーの視点からは自然にジャンプします)。次にスクリーンの高さに合わせてサイズを変更します。次に、実行されるウィンドウジオメトリを保存します。 – rwallace
OK、わかりませんでした。回避策は、保存されたフレームジオメトリが有効であることをリサイズ後に確認することで、完全に堅牢にすることができます。こうすることで、ユーザーがデスクトップスタイルなどを変更した場合は、それに応じてウィンドウを再描画して、次回のために新しい値を保存することができます。 – TonyK