Russian Qt Forum
Октябрь 01, 2024, 00:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Сжатие виджета в точку или Борьба с компоновщиком.  (Прочитано 7044 раз)
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.131 секунд. Запросов: 22.