Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: QwtUser от Апрель 21, 2016, 15:37



Название: Пиктограммы на QwtPlot
Отправлено: QwtUser от Апрель 21, 2016, 15:37
Подскажите, пожалуйста, как на графике нарисовать пиктограммы (картинки) вместо точек. QwtSymbol содержит несколько стандартных стилей, которые без проблем можно отобразить. но вот как отобразить вместо точки с определенными координатами иконку из файла ??? ??? ???
PS используется qwt5


Название: Re: Пиктограммы на QwtPlot
Отправлено: __Heaven__ от Апрель 21, 2016, 15:42
По идее наследоваться от QwtSymbol и переопределять renderSymbols (QPainter *, const QPointF *, int numPoints)


Название: Re: Пиктограммы на QwtPlot
Отправлено: QwtUser от Апрель 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 работает отлично, с наследованным не хочет.  ??? что в нем надо еще доопределить?


Название: Re: Пиктограммы на QwtPlot
Отправлено: __Heaven__ от Апрель 22, 2016, 15:40
В 6 нет StyleCnt, попробуйте его передавать в конструктор QwtSymbol. Думаю, что у вас в метод не заходит из-за NoSymbol. Хотя, странно, что при встраивании всё работает...


Название: Re: Пиктограммы на QwtPlot
Отправлено: QwtUser от Апрель 22, 2016, 15:52
__Heaven__ спасибо Вам! :)
добавила в конструктор
Код
C++ (Qt)
setStyle(QwtSymbol::StyleCnt);
и пошла отрисовка


Название: Re: Пиктограммы на QwtPlot
Отправлено: __Heaven__ от Апрель 22, 2016, 16:30
Код
C++ (Qt)
class MySymbol : public QwtSymbol
{
public:
MySymbol()
           : QwtSymbol(QwtSymbol::StyleCnt)
{};
       ....
}

Попробуйте лучше так. Избавит от потенциальных проблем.