Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: ElderOrb от Октябрь 27, 2005, 10:32 Я пишу класс для рисования графиков (по некоторым причинам Qwt мне не подходит). Появилась мысль использовать QGridLayout (3x3), в коий разместить ось x, ось y, горизонтальный скролер, вертикальный скролер и в центре - собственно QScrollArea. Проблема в том, что скроллеры принадлежат QScrollArea и отрисовываются внутри её, тогда как мне нужно снаружи. Я попробовал сделать следующее:
Код:
.. в результате добился того, что скролеры занимают желаемое мной положение во время ресайза. Когда же ресайз заканчивается они перепрыгивают назад во внутрь QScrollArea и то криво. Вопрос: можно ли принципиально вынести скролеры за пределы QScrollArea, и если да - каким наиболее простым способом это можно сделать? Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: ElderOrb от Октябрь 27, 2005, 11:58 Если кому интересно, решил проблему следующим образом: те скролеры, которые показывает QScrollArea я спрятал, в нужных мне местах разместил свои скролеры и связал свои с невидимыми QScrollArea-вскими через
connect(hor, SIGNAL(valueChanged(int)), scrollArea->horizontalScrollBar(), SLOT(setValue(int))); и т.п. Может и кривовато зато работает ж) Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: QCasper от Октябрь 27, 2005, 21:58 Кстати по поводу QScrollArea - наследую свой класс от вышеупомянутого, рисую какой-нить хлам в paintEvent и хочу его скролить, скрольные бегунки бегают, а эффекта никакого. Как вообще к своему собсному виджету скролы добавить? Причем имеется ввиду не потом добавить, а сделать его со скролами
Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: ElderOrb от Октябрь 28, 2005, 10:17 Цитировать рисую какой-нить хлам в paintEvent - в каком paintEvent ? QScrollArea-вском, или в виджэете, который в эту QScrollArea вставлен? Если первый случай - то ничего путного и не должно получиться. Нужно как-то так: 1. создать QScrollArea 2. создать класс, унаследованный от QWidget 3. передать QScrollArea указатель на виджэт 4. в виджэте перегрузить paintEvent и отрисовывать там всё что пожелается Полосы прокрутки будут появляться автоматически в зависимости от размеров QScrollArea и виджэта. p.s. Если лениво ради одного paintEvent-а делать подкласс QWidget-а, можно воспользоваться installEventFilter Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: QCasper от Октябрь 28, 2005, 20:05 нет, так наверное не покатит, я хочу сделать компонент, к примеру, который картинки отображает, и чтобы он сразу шел со скролами
Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: ElderOrb от Октябрь 29, 2005, 12:42 Отлично покатит, и вот тому пример: http://qt4.digitalfanatics.org/articles/zoomer.html
Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: QCasper от Октябрь 29, 2005, 14:19 Цитата: "ElderOrb" Отлично покатит, и вот тому пример: http://qt4.digitalfanatics.org/articles/zoomer.html Я видимо неудачно объяснил. Я создал компонент. Теперь некий Вася берет и тупо бросает его в Qt Designer'e на форму и все, он сразу со скролами, которые корректно работают, а не в теле главной программы скролл создавать. Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: ElderOrb от Октябрь 29, 2005, 17:32 Не вопрос! Этот компонент будет содержать в себе QScrollArea и наследник от QWidget-а. В чём, собственно, проблема?
Название: Qt 4.0.1 - Изменение положения scroller-ов QScrollArea Отправлено: QCasper от Октябрь 29, 2005, 19:58 А я еще видел реализацию где компонент наследуется от QScrollArea и благодаря этому все работает, только вот какие методы QScrollArea (QAbstractArea) надо перегрузить чтобы все как надо работало, а то если просто унаследовать то скроллы появляются, но от них никаких понтов.
|