Russian Qt Forum
Июля 06, 2025, 14:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Сжатие виджета в точку или Борьба с компоновщиком.  (Прочитано 7581 раз)
Bepec
Гость
« : Марта 11, 2012, 13:31 »

Приветствую джентельменов и дам.

Вопрос: Как наименее извращённым способом можно выполнить сжатие виджета с компоновщиками до размеров точки? (ну или скажем размеров 10 на 10)

Что мешает: мешает компоновщик, не уменьшающий виджеты ниже минимального значения.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Марта 11, 2012, 13:39 »

Ну дык и измени минимальное значение через QWidget::setMinimumSize().
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #2 : Марта 11, 2012, 13:41 »

Поясню. Даже если утыкать все виджеты минимал сайзом, компоновщик не даёт ужать виджет.

PS напомню, у всех виджетов изначально minimumSize(0,0).
Записан
SimpleSunny
Гость
« Ответ #3 : Марта 11, 2012, 18:27 »

Поставить maximumSize(10, 10);
Записан
Syveren
Гость
« Ответ #4 : Марта 11, 2012, 18:47 »

попробуй  QWidget::setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored)
« Последнее редактирование: Марта 11, 2012, 19:30 от Syveren » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Марта 11, 2012, 19:05 »

Если/пока "есть место" компоновщик стремится к "preferred"
[/offtop]
Возникновение подобной задачи должно насторожить программиста, что-то явно не так, кошка гладится против шерсти
Записан
Bepec
Гость
« Ответ #6 : Марта 12, 2012, 06:50 »

Таки в рассуждениях
Цитировать
"Если/пока" есть место
есть одна существенная деталь - места минимальное количество, но дальше он уменьшать не даёт Подмигивающий

Спасибо за ответы. Пробую.
Записан
Bepec
Гость
« Ответ #7 : Марта 12, 2012, 07:06 »

Установка максимальных значений для всего виджета (10,10) не даёт результатов, ибо компоновщик возвращает значения сразу после установки на минимально видимое для виджетов (270,270 примерно)
Установка политики Ignored даёт результат внизу сообщения.

Но что-то совсем не нравится как оно выглядит Подмигивающий (самая извечная проблема)

Вопрос: Можно ли "свернуть" виджет по другому, оставив лишь заголовок окна?

« Последнее редактирование: Марта 12, 2012, 07:08 от Bepec » Записан
ufna
Гость
« Ответ #8 : Марта 12, 2012, 07:27 »

в компоновщике случаем нет заданный margin и подобных свойств?
Записан
Bepec
Гость
« Ответ #9 : Марта 12, 2012, 07:34 »

нулевые Подмигивающий Это было бы слишком просто.
Записан
Syveren
Гость
« Ответ #10 : Марта 12, 2012, 10:22 »

чтобы оставить только заголовок, нужно поставить Ignored также всем виджетам на форме
Записан
Bepec
Гость
« Ответ #11 : Марта 12, 2012, 10:29 »

Syveren, если не ставить ВСЕМ игноред, тогда ничего не схлопнется.

В приведённом мной скрине игноред стоит у всех. И только поэтому компоновщик позволил схлопнуться до таких размеров.

PS установка Игноред только виджету родителю даёт 0 (нуль) результатов.
Записан
Kolobok
Гость
« Ответ #12 : Марта 12, 2012, 12:43 »

Политика в данном случае не играет никакой роли. У компоновщика должны бить нулевые margin и spacing и у всех виджетов minimalSizeHint() должен возвращать QSize(0,0).
Записан
Bepec
Гость
« Ответ #13 : Марта 12, 2012, 12:49 »

Собственно все виджеты умерли в точки. (именно благодаря политике ignore)
У компоновщика с радостным ликом стоят все нулевые значения.
Эта ситуация отображена на скрине.
Записан
ufna
Гость
« Ответ #14 : Марта 12, 2012, 13:03 »

код в студию
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.03 секунд. Запросов: 22.