Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Caduceus от Сентябрь 26, 2009, 11:39



Название: Все-таки как сделать сплиттер равноширинным
Отправлено: Caduceus от Сентябрь 26, 2009, 11:39
Я уже задавал этот вопрос, после всех ответов пришел к дурацкому решению задать горизонтальные растяжки виждетов, которые в сплиттере как 5 и 8 (да-да и это дало одинаковые ширины). Перерь интерфейс расширяю, все сползло и 5-8 уже не помагают.

Вот такое у меня как на картинке. У выделенных виджетов параметры все одинаковые. У групп кнопок тоже все одинаковые. Вообще левая и правая части отличнаютсят олько количеством кнопок наверху ну и самими катсомными виджетами. НИКАК не хочет делаться одинаковыми две части сплиттера, хоть убейся. Мож кто подскажет?


Название: Re: Все-таки как сделать сплиттер равноширинным
Отправлено: Igors от Сентябрь 26, 2009, 12:43
Я решал это так
Код:
QList <int> size;
size.append(100);
size.append(100);
splitter->setSizes(size);
Можно и др. значения вместо 100, сплиттеру нужны соотношения размеров, а не их абсолютные значения. Иначе он пытается их сам вычислить и если слева на кнопку меньше - ну значит дадим там и места меньше


Название: Re: Все-таки как сделать сплиттер равноширинным
Отправлено: Caduceus от Сентябрь 26, 2009, 12:51
ВООО!!!!!

ОГРОМНОЕ СПАСИБО. Помогло!!!!!!!!!!


Название: Re: Все-таки как сделать сплиттер равноширинным
Отправлено: SABROG от Сентябрь 26, 2009, 13:00
Ты приаттачил .ui'шник,  где у виджетов разные факторы растягивания плюс разные настройки у лэйаутов. Это к слову. Пришлось всё сбрасывать, чтобы увидеть проблему.

Но логика тут простая:

29 - ширина кнопок
40 - ширина пружины
0 - фактор растягивания
4 - количество контролов с левой стороны
2 - количество контролов с правой стороны

((29*4)+40)*0 = 156 - ширина для левой стороны
((29*2)+40)*0 = 98 - ширина для правой стороны

156/98 = 1,6 - некий коэффициент того, что левая сторона больше правой в 1,6 раза

Почему это не настраивается через дизайнер - вопрос.


Название: Re: Все-таки как сделать сплиттер равноширинным
Отправлено: _OLEGator_ от Сентябрь 26, 2009, 13:13
Могу предположить почему это не настраивается в дизайнере:
может быть просто потому, что сплиттер может содержать больше 2х виджетов и соотношения размеров как раз и задаются в setSizes(const QList<int> & list), а случай 2х виджетов просто является частным :)

Сам делал аналогичным способом, как и Igors.


Название: Re: Все-таки как сделать сплиттер равноширинным
Отправлено: Caduceus от Сентябрь 26, 2009, 13:22
Всем спасибо. Все понял.
Убеждаюсь еще раз что не все, что задумал можно нарисовать в дизайнере.