Когда приложение запускается, но все же во время построения (когда все начальный виджет создается и т. Д.), Я добавляю в свой макет QSplitter
с двумя виджетами, и я хочу второй виджет занимает более или менее 60/70% доступного пространства, а первый виджет занимает остальную часть пространства (с учетом самого размера разделителя).Qt: QSplitter, redo размеры
Так, в самом начале, перед окнами сама показанными, я пытаюсь перенастроить эти два виджета более или менее так:
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
, я не» t знать, если из-за того, что размеры еще не рассчитаны или потому, что виджет еще не показан (окна нет), а размеры невидимых виджетов - 0
.
Что я могу сделать, чтобы получить «будущие» размеры этих виджетов? splitter
находится внутри QVBoxLayout
, а доступное пространство виджета владельца - это более или менее все вертикальное пространство окна (есть только QTabBar
над виджетами, владеющим этим QVBoxLayout
и немного дополнением в окне).
Нет, это не работает (у меня есть тест). Эти значения задают размеры в пикселях, которые я думаю, и поскольку между ними существует много свободного пространства, эти значения полностью заменяются 'sizeHint'. Видящий виджет - это 'QTextEdit', который находится внутри формы, которая занимает слишком много вертикального пространства. –