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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Библиотека для рисования диаграмм и графиков  (Прочитано 17678 раз)
BRE
Гость
« Ответ #15 : Сентябрь 15, 2010, 22:35 »

Nightmaster
Сразу бросилось в глаза:
Код
C++ (Qt)
int Nightcharts::addPiece(QString name,Qt::GlobalColor color,float Percentage)
{
   pieceNC *piece = new pieceNC;
   ...
   pieces.append(*piece);
}
 
Для чего выделяешь память в куче? Память же течет.
Создавай объект piece на стеке.

И вот сохранение указателя на QPainter в конструкторе...
IMHO, лучше его передавать непосредственно в методы draw/drawLegend.
Иначе, кто-то может передать указатель на рисовальщик в конструкторе, а до вызова draw этот рисовальщик можно успеть удалить.
Также нельзя создать объект класса Nightcharts не указав ему паинтера.
« Последнее редактирование: Сентябрь 15, 2010, 22:45 от BRE » Записан
Nightmaster
Гость
« Ответ #16 : Сентябрь 15, 2010, 22:49 »

Nightmaster
Сразу бросилось в глаза:
Код
C++ (Qt)
int Nightcharts::addPiece(QString name,Qt::GlobalColor color,float Percentage)
{
   pieceNC *piece = new pieceNC;
   ...
   pieces.append(*piece);
}
 
Для чего выделяешь память в куче? Память же течет.
Создавай объект piece на стеке.

И вот сохранение указателя на QPainter в конструкторе...
IMHO, лучше его передавать непосредственно в методы draw/drawLegend.
Иначе, кто-то может передать указатель на рисовальщик в конструкторе, а до вызова draw этот рисовальщик можно успеть удалить.
Также нельзя создать объект класса Nightcharts не указав ему паинтера.

Спасибо большое, действительно варианты хорошие. Без стороннего глаза и не подумаешь что можно подругому Улыбающийся
Кстате там конкретно протекало изначально. Сейчас тоже замечено, хотя вектор очищается в деструкторе. Но на самом деле правильно если подумать использовать везде стеки где это возможно.

« Последнее редактирование: Сентябрь 15, 2010, 22:59 от Nightmaster » Записан
Nightmaster
Гость
« Ответ #17 : Сентябрь 16, 2010, 09:15 »

Обновил : убрал динамическое выделение памяти перед добавлением в вектор.
И теперь указатель на QPainter передается непосредственно  в методы draw/drawLegend.
Следовательно класс можно обьявлять до создания QPainter;

Спасибо BRE
« Последнее редактирование: Сентябрь 16, 2010, 11:15 от Nightmaster » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #18 : Сентябрь 16, 2010, 12:11 »

скрины симпотичные.
Но на аппсах лучше в раздел "Widgets" поместить. Там оно логичнее. ведь это не целая программа
Записан

Юра.
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #19 : Сентябрь 16, 2010, 18:33 »

Нужны были примерно экселевские рисуночки, не нашёл как и многие. Потом написал простенький класс который умеет рисовать гистограму, пирог, и обьёмный пирожок.
Специально Не перегружал замудрёнными методами, может кому пригодится!
Всё очень просто буквально в 10 строк.
Начальный угол можно указывать(если его всё время менять то пирог будет крутится):

P.S Класс только отрисовывает, тоесть считать он не умеет(может добавлю сам).
Когда добавляете кусочки нужно указывать процент(чтобы в сумме было 100).
Например :
PieChart->addPiece("Item1",QColor(200,10,50),20);
PieChart->addPiece("Item2",Qt::green,30);
PieChart->addPiece("Item3",Qt::cyan,50);

http://qt-apps.org/content/show.php/NightCharts%28Draw+Charts%29?content=132560

На вид выглядит довольно сносно имхо.

Как для программиста - выглядит нормально, как для граф. дизайнера - поделка. (Я имею в виду только внешний вид диаграмм.)
Записан
Nightmaster
Гость
« Ответ #20 : Сентябрь 16, 2010, 18:52 »

ну я никаким боком не дизайнер Улыбающийся даже рисовать то не умею. Улыбающийся Всё приличное на Qt стоит денег
« Последнее редактирование: Сентябрь 16, 2010, 18:54 от Nightmaster » Записан
Denjs
Гость
« Ответ #21 : Сентябрь 16, 2010, 21:06 »

vipet,
http://www.ics.com/products/qt/kdgantt/
там же можешь глянуть и диаграммы.
is it free? how much does it costs?
скока денег сиё удовольствие стоит? или таки бесплатна?
Записан
Nightmaster
Гость
« Ответ #22 : Сентябрь 16, 2010, 23:26 »

вот их же KD Charts стоит вроде бы 800 евро
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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