當應用程序啓動但尚未建設時(當所有初始小部件正在創建等)時,我添加到我的佈局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',它的內部需要太多的垂直空間。 –