Problem bei Umstellung auf QwtPolar-1.0.0

Alles rund um die Programmierung mit Qt
Antworten
LotB
Beiträge: 15
Registriert: 4. Mai 2011 18:26

Problem bei Umstellung auf QwtPolar-1.0.0

Beitrag von LotB »

Guten Tag,

ich habe kürzlich mein Programm von QwtPolar-0.1.0 auf Version 1.0.0 umgestellt ( natürlich habe ich auch Qwt-6.0.1). Da hat sich ja die Klasse Qwt_data verändert bzw. ist ersetzt worden und nach einigem Hin und Her habe ich mein Programm auf QwtSeriesData umstellen können. Dabei habe ich mich an das mitgelieferte Beispiel gehalten. Meine Data-Klasse sieht dementsprechend so aus:

Code: Alles auswählen

class Data: public QwtSeriesData<QwtPointPolar>
{
public:
    Data(const QwtDoubleInterval &radialInterval,
         const QwtDoubleInterval &azimuthInterval, size_t size, double* yarray, double* xarray):
        d_radialInterval(radialInterval),
        d_azimuthInterval(azimuthInterval),
        d_size(size)
    {
        yValues = yarray;
        xValues = xarray;
    }

    virtual QwtPointPolar sample( size_t i ) const
    {
        return QwtPointPolar( xValues[i], yValues[i] );
    }

    virtual QRectF boundingRect() const
    {
        if ( d_boundingRect.width() < 0.0 )
            d_boundingRect = qwtBoundingRect( *this );

        return d_boundingRect;
    }

    virtual size_t size() const
    {
        return d_size;
    }

private:
    QwtDoubleInterval d_radialInterval;
    QwtDoubleInterval d_azimuthInterval;
    size_t d_size;
    double *yValues,
    *xValues;
};
Versuche ich aber damit eine Messung durchzuführen bleibt der Debugger an folgender Zeile hängen:
Bild

Ich habe keine Ahnung woran das liegen könnte, da ich das neue Konzept noch nicht so recht verstehe.
Bin für jede Hilfe dankbar!

LotB
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Re: Problem bei Umstellung auf QwtPolar-1.0.0

Beitrag von Uwe »

Ich würde mal vermuten, dass es den Speicher hinter yarray/xarray ( oder sogar das komplette Interface Objekt ) nicht mehr gibt.

Uwe
LotB
Beiträge: 15
Registriert: 4. Mai 2011 18:26

Re: Problem bei Umstellung auf QwtPolar-1.0.0

Beitrag von LotB »

Ich kann dir leider nicht ganz folgen. Wie gesagt, unter Version 0.1 von QwtPolar lief es und ich habe die Erzeugung und die Zuweisung der Daten nicht verändert. Ein Aufruf sieht so aus:

Code: Alles auswählen

Data *PlotData = new Data(*radialInterval, *azimuthInterval, size, yValues, xValues);
Curve->setData(PlotData);
Ich habe lediglich die Data-Klasse angepasst.
Ist die Methode "virtual QRectF boundingRect() const" von mir richtig abgeleitet worden? Oder muss ich da irgendwelche problemspezifischen Werte zurückgeben?

LotB
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Re: Problem bei Umstellung auf QwtPolar-1.0.0

Beitrag von Uwe »

Dein Datenobjekt kopiert die Arrays nicht sondern merkt sich nur dessen Adressen. Ob die Adressen zum Zeitpunkt des Absturzes noch gültig sind geht aus Deinem geposteten Code nicht hervor.

qwtBoundingRect iteriert über die Samples und verwendet dafür Deine Methode Data::sample(). Viele Möglichkeiten dabei abzstürzen - ausser freigegebenem Speicher oder einem falschen Wert in d_size - gibt es dabei eigentlich nicht.

Uwe
Antworten