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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Qt 4.5] QSplitter в Designer  (Прочитано 9325 раз)
White Owl
Гость
« : Март 03, 2009, 20:45 »

1) Можно ли, и если можно то как, задать относительные размеры виджетов внутри QSplitter когда рисуешь диалог в designer?
Понимаю что можно это сделать в программе, но...

2) В Qt3 был метод QSplitter::setResizeMode(), чем его заменили в Qt4?
Записан
Rcus
Гость
« Ответ #1 : Март 03, 2009, 21:27 »

1. sizePolicy -> H/V Stretch. /*Assistant -> stretch factor*/
2. Assistant -> QSplitter -> Qt 3 Support Members.
Записан
White Owl
Гость
« Ответ #2 : Март 04, 2009, 23:29 »

Ok.... читаю про stretch factor и ничего не понимаю! Слишком там все кратко и всего с одним примером.
Вот прикладываю ui над которым я издеваюсь.
Как в нем, не выходя из Дизайнера задать что отношение левой части (с деревом) к правой (с группой виджетов внутри лайута) должно быть 1:5? Чтобы uic при генерации ui_test.h написал что-то в духе:
splitter->setSizes(QList<int> <<1 <<5);

В главе Porting from Qt 3 to Qt 4, в описании изменений в QSplitter написано:
Цитировать
The function setResizeMode() has been moved into Qt3Support. Set the stretch factor in the widget's size policy to get equivalent functionality.
Спрашивается, как именно надо задать эти самые size policy если я хочу получить тот же эффект, что в Qt3 после: splitter->setResizeMode(treeWidget, QSplitter::KeepSize)Непонимающий Что я туда не ставлю - размер виджета все равно меняется при изменении размеров диалога.
Записан
Rcus
Гость
« Ответ #3 : Март 05, 2009, 09:15 »

1. см. приложение.
На второй вопрос ответ есть по указаниям, но чтобы не мучить вас разыменованием приведу прямую ссылку http://doc.trolltech.com/4.5/qsplitter-qt3.html#setResizeMode
Записан
White Owl
Гость
« Ответ #4 : Март 05, 2009, 20:36 »

ага... с дизайнером понял. Вы превратили правую часть сплитера из QVBoxLayout в QWidget которому уже можно поставить цифру в stretch factor. Нуууу... в принципе, работает. Хотя оно в итоге конфликтует с моей второй проблемой.
За прямую ссылку спасибо, чувствую что я бы ее еще долго искал.
В итоге решил поставить в своем диалоге stretch factor в 0 и 1 соответсвенно чтобы запретить дереву самопроизвольно расти, а начальные размеры виджетов внутри сплиттера буду задавать уже в коде. Получилось такое:
Код:
MyDialog::MyDialog(QWidget *parent) : QDialog(parent) {
   setupUi(this);
   splitter->setSizes(QList<int>() << 1 << 5);
   splitter->restoreState(settings->value("splitter").toByteArray());
   .... etc
}
По хорошему, эти самые начальные размеры должны бы быть отдельной пропертью у QSplitter, но увы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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