Название: sizeHint Отправлено: pakulo от Июнь 28, 2007, 08:45 Этот параметр означает рекомендованный размер виджета...
Т.е. если я переопределяют его создавая свой виджет и устанавливаю там return QSize(20, 20); Это не означает что мой виджет будет иметь такой максимальный размер? Название: sizeHint Отправлено: Steven_Orko от Июнь 28, 2007, 09:06 Не значит. Посмотри заодно значение политик QSizePolicy. Там при одних значениях sizeHint() используется, при других игнорируется.
Название: sizeHint Отправлено: Racheengel от Июнь 28, 2007, 09:21 А никто не пробовал делать sizeHint() динамическим? Т.е. чтобы размер виджета менялся при изменениях его контента. У меня такое чувство, что этот хинт корректно применяется только при конструировании виджета, т.к. если я пытаюсь менять его по ходу работы приложения - то размеры виджета остаются прежними...
Название: sizeHint Отправлено: goer от Июнь 28, 2007, 09:34 Может быть.. особенно есл учесть что есть только функция чтения свойства(нет же setSizeHint), то можно интуитивно предположить что функция должна возвращать константу.
Название: sizeHint Отправлено: Racheengel от Июнь 28, 2007, 10:27 похоже, только setFixedSize() спасет отца русской демократии...
Название: sizeHint Отправлено: goer от Июнь 28, 2007, 10:37 Меня еще другое убивает: устанавливаю геометрию для захайденого виджета. Потом показываю его: ширина устанавливается нормально, высота остается неизменной. Хайдю. Показываю снова. Со второго показа наконецто получаю геометрию которую установил.
При этом для тех виджетов что отображаются, установка геометрии работает, НО тостеры ругаются(да я и сам вижу) - уж очень медлено окошко меняет свою геометрию, что приводит к неприятному визуальному восприятию. Так что в каком то смысле при определенных условиях установку геометрии тоже можносчитать одноразовой функцией :))) Название: sizeHint Отправлено: Racheengel от Июнь 28, 2007, 11:17 Ну это уже баг в Qt. надо репортить.
А вообще, с этими политиками размеров они перемудрили. Хватило бы политик fixed, stretched, max, min, ignored. (stretched - это допустим если тебе надо виджеты пропорционально растягивать). И еще, minimum и maximum я бы таки местами поменял - по логике, minimum должен занимать минимум места, а не наоборот. Название: Re: sizeHint Отправлено: CroCIV от Июль 03, 2009, 15:05 А никто не пробовал делать sizeHint() динамическим? Т.е. чтобы размер виджета менялся при изменениях его контента. У меня такое чувство, что этот хинт корректно применяется только при конструировании виджета, т.к. если я пытаюсь менять его по ходу работы приложения - то размеры виджета остаются прежними... Делаем раз: преобразуем нужный виджет на нашей форме в Qt Designerе в собственный класс, порожденный от базового класса щелкнув по нему правой кнопкой миши и выбрав пункт Promote to и задаем ему <имя> делаем два: включаем (создаем) в проект <имя>.h и <имя>.cpp файлы и описываем их по примеру (если у кого-то с этим проблемы): Код: #ifndef QTABLEVIEWVARSIZEHINT_H готово, наслаждаемся виджетом, с манипулируемой функцией sizeHint(). теперь устанавливая переменнею mySizeHint и вызывая функцию adjustSize() у формы владельца виджета с умилением наблюдаем желаемое, т.к. adjustSize() родителя для расположения на своей форме всех дочерних виджетов вызывает у них sizeHint(). Как вариант можно не вводить функцию setSizeHint(QSize newSizeHint) и переменную mySizeHint, а сразу вычислять и выдавать необходимый размер, но такой код мне показался гибче, хоть и вызовов больше. З.Ы.: ура теперь я тоже пишу на Qt, наконец-то!!! |