Russian Qt Forum
Ноябрь 23, 2024, 02:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: много линий на QCanvas  (Прочитано 5749 раз)
piton
Гость
« : Октябрь 16, 2005, 16:25 »

у меня есть довольно большое количество точек, которые нужно последовательно соединить линиями (по сути провести ломаную). использую QCanvas. сейчас я создаю большое количество объектов QCanvasLine, по одному для каждого отрезка.
как можно обойтись в данном случае одним объектом?
потому что количество точек очень большое (сотни тысяч) и создавать тысячи объектов - это несколько неправильно (мягко говоря Улыбающийся ), тем более, что на определенном числе точек, программа просто валится (Segmentation fault).
какого-то объекта позволяющего нарисовать ломаную по заданному массиву я не нашел Грустный
Записан
lepsai
Гость
« Ответ #1 : Октябрь 16, 2005, 18:17 »

QCanvasPolygonalItem Улыбающийся
Записан
piton
Гость
« Ответ #2 : Октябрь 16, 2005, 18:54 »

хм..чего-то я не пойму как он работает..
Код:

QCanvasPolygonalItem* i = new QCanvasPolygonalItem(canvas);

выдает ошибку:
Цитировать

mainform.cpp:145: error:   because the following virtual functions are
   abstract:
/usr/qt/3/include/qcanvas.h:572: error:         virtual QPointArray
   QCanvasPolygonalItem::areaPoints() const
/usr/qt/3/include/qcanvas.h:581: error:         virtual void
   QCanvasPolygonalItem::drawShape(QPainter&)
Записан
lepsai
Гость
« Ответ #3 : Октябрь 16, 2005, 19:23 »

Смешной парень....  Ясен перец, что оно тебе выдаёт ошибку, чисто виртуальную функцию надо бы переопределить. Откуда иначе твоя ххрень знает какие точки рисовать. Вот переопредели  и тады всё запашет.
Записан
piton
Гость
« Ответ #4 : Октябрь 16, 2005, 22:15 »

да ну его фтопку..я уже QCanvasLine переопределил, все прекрасно работает
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 21.