Когда приложение запущено, но еще находится во время разработки (когда все исходные виджеты создаются и т. д.), я добавляю в свой макет 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
находится внутри QVBoxLayout
, а доступное пространство виджета-владельца составляет более или менее все вертикальное пространство окна (есть только QTabBar
над виджетом, которому принадлежит этот QVBoxLayout
, и немного отступа в окне).