アプリケーションが起動されたがまだ構築時 (すべての初期ウィジェットが作成されているときなど) に、2 つのウィジェットを含む をレイアウトに追加し、QSplitter
2 番目のウィジェットが多かれ少なかれ 60/70% を占めるようにしたい最初のウィジェットは残りのスペースを取ります (スプリッターのサイズ自体を考慮して)。
そのため、最初に、ウィンドウ自体が表示される前に、これら 2 つのウィジェットを多かれ少なかれ次のように再調整しようとします。
splitter->setOrientation(Qt::Vertical);
auto sizes = splitter->sizes();
int& first_w = sizes.front(); // == 0
int& second_w = sizes.last(); // == 0
int diff = form_w * 2.3 - tbl_w; (30% * 2.3 = ~70%)
second_w += diff;
first_w -= diff;
splitter->setSizes(sizes);
しかし、first_w
andsecond_w
が含まれて0
おり0
、サイズがまだ計算されていないためか、ウィジェットがまだ表示されておらず (ウィンドウが表示されていない)、非表示のウィジェットのサイズが であるためかはわかりません0
。
これらのウィジェットの「将来の」サイズを取得するにはどうすればよいですか? はsplitter
内にQVBoxLayout
あり、所有者ウィジェットの使用可能なスペースは、多かれ少なかれウィンドウのすべての垂直方向のスペースです (それQTabBar
を所有するウィジェットの上にはしかなく、ウィンドウQVBoxLayout
には少しパディングがあります)。