Qt4: Квадратный элемент layout'а (Крокодил более длинный, чем широкий)
Модератор: Модераторы разделов
-
- Сообщения: 847
- ОС: archlinux
Qt4: Квадратный элемент layout'а
Подскажите, пожалуйста. Вот есть два виджета, один - справа, другой - слева. Задача - сделать так, чтобы тот, что слева, был "как можно более квадратным", то есть чтобы было так, как на прикрепленном рисунке: красный виджет всегда квадратный, и не растет по горизонтали, если по вертикали расти некуда; синий виджет растягивается по вертикали и имеет фиксированный размер по горизонтали (что есть свойство самого виджета), и всегда находится сразу после красного, то есть если красный не хочет расти вбок, то пустое место оказывается справа от синего виджета, а не между ними.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Qt4: Квадратный элемент layout'а
Ну, с синим виджетом проблем нет - ставим минимальную и максимальную ширину, а справа от него Spacer горизонтальный. С красным вот пока что-то ничего умнее своего Layout в голову не пришло.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Qt4: Квадратный элемент layout'а
Думаю аккуратнее всего получится сделать задуманное написав свой компоновщик, но если хочется топорного решения можете переопределить resizeEvent() у родительской формы.
-
- Сообщения: 847
- ОС: archlinux
Re: Qt4: Квадратный элемент layout'а
Эхх ... пока что отделался вот таким грязным хаком: Это гарантирует почти квадратность левого виджета. Немного тормозит.
Код: Выделить всё
void Window::resizeEvent(QResizeEvent *.*event*/) {
layout->setColumnStretch(0,height());
layout->setColumnStretch(1,width()-height());
}
-
- Сообщения: 862
- Статус: Адепт Дзен.
- ОС: Mint, Win7.
Re: Qt4: Квадратный элемент layout'а
Я бы переопределил resizeEvent, sizeHint, sizePolicy в классе красного виджета.
Desipere in loco