Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: _Vitaliy_ от Май 18, 2010, 18:07



Название: график функции как отдельный объект
Отправлено: _Vitaliy_ от Май 18, 2010, 18:07
Доброго времени суток.
Есть задача: на форме выводится несколько графиков функций, как сделать так чтобы "мышкой" можно было передвигать графики отдельно друг от друга, например по одной из осей?
Немного знаю qwt, если направление помощи будет в сторону QPainter тоже думаю разберусь.
В идеале необходимо:
1. слева вертикальная ось со своим масштабом + вправо график функции и так для каждого графика;
2. графики функций располагаются сверху вниз.
3. ось х (время) для всех общая.     


Название: Re: график функции как отдельный объект
Отправлено: _Vitaliy_ от Май 18, 2010, 21:10
Не зря говорят: "... задаешь вопрос а через 5 минут сам находишь ответ...".
Смотреть нужно в сторону QGraphicsView, по крайней мере у Шлее я нашел в примерах и вроде подходит.
Код:
...
QGraphicsLineItem* fLineItem =
            scene.addLine(QLineF(100, 100, 200, 200), QPen(Qt::green, 3));
fLineItem->setFlags(QGraphicsItem::ItemIsMovable);
...
осталось только в цикле addLine подставлять свои значения...

но как заставить LineItem двигаться ТОЛЬКО по вертикали при перемещении "мышкой"?


Название: Re: график функции как отдельный объект
Отправлено: White Owl от Май 18, 2010, 21:36
но как заставить LineItem двигаться ТОЛЬКО по вертикали при перемещении "мышкой"?
Для рисования графиков наверное будет удобнее использовать потомка от QGraphicsPathItem.
В нем перехватить setPos() и занулять горизонтальную координату перед вызовом родительского метода.

А еще можно перехватить мышиные события у потомка QGraphicsScene и делать движение объектов вручную.


Название: Re: график функции как отдельный объект
Отправлено: _Vitaliy_ от Май 19, 2010, 07:23
спасибо, будем пробовать...


Название: Re: график функции как отдельный объект
Отправлено: BaltikS от Май 19, 2010, 12:14
Лучше посмотреть на метод QGraphicsItem::itemChange. В Ассистенте написан пример кстати говоря по поводу ограничений перемещения...