Я использую QSplitter для размещения некоторых виджетов рядом.
Будучи пользователем, я могу изменять размеры этих виджетов, просто перетаскивая сплиттер.
Будучи программистом, я не знаю, как точно указать, какую ширину и какую высоту я хочу в данный момент.
Это мое первоначальное состояние (регулируется разными отрезками).
Я попытался использовать setFixedSize (), но после этого вызова пользователь больше не может самостоятельно изменять размеры виджетов (и это определенно правильное поведение, потому что размер становится «фиксированным»).
Если я использую resize (), это почти не влияет. Размер виджета изменен, но (!) Неправильно и (!), Когда я снова начинаю перетаскивать, виджет получает свое первоначальное состояние.
Есть ли способ правильно изменить размер левого виджета в коде? Я не хочу иметь фиксированный размер, но resize () не работает должным образом, как вы можете видеть. И что же мне делать?
QSplitter имеет свой метод QSplitter::setSizes(QList<int>)
где каждая запись в списке — это размер виджета в пикселях, слева направо или сверху вниз соответственно. Метод не требует, чтобы вы знали точную ширину, он все еще работает с угаданными размерами.
Я использую эту функцию, например, для хранения пользовательских размеров (полученных QSplitter::sizes()
) в QSettings
например, при завершении работы программы и повторно примените их при повторном запуске программного обеспечения. Если они по какой-то причине не установлены, я просто устанавливаю общую ширину, деленную на количество виджетов в сплиттере, и он достаточно хорошо работает в качестве исходного состояния.