Hi Uwe,
Many thanks for the Help, but I am still having problems to get it done. Here is a bit part of the source code:
class ModulationScaleDraw: public QwtScaleDraw
{
public:
ModulationScaleDraw()
{
}
virtual QwtText label(double v) const
{
switch (int(v))
{ case 1: return QString("FM"); break;
case 2: return QString("AM"); break;
case 3: return QString("PM"); break;
case 4: return QString("FA"); break;
case 5: return QString("PA"); break;
case 6: return QString("konst."); break;
case 7: return QString("unbekannt");break;
}
}
private:
QStringList modlabel;
};
Main.cpp:
{
int pos = 0;
const double width = 1.98;
// Klassenbreite: = (x-max - x-min) / (2n)*1/3
// (M_TYPE * ((dMaxX-dMinX) - dMinX))/ (dMaxX -dMinX);
// (dMaxX-dMinX)/(M_TYPE);
// (M_TYPE * ((dMaxX-dMinX) - dMinX))/ (dMaxX -dMinX);
for (int iInterval = 0; iInterval < M_TYPE; iInterval++ )
{
intervals[iInterval] = QwtDoubleInterval(pos, pos + double(width));
switch (iInterval)
{ case M_F : values [0] += fm_value; break;
case M_P : values [1] += am_value; break;
case M_A : values [2] += pm_value; break;
case M_F_A : values [3] += fa_value; break;
case M_P_A : values [4] += pa_value; break;
case M_KEINE : values [5] += c_value; break;
}
pos += width;
}
histo->setData(QwtIntervalData(intervals,values));
histo->attach(plotDiag);
plot->setAxisTitle(QwtPlot::yLeft, " Anzahl ");
plot->setAxisScale(QwtPlot::yLeft, 0.0, iP);
//The system crashed here with following lines. TODO: Find the reasons ????
plotDiag->setAxisScaleDraw(QwtPlot::xBottom, new ModulationScaleDraw());
plotDiag->setAxisLabelAlignment(QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom);
plotDiag->setAxisScale(QwtPlot::xBottom, 1.0, M_TYPE, 1.0);
plotDiag->setAxisMaxMinor(QwtPlot::xBottom, 0);
}
Bookmarks