QHBoxLayout с фиксированной шириной

Я разработал следующую форму с помощью Qt Designer. Когда размер главного окна изменяется, я хочу сохранить фиксированный размер левой части макета (QHBoxLayout) и расширять только правую сторону QLineEdit виджета.

Добавив вертикальный разделитель слева QHBoxLayout, я смог зафиксировать его высоту, но не смог добиться того же самого для ширины.

Когда ширина главного окна увеличивается, ширина QHBoxLayout и QLineEdit увеличивается.

Как сделать так, чтобы левый макет имел фиксированный размер?

Не используйте голые макеты. Создайте отдельные виджеты-контейнеры для левой и правой панелей и установите для этих виджетов соответствующий макет. Затем вы можете установить максимальную/минимальную ширину для левого виджета, чтобы контролировать его размер. Вам также может потребоваться установить соответствующее растяжение макета для родительского hbox, чтобы правая панель всегда занимала все оставшееся пространство. Фактически, хорошей альтернативой установке фиксированной ширины было бы установить макет-растяжение так, чтобы размеры панелей изменялись пропорционально (например, левая панель всегда получает треть ширины, а правая панель - две трети).

ekhumoro 15.03.2024 16:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу добиться требуемого поведения, установив layoutStretch на (0, 1).

Мой основной горизонтальный макет содержит два виджета: вертикальный макет и QLineEidt. Установив коэффициент растяжения макета равным (0, 1), мы указываем, что левый вертикальный макет должен занимать минимальное пространство, а правый QLineEdit должен занимать все доступное пространство.

Согласно документации Qt:

https://doc.qt.io/qt-6/layout.html#stretch-factors

Если мы применим коэффициенты растяжения к каждому виджету, они будут расположены пропорционально (но не меньше, чем их минимальный размер), например

  • Если для какого-либо из виджетов установлены коэффициенты растяжения со значением больше нуля, то им выделяется пространство пропорционально их коэффициенту растяжения (поясняется ниже).
  • Если для какого-либо из виджетов коэффициент растяжения установлен на ноль, они получат больше места только в том случае, если другим виджетам это место не нужно. Из них пространство в первую очередь выделяется для виджетов с политикой расширения размера.
  • Любым виджетам, которым выделено меньше места, чем их минимальный размер (или подсказка о минимальном размере, если минимальный размер не указан), выделяется необходимый им минимальный размер. (Виджеты не обязательно должны иметь минимальный размер или подсказку о минимальном размере; в этом случае определяющим фактором является коэффициент растяжения.)

Другие вопросы по теме