Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ Как нарисовать ломаную векторную линию?

Автор: Shef 18.12.2009, 8:31

Здравствуйте! Есть виджет, нужно нарисовать на нем ломаную линию из векторов, по точкам, и чтобы к каждой точке подходила стрелка, ну и соответственно стереть её как нибудь если нужно... Как ето сделать, подскажите пожалуйста?

Автор: Litkevich Yuriy 18.12.2009, 10:57

лучше всего такие вещи делать высосокуровнево - с помощью http://doc.crossplatform.ru/qt/4.4.3/graphicsview.html

Автор: Гость 20.12.2009, 9:44

привеодится такой исходный код в справке по Qpainter:

void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
}

я его вставляю в методы одного из виджетов, описываю в заголовочном файле... что мне паписать в main.cpp чтобы он на виджете нарисовал етот текст? как вообще применяется QPaintEvent в етом методе? Откуда он берется? Что он представляет? Или ето ОСь его отправляет?

Автор: Litkevich Yuriy 20.12.2009, 13:04

Цитата(Гость_Гость_* @ 20.12.2009, 12:44) *
я его вставляю в методы
рисование на QWidget и его наследниках, в обычном случае, возможно только в событии рисования paintEvent(QPaintEvent *)

Цитата(Гость_Гость_* @ 20.12.2009, 12:44) *
то мне паписать в main.cpp чтобы он на виджете нарисовал етот текст?
ничего, нужно скопировать этот пример в твой виджет

Цитата(Гость_Гость_* @ 20.12.2009, 12:44) *
Откуда он берется? ... Или ето ОСь его отправляет?
да это события посылает ОСь, точнее сказать - оконный менеджер

Посмотри описание http://www.doc.crossplatform.ru/qt/4.4.3/qwidget.html#paintEvent

Автор: Гость 20.12.2009, 13:51

Спасибо! Можете на пример ссылочку дать, где можно посмотреть, как рисовать ломаные прямые, сохраняя прежние, рисовать следующие, и ,если нужно, то удалять предыдущие?

Автор: Litkevich Yuriy 20.12.2009, 15:35

совсем простого примера нет, есть демки рисования с помощью "http://www.doc.crossplatform.ru/qt/4.4.3/qt4-arthur.html":
demos\pathstroke может тебе подойдёт

Но вообще Артур, достаточно низко уровневая вещь, посмотри в сторону "http://www.doc.crossplatform.ru/qt/4.4.3/graphicsview.html"

Автор: Litkevich Yuriy 20.12.2009, 21:47

вот ещё примерчик - http://www.doc.crossplatform.ru/qt/4.6.x/graphicsview-diagramscene.html

Автор: Гость 20.12.2009, 23:16

Спасибо, разобрался... В список ложу каждую линию, и вывожу весь лист каждый раз при вырисовке... только вот проблема и удалением линий... нужно знать, где каждая линия лежит в списке...

Автор: ViGOur 20.12.2009, 23:25

А зачем тебе знать какая линия и где лежит? Думаю будет достаточно и того, что ты знаешь линию по каким координатам тебе нужно удалить. А затем просто пробежаться по вектору, найти эту линию и удалить.

Автор: trdm 21.12.2009, 1:10

Цитата(Litkevich Yuriy @ 20.12.2009, 21:47) *
вот ещё примерчик - http://www.doc.crossplatform.ru/qt/4.6.x/graphicsview-diagramscene.html
глючный пример кстати. Я сначала обрадовался, думал набросаю себе кой-чего, потом потестил пример и плюнул..

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)