1

アプリケーションが起動されたがまだ構築時 (すべての初期ウィジェットが作成されているときなど) に、2 つのウィジェットを含む をレイアウトに追加し、QSplitter2 番目のウィジェットが多かれ少なかれ 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_wandsecond_wが含まれて0おり0、サイズがまだ計算されていないためか、ウィジェットがまだ表示されておらず (ウィンドウが表示されていない)、非表示のウィジェットのサイズが であるためかはわかりません0

これらのウィジェットの「将来の」サイズを取得するにはどうすればよいですか? はsplitter内にQVBoxLayoutあり、所有者ウィジェットの使用可能なスペースは、多かれ少なかれウィンドウのすべての垂直方向のスペースです (それQTabBarを所有するウィジェットの上にはしかなく、ウィンドウQVBoxLayoutには少しパディングがあります)。

4

2 に答える 2