当应用程序启动但尚未构建时(当所有初始小部件正在创建等时),我添加到我的布局 a QSplitter
,有两个小部件,我希望第二个小部件或多或少占据 60/70%可用空间,而第一个小部件占用其余空间(考虑到拆分器大小本身)。
所以,一开始,在窗口本身显示之前,我尝试或多或少地重新调整这两个小部件:
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
并且second_w
包含0
和0
,我不知道是因为尚未计算大小,还是因为尚未显示小部件(窗口未显示)并且不可见小部件的大小为0
.
我该怎么做才能获得这些小部件的“未来”尺寸?位于splitter
a 内QVBoxLayout
,并且所有者小部件的可用空间或多或少是窗口的所有垂直空间(QTabBar
在小部件上方只有 a 拥有它QVBoxLayout
,并且窗口中有一点填充)。