当应用程序启动但尚未建设时(当所有初始小部件正在创建等)时,我添加到我的布局QSplitter
,有两个小部件,我想第二个小部件或多或少地占用可用空间的60/70%,而第一小部件占用空间的其余部分(考虑到分隔器大小本身)。Qt:QSplitter,重做大小
所以,在开始的时候,本身显示的玻璃窗前,我尝试更多或更少的重新调整这两个控件那样:
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
位于QVBoxLayout
之内,并且所有者窗口小部件的可用空间或多或少都是窗口的所有垂直空间(窗口上只有拥有QVBoxLayout
的窗口部件上方的QTabBar
以及一些填充)。
不,它不起作用(我有测试)。该值以像素为单位设置我认为的大小,并且由于它们之间有很多可用空间可供分配,所以这些值完全被'sizeHint'替代。有问题的小部件是一个'QTextEdit',它的内部需要太多的垂直空间。 –