Название: выдвигающееся меню Отправлено: quietness от Декабрь 06, 2010, 12:42 Доброго времени суток, уважаемые!
Помогите, пожалуйста, решить такую проблемку или укажите направление. В главном окне есть QToolBox, в нем QCommandLinkButton. Все красиво, все работает. Но вот место теряется. Поэтому хочется сделать по-взрослому. Чтобы QToolBox задвигался влево и потом в случае необходимости выдвигался обратно. Подскажите, пожалуйста, как его задвинуть? Название: Re: выдвигающееся меню Отправлено: deaks от Декабрь 06, 2010, 12:55 картинку в студию)
Название: Re: выдвигающееся меню Отправлено: quietness от Декабрь 06, 2010, 13:11 (http://xmage.ru/thumbs/clipboard2.jpg) (http://xmage.ru/?v=clipboard2.jpg)
сбоку белое - это QTableView, QSqlQueryModel которого временно отключена Название: Re: выдвигающееся меню Отправлено: deaks от Декабрь 06, 2010, 13:38 и вам надо, чтобы тулбокс менялся по ширине?
Название: Re: выдвигающееся меню Отправлено: quietness от Декабрь 06, 2010, 13:46 нет, чтоб он полностью задвигался влево, оставляя маленькое ушко. нажав на которое он бы обратно выдвигался
Название: Re: выдвигающееся меню Отправлено: GreatSnake от Декабрь 06, 2010, 14:26 А чем QSplitter не подходит?
Название: Re: выдвигающееся меню Отправлено: quietness от Декабрь 06, 2010, 14:33 у QToolBox размеры фиксированные и изменятся не должны, тем самым исключается возможность ручного изменения размера путем перетаскивания границы мышкой.
Название: Re: выдвигающееся меню Отправлено: GreatSnake от Декабрь 06, 2010, 15:43 Ну, тогда можно справа от toolbox-a поместить узкую кнопку, по нажатию на которую прятать/показывать toolbox.
Название: Re: выдвигающееся меню Отправлено: quietness от Декабрь 06, 2010, 16:23 Всем спасибо, задача решена
GreatSnake, именно так и поступила и через цикл плавное вдвигание и выдвигание. Название: Re: выдвигающееся меню Отправлено: Drafter от Декабрь 06, 2010, 20:22 Можете копнуть глубже и воспользоваться QPropertyAnimation, чтобы двигать панельку с ускорением-замедлением (или, например, заставить её выпрыгивать как мячик).
что-нибудь вроде: Код: QPropertyAnimation *anim = new QPropertyAnimation(toolBox, "geometry"); Название: Re: выдвигающееся меню Отправлено: quietness от Декабрь 07, 2010, 08:51 Drafter, спасибо, сейчас попробую
Название: Re: выдвигающееся меню Отправлено: SABROG от Декабрь 07, 2010, 11:06 Если углубиться в эту тему, то получается, что вариантов реализации как минимум 3:
1. Изменение ширины виджета до 0 для симуляции скрытия 2. Скроллинг (QWidget::scroll()) виджета за область видимости без изменения его ширины 3. Выдвигающийся виджет (опять QWidget::scroll()), который находится поверх всех виджетов У варианта 1 существенный недостаток - ширину можно уменьшить только до размеров рекомендуемого sizeHint(), к тому же видно как содержимое виджета "сплющивается" и постоянно пересчитывает расположения виджетов внутри скрываемой панели. У варианта 2 недостатком является то, что вслед за скроллируемой панелью перемещается и другой виджет (QTableView), но при этом его ширина остается прежней из-за чего с правой стороны появляется незанятая, пустая область, которую, по логике, должен был занять QTableView после перепросчета QLayout'ом. Но scroll() не вызывает этого перепросчета, а если его вызвать насильно через layout()->update(), то скроллинг сбрасывается и виджеты занимают свои старые позиции. Насчет возможности реализации варианта 3 с помощью стандартных средств Qt есть сомнения. Тут нужно как минимум 2 слоя компановщиков: нижний - с виджетами и верхний, который будет растягивать и прилеплять панель к левой стороне виджета. Такое вообще возможно, например сделать 2 одинаковых QGridLayout'a в каждом из которых будет свой набор виджетов и которые будут работать параллельно друг на друге в порядке Z очереди? Update: Надо посмотреть в сторону QStackedLayout, может через него такое замутить получиться. Update 2: Мышиные клики не проходят через страницы в режиме StackAll. |