Название: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 14:21 Я пожалуй начну с самого начала, и расскажу что я хочу сделать. А потом по по пунктам разложу все свои вопросы/проблемы.
Есть список элементов(компьюторы), в базе данных о каждом элементе хранится информация (загрузка ц.п. в опр. момент, использование памяти и т.п.), которую я хочю показать в графике. Количество графиков заранее неизвестно (то есть их придётся создавать во время работы програмы). А теперь проблема с которой я столкнулся, и уже второй день не могу решить: Как указать Qpaint, что рисовать надо на QGraphicsView? Я пробовал сделать так: Код Но в косоли получаю ошибку - QPainter::begin: Paint device returned engine == 0, type: 1 QPainter::setPen: Painter not active Может вместо QGraphicsView лучше использовать другой компонент? И ещё вопрос на будущее: Как лучше рисовать график, собрать все данные в список (list?) и потом из списка рисовать график, или есть какой способ получше(правильнее)? Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: pastor от Декабрь 03, 2009, 14:51 Как-то так:
Код
Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 14:59 viewport() не помог, та же самая ошибка - Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: pastor от Декабрь 03, 2009, 15:31 Вопрос тогда другой, зачем это нужно рисовать на QGraphicsView?
Используй QGraphicsView + QGraphicsScene + QGraphicsItemХ и производи отрисовку непосредственно в QGraphicsItemХ Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 15:39 На данный момент мне нету разницы, QGraphicsView это будет или нет, главное чтобы было удобно. Попробую почитать о QGraphicsScene + QGraphicsItemХ.
Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: pastor от Декабрь 03, 2009, 15:48 Попробуй наследоваться от QGraphicsView и переопределить paintEvent. Он будет выглядеть так:
Код
Но я недумаю что это хорошая идея. ЗЫ: если QGraphicsView не принципиально в использовании, возьми QScrollArea, переопредели paintEvent как я показал выше и рисуй Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 16:37 Что-то у меня ничего не получается ???
Можно подробнее, как и что делать? Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 17:24 что-то я тут намудрил...
вроде всё правильно, только почему-то QGraphicsView вылазит в новом окне( Код
Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Rcus от Декабрь 03, 2009, 17:35 Странно? Нет - работает как и положено
Цитировать QGraphicsView::QGraphicsView ( QGraphicsScene * scene, QWidget * parent = 0 ) Constructs a QGraphicsView and sets the visualized scene to scene. parent is passed to QWidget's constructor. Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 03, 2009, 17:55 Спасибо за подсказку), исправил - view = new QGraphicsView(scene, scrollArea);
Вот только у меня вопрос, правильно ли я делаю? Может можно сделать тоже самое только лучше? Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Rcus от Декабрь 03, 2009, 18:09 Это зависит от... но вообще нужно иметь достаточно веские причины для того чтобы размещать QGraphicsView (потомок QAbstractScrollArea) в QScrollArea.
А еще если вам нужно рисовать графики возьмите лучше Qwt - библиотека качественная, гибкая и достаточно взрослая. Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: Alchazar от Декабрь 04, 2009, 09:28 Qwt смотрел, вот только мне не получилось его установить.
Название: Re: QPaint как рисовать на QGraphicsView? Отправлено: OS2 от Январь 12, 2010, 18:05 2 Alchazar
http://www.prog.org.ru/topic_11760_0.html |