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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Пиктограммы на QwtPlot  (Прочитано 4193 раз)
QwtUser
Гость
« : Апрель 21, 2016, 15:37 »

Подскажите, пожалуйста, как на графике нарисовать пиктограммы (картинки) вместо точек. QwtSymbol содержит несколько стандартных стилей, которые без проблем можно отобразить. но вот как отобразить вместо точки с определенными координатами иконку из файла Непонимающий Непонимающий Непонимающий
PS используется qwt5
« Последнее редактирование: Апрель 21, 2016, 16:18 от QwtUser » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Апрель 21, 2016, 15:42 »

По идее наследоваться от QwtSymbol и переопределять renderSymbols (QPainter *, const QPointF *, int numPoints)
Записан
QwtUser
Гость
« Ответ #2 : Апрель 22, 2016, 15:30 »

используется Qwt5, поэтому такого метода нет
наследуюсь от QwtSymbol, переопределяю virtual void    draw (QPainter *p, const QRect &r) const. но видимо этого не достаточно, сюда даже не заходит и не хочет рисовать (brush, pen, size установлено; style тоже, правда не знаю что в данном случае надо устанавливать, в qwt6 есть UserStyle, а в qwt5?)

Код
C++ (Qt)
class MySymbol : public QwtSymbol
{
public:
MySymbol(){};
virtual ~MySymbol() {};
 
virtual QwtSymbol* clone() const { return new MySymbol();};
virtual void draw(QPainter* painter, const QRect& r) const;
};

дальше реализуется метод draw.. и далее в основной программе:

Код
C++ (Qt)
 MySymbol symbol;
 symbol.setStyle(QwtSymbol::Star1); //???
 symbol.setBrush(QBrush(QColor(0xFF, 0x00, 0xEC)));
 symbol.setPen(QPen(QColor(0xE5, 0x19, 0x19)));
 symbol.setSize(QSize(7, 7));
 
 QwtPlotCurve *crv;
 crv = new QwtPlotCurve;
 crv->setSymbol(symbol);

со стандартным QwtSymbol работает отлично, с наследованным не хочет.  Непонимающий что в нем надо еще доопределить?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Апрель 22, 2016, 15:40 »

В 6 нет StyleCnt, попробуйте его передавать в конструктор QwtSymbol. Думаю, что у вас в метод не заходит из-за NoSymbol. Хотя, странно, что при встраивании всё работает...
Записан
QwtUser
Гость
« Ответ #4 : Апрель 22, 2016, 15:52 »

__Heaven__ спасибо Вам! Улыбающийся
добавила в конструктор
Код
C++ (Qt)
setStyle(QwtSymbol::StyleCnt);
и пошла отрисовка
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Апрель 22, 2016, 16:30 »

Код
C++ (Qt)
class MySymbol : public QwtSymbol
{
public:
MySymbol()
           : QwtSymbol(QwtSymbol::StyleCnt)
{};
       ....
}

Попробуйте лучше так. Избавит от потенциальных проблем.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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