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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по sizePolicy  (Прочитано 6931 раз)
Simba
Гость
« : Октябрь 04, 2010, 15:30 »

Есть два виджета, объединенных сплиттером. После применения компоновщика они встают одинаково по горизонтали.
Мне нужно чтобы соотношение между левым виджетом и правым виджетом было примерно 1:4 при показе диалога.
Я согласен даже установить левому виджету размер 200 пикселей по горизонтали, но при этом когда я растягиваю окно, должен растягиваться только правый виджет, а левый оставался в первоначальном размере.

Сейчас все варианты, которые я перепробовал не дают мне установить ни соотношение виджетов, ни размер.
Если установить горизонтальное растяжение, то при изменении размера оба виджета начинают менять размер, а я хочу, чтобы первый виджет реагировал только на сплиттер и ни на что больше.

Помогите! Уже на раз сталкиваюсь с подобной конструкцией интерфейса и всё время приходится в коде попиксельно выставлять Грустный
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Октябрь 04, 2010, 16:05 »

setMinimumWidth(200), setMaximumWidth(200)
Записан

Qt 5.11/4.8.7 (X11/Win)
Kolobok
Гость
« Ответ #2 : Октябрь 04, 2010, 16:10 »

Код:
ui->splitter->setStretchFactor( 0, 0 );
ui->splitter->setStretchFactor( 1, 1 );
ui->splitter->setSizes( QList<int>() << 200 << 800 );
Записан
Simba
Гость
« Ответ #3 : Октябрь 04, 2010, 16:35 »

спасибо за ответы!
хотелось бы конечно, чтобы всё это регулировалось в design-time
StretchFactor можно, а вот начальный размер виджета похоже нет Грустный

Я надеялся, что sizePolicy "Preferred" берет значение из baseSize. А остальные виджеты подстраиваются под это. Было бы не плохо. Но... нет. Значит буду писать в коде.
Записан
whirlwind
Гость
« Ответ #4 : Октябрь 04, 2010, 17:46 »

Я согласен даже установить левому виджету размер 200 пикселей по горизонтали, но при этом когда я растягиваю окно, должен растягиваться только правый виджет, а левый оставался в первоначальном размере.

В дизайнере тоже можно такое сделать

1) horizontal size solicy у левого виджета должна быть Maximum, у правого Expanding
2) у левого поставить maximum Width 200

Вроде все так и будет.

Записан
Simba
Гость
« Ответ #5 : Октябрь 04, 2010, 21:12 »

whirlwind
Если так сделать, то сплиттер работать перестанет.
Он всё время пытается сделать так, чтобы виджеты были одинаковыми справа и слева,
и свойство expanding правого виджета действует лишь в правую сторону. Поиграл с sizePolicy сплиттера - тоже ничего.
Не могу я никак подружиться с кьютишным компоновщиком Грустный
Придется в коде прописывать, как товарищи советовали. В принципе и раньше так делал, но думал есть готовый вариант в дизайнере.
Записан
whirlwind
Гость
« Ответ #6 : Октябрь 05, 2010, 11:19 »

 Крутой
Вот в этом проектике так сделано, и вроде работает
Один виджет не больше 200 пикселей, второй растет. Размеры виджетов менять можно (но левый не больше 200, как и сказали)
Записан
CL0NE
Гость
« Ответ #7 : Октябрь 06, 2010, 02:24 »

Цитировать
В дизайнере тоже можно такое сделать

1) horizontal size solicy у левого виджета должна быть MaximumMinimum, у правого Expanding
и вместо
Цитировать
2) у левого поставить maximum Width 200
у левого поставить horizontal stretch 0, у правого - 1
Идеальных 200 пикселей нет, но по требованиям:
изменить размер левого виджета можно только при помощи сплиттера, при изменении размеров окна расширяется/сужается только окно
вроде бы оно Улыбающийся
« Последнее редактирование: Октябрь 06, 2010, 08:15 от CL0NE » Записан
UVV
Гость
« Ответ #8 : Октябрь 06, 2010, 07:49 »

QSizePolicy::Ignored
?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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