Название: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: billy4685 от Июль 24, 2020, 10:34 Здравствуйте, господа форумчане.
У меня есть окно с тремя кнопками. Всем кнопкам задано свойство sizePolicy и minimumSize, как показано на рисунке 1. Кнопки лежат в QVBoxLayout. Для которого заданы свойства, смотрите рисунок 2. В результате окно имеет вид, рисунок 3 а). Когда я скрываю первую кнопку, с помощью метода setHidden(), остальные две кнопки растягиваются по вертикали (рисунок 3 б)). Как сделать так, чтобы место первой кнопки оставалось не затронутым, и две остальные кнопки не растягивались (рисунок 4). Если использовать QGridLayout, то когда скрываются все виджеты в столбце или строке, место где, лежат виджеты уменьшается на 1 пиксель по строке или столбцу, и этот пиксель добавляется к одному из столбцов или строк лежащих в этой же компановке. Как избавится от этого тоже не нашел пока. Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: Пантер от Июль 24, 2020, 11:02 Используй spacer
Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: billy4685 от Июль 24, 2020, 11:55 Используй spacer Сделал я вместо QVBoxLayout QGridLayout, рядом с первой кнопкой добавил вертикальный spacer (рис. 1). В результате, ситуация обстоит лучше, но все равно, вторая кнопка на пиксель стала больше (рис. 2 - линиями показана данная ситуация: а) до скрытия кнопки, б) - после скрытия кнопки). Как добиться, чтобы место под первый item, где находится первая кнопка в QGridLayout-е не менялся, и все кнопки не меняли своих размеров, после скрытия первой? А как быть с QVBoxLayout или с QHBoxLayout вообще не пойму. Разве, что вместо кнопки бросать в дизайнере spacer, а кнопку в коде потом добавлять. Но это как-то не серьезно. Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: kuzulis от Июль 24, 2020, 13:49 Или засунь виджеты в грид.
Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: Пантер от Июль 24, 2020, 14:08 Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/
Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения Отправлено: billy4685 от Июль 24, 2020, 14:21 Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/ Спасибо, не заметил. Ясно, значит другого решения нет, как добавлять еще один item и бросать туда spacer.Жаль. Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: billy4685 от Июль 24, 2020, 14:29 Или засунь виджеты в грид. Спасибо. Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения Отправлено: Hellraiser от Июль 27, 2020, 16:29 Я же приложил ui файл в котором то поведение, которое тебе нужно. Запустив дизайнере превью и жмякни на кнопку 1/ Спасибо, не заметил. Ясно, значит другого решения нет, как добавлять еще один item и бросать туда spacer.Жаль. Название: Re: Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов? Отправлено: billy4685 от Июль 31, 2020, 12:04 Hellraiser, спасибо, попробую.
|