Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ratita от Январь 12, 2011, 20:35



Название: Система координат, QGraphicsView
Отправлено: ratita от Январь 12, 2011, 20:35
Ребят, добрый вечер!
Подскажите пожалуйста, как мне добавить к сцене систему координат (отрисовать) для графика? Двухмерную, то есть оси (x, y) и сетку.
Можно по тупому отрисовать 2 оси и линии для сетки, или как-нибудь с помощью QRect. Но это, я догадываюсь, как чесать левой ногой правое ухо  :-\


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 12, 2011, 20:50
Я бы тоже тупо рисовал линии. Однако, на мой взгляд ( у меня есть некоторый опыт отрисовки спектров с девайсов Painter-ом и  работы с QGraphicsView для пользовательского интерфейса), QGraphicsView для графиков не предназначен и не подходит. QPainter-ом на виджете будет проще и накладных расходов меньше.


Название: Re: Система координат, QGraphicsView
Отправлено: alexman от Январь 12, 2011, 21:09
QGraphicsView для графиков не предназначен и не подходит.
???


Название: Re: Система координат, QGraphicsView
Отправлено: xokc от Январь 12, 2011, 21:12
QGraphicsView для графиков не предназначен и не подходит.
Почему? Вопрос без тени иронии. Поскольку реализовывал отрисовку спектра и целой кучи примочек поверх графика (шкалы, полупрозрачные слайдеры, прокрутки и т.п.) на базе набора наследников от QWidget с реализацией собственного Layout. Отрисовывал всё с помощью painter. Получилось достаточно громоздко в плане объема кода и с определенными проблемами в плане производительности, впрочем в конце концов побежденными. Следующую инкарнацию собирался рефакторить в сторону именно QGraphicsView, заменив свои QObject на QGraphicsItem. Чем это может грозить? Пока на первый поверхностный взгляд код мог бы получиться компактнее. В чём будут проблемы?


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 12, 2011, 21:36
Я бы тоже тупо рисовал линии. Однако, на мой взгляд ( у меня есть некоторый опыт отрисовки спектров с девайсов Painter-ом и  работы с QGraphicsView для пользовательского интерфейса), QGraphicsView для графиков не предназначен и не подходит. QPainter-ом на виджете будет проще и накладных расходов меньше.
Я рисую грaфики в QGraphicsView, покa мeня всe устрaивaeт. Возможно, ключeвоe слово 'покa' )
Знaчит, рисовaть по тупому? И цифры у дeлeний тожe вручную выстaвлять? Хмм..


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 12, 2011, 21:47
QGraphicsView для графиков не предназначен и не подходит.
???
А что вас удивляет? Название класса? Так Graphics  - это не график в математике, а графика. График/чертеж - это Plot.


Название: Re: Система координат, QGraphicsView
Отправлено: alexman от Январь 12, 2011, 21:52
QGraphicsView для графиков не предназначен и не подходит.
???
А что вас удивляет? Название класса? Так Graphics  - это не график в математике, а графика. График/чертеж - это Plot.
Так в чем проблема накидать рисовку графиков, используя каркас QGraphics?


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 12, 2011, 22:09
2 xokc
Мне на ум пришло воспоминание об одном религиозном деятеле, который сказал мне "Мол, докажи, что бога нет!". На что был справедливо послан подальше, т.к. невозможно доказать то, чего нет. Доказывать же надо существование.

Так и тут. Показать то, чего нет я не могу. Зато , по своему опыту, могу сказать что 2-d график с масштабированием и со стеком предыдущих состояний - это один .H и один .CPP файл размером 10-15 кб.

Как может облегчить тут жизнь GraphicsView я не представляю. Конечно если ко мне подойдут с ножом к горлу, то я и asci графикой нарисую.
пи.си. По поводу QObject я не понял. Зачем в графике какие-то QObject?
пи.пи.си  В приложении тройка скриншотов макета программы работающей со спектрами. График помнит предыдущие состояния, масштабируется мышью, адекватно ведет себя при ресайзе виджета. Размер plotter.cpp - 12 кб.  


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 12, 2011, 22:14
2 alexman
Проблемы нет. Просто и преимуществ нет. Так зачем платить больше?


Название: Re: Система координат, QGraphicsView
Отправлено: alexman от Январь 12, 2011, 22:23
2 alexman
Проблемы нет. Просто и преимуществ нет. Так зачем платить больше?
ХЗ...на счет больше есть сомнение ;)


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 13, 2011, 13:55
Я вам тут не мешаю?  ;D


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 13, 2011, 14:53
Я вам тут не мешаю?  ;D
Да нет,  не мешаете. Присаживайтесь тут с краешку. :)


Название: Re: Система координат, QGraphicsView
Отправлено: xokc от Январь 13, 2011, 21:05
пи.си. По поводу QObject я не понял. Зачем в графике какие-то QObject?
Ну я же писал про шкалы, полупрозрачные слайдеры, прокрутки и т.п. Они-то и есть наследники от QObject. Короче, см. приложение.


Название: Re: Система координат, QGraphicsView
Отправлено: Sancho_s_rancho от Январь 13, 2011, 23:34
2 xokc
Выглядит красиво.


Название: Re: Система координат, QGraphicsView
Отправлено: xokc от Январь 14, 2011, 19:19
Итого: стоит ли в будущем переписывать это дело под GraphicsView или лучше оставить как есть?


Название: Re: Система координат, QGraphicsView
Отправлено: alexman от Январь 14, 2011, 20:41
Переписка ради переписки, наверное, не стоит свеч. Но если будет развитие в будущем, то возможно и стоит... Ведь каркас QGraphics... для граф-их приложений и разработан.


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 15, 2011, 15:23
Рeбят, eсли уж пошлa тaкaя пьянкa, думaю, вaм нe сложно будeт нeвзнaчaй отвeтить нa тупой вопрос: кaк добaвлять тeкст в создaнный rectangle (всe происходит в QGraphicsScene)? И почeму вот это нe прокaтывaeт:
QPainter painter(this);
QRectF textRect(0,0,4,4);
painter.drawRect(textRect);
painter.drawText(textRect, message);

o.O 


Название: Re: Система координат, QGraphicsView
Отправлено: BRE от Январь 15, 2011, 16:12
А какой текст ты хочешь уместить в область 4x4 точки?


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 15, 2011, 16:20
2 цифры ) 4 нa 4 от бaлды нaписaлa, нe в этом суть


Название: Re: Система координат, QGraphicsView
Отправлено: BRE от Январь 15, 2011, 16:25
Ты поподробней напиши, что делаешь...
Что значит "создaнный rectangle"? Это объект твоего класса расположенный на сцене? QGraphicsScent это просто контейнер объектов
Где пытаешься рисовать с помощью QPainter?


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 15, 2011, 16:39
Зaдaчa - в опрeдeлeнной точкe вывeсти тeкст. В оригинaлe это обознaчeниe нaчaлa координaт у грaфикa.
В моeм прeдстaвлeнии процeсс выглядит тaк: выдeляeм прямоугольник и тудa выводим тeкст. Но кaк я понимaю у QGraphicsScene в функции addText по умолчaнию тeкст лeпится в (0, 0). Его можно кaк-то подвинуть?
Извиняюсь зa скомкaнность, я новичeк-сaмоучкa (


Название: Re: Система координат, QGraphicsView
Отправлено: BRE от Январь 15, 2011, 17:35
QGraphicsTextItem * QGraphicsScene::addText ( const QString & text, const QFont & font = QFont() )
Этот метод добавляет объект класса QGraphicsTextItem на сцену и возвращает указатель на этот объект.
Посмотри в документации, что умеет объект данного класса, с учетом возможностей базовых классов.
Там есть и
void QGraphicsItem::moveBy ( qreal dx, qreal dy )
и
void QGraphicsItem::setX ( qreal x )
void QGraphicsItem::setY ( qreal y )

 :)


Название: Re: Система координат, QGraphicsView
Отправлено: Igors от Январь 15, 2011, 18:12
OT: где-то читал и застряло в памяти. Очень давно, поэтому за точность цитаты не ручаюсь

Цитировать
Ну вот сломалась у меня машина. Я выхожу, открываю капот и поправляю  прическу. Через 2 минуты появляется самец вооруженный плоскогубцами.. "О, нет-нет, мадам, позвольте, это дело мужчин" и.т.д.


Название: Re: Система координат, QGraphicsView
Отправлено: ratita от Январь 15, 2011, 19:49
*поправляя прическу
что поделать, некоторые вещи женскому мышлению не подвластны  ;)

BRE, теперь понятнее. спасибо большое!