Russian Qt Forum
Ноябрь 23, 2024, 01:06
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? (Прочитано 5839 раз)
billy4685
Крякер
Offline
Сообщений: 306
Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
:
Июль 24, 2020, 10:34 »
Здравствуйте, господа форумчане.
У меня есть окно с тремя кнопками. Всем кнопкам задано свойство sizePolicy и minimumSize, как показано
на рисунке 1. Кнопки лежат в QVBoxLayout. Для которого заданы свойства, смотрите рисунок 2.
В результате окно имеет вид, рисунок 3 а). Когда я скрываю первую кнопку, с помощью метода setHidden(),
остальные две кнопки растягиваются по вертикали (рисунок 3 б)).
Как сделать так, чтобы место первой кнопки оставалось не затронутым, и две остальные кнопки не растягивались
(рисунок 4).
Если использовать QGridLayout, то когда скрываются все виджеты в столбце или строке, место где, лежат виджеты
уменьшается на 1 пиксель по строке или столбцу, и этот пиксель добавляется к одному из столбцов или строк
лежащих в этой же компановке. Как избавится от этого тоже не нашел пока.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #1 :
Июль 24, 2020, 11:02 »
Используй spacer
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
billy4685
Крякер
Offline
Сообщений: 306
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #2 :
Июль 24, 2020, 11:55 »
Цитата: Пантер от Июль 24, 2020, 11:02
Используй spacer
Сделал я вместо QVBoxLayout QGridLayout, рядом с первой кнопкой добавил вертикальный
spacer (рис. 1).
В результате, ситуация обстоит лучше, но все равно, вторая кнопка на пиксель стала
больше (рис. 2 - линиями показана данная ситуация: а) до скрытия кнопки, б) - после
скрытия кнопки).
Как добиться, чтобы место под первый item, где находится первая кнопка в QGridLayout-е
не менялся, и все кнопки не меняли своих размеров, после скрытия первой?
А как быть с QVBoxLayout или с QHBoxLayout вообще не пойму. Разве, что вместо кнопки
бросать в дизайнере spacer, а кнопку в коде потом добавлять. Но это как-то не серьезно.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #3 :
Июль 24, 2020, 13:49 »
Или засунь виджеты в грид.
Записан
ArchLinux x86_64 / Win10 64 bit
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #4 :
Июль 24, 2020, 14:08 »
Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
billy4685
Крякер
Offline
Сообщений: 306
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения
«
Ответ #5 :
Июль 24, 2020, 14:21 »
Цитата: Пантер от Июль 24, 2020, 14:08
Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/
Спасибо, не заметил. Ясно, значит другого решения нет, как добавлять еще один item и бросать туда spacer.
Жаль.
«
Последнее редактирование: Июль 24, 2020, 14:28 от billy4685
»
Записан
billy4685
Крякер
Offline
Сообщений: 306
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #6 :
Июль 24, 2020, 14:29 »
Цитата: kuzulis от Июль 24, 2020, 13:49
Или засунь виджеты в грид.
Спасибо.
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения
«
Ответ #7 :
Июль 27, 2020, 16:29 »
Цитата: billy4685 от Июль 24, 2020, 14:21
Цитата: Пантер от Июль 24, 2020, 14:08
Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/
Спасибо, не заметил. Ясно, значит другого решения нет, как добавлять еще один item и бросать туда spacer.
Жаль.
Можно и без верхнего спейсера: надо установить для строки грида минимальную высоту, равную высоте скрываемой кнопки + размер вертикального спейсинга, через setRowMinimumHeight, а сам вертикальный спейсинг в ноль.
«
Последнее редактирование: Июль 27, 2020, 16:37 от Hellraiser
»
Записан
billy4685
Крякер
Offline
Сообщений: 306
Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
«
Ответ #8 :
Июль 31, 2020, 12:04 »
Hellraiser, спасибо, попробую.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...