[gelöst] 'qwt zoomer' inkl. 'AxisAutoScale' möglich?
Verfasst: 26. Februar 2010 16:50
Hallo Qt und Qwt Interessierte,
ich habe aktuell ein Problem mit meinem QwtPlot Widget. Ich habe QwtPlotCurves, die ich variabel hinzufügen und entfernen kann. Zur besseren Darstellung habe ich die Autoskalierung eingeschaltet und dies funktioniert auch sehr gut.
Leider habe ich nach hinzufügen des Qwt Zoomers diese super Funktion leider verloren, denn wenn ich hineinzoome wird natürlich eine andere Skalierung genommen, aber auch beim hinauszoomen wird nicht mehr in die ursprüngliche Auflösung gewechselt, sondern eine von der Zoomer Klasse festgelegt. Zudem funktioniert danach der ganze Autoscale nicht mehr
.
Nun meine Frage: Gibt es eine Möglichkeit beides zu Verbinden? Ich möchte die Autoskalierung nutzen, in eine Kurve hineinzoomen können und wenn ich wieder hinauszoome oder eine neue Kurve hinzufüge wieder in die Autoskalierung wechseln. Geht das? Wenn ja, wie?
Anbei mein aktueller Code aus der Initialisierung, der replot findet an anderer Stelle bei der Selektion einer anzuzeigenden Kurve als slot des signals currentIndexChanged der QComboBox statt:
Vielen Dank schon im Voraus für Eure Hilfe
.
Viele Grüße,
topo
ich habe aktuell ein Problem mit meinem QwtPlot Widget. Ich habe QwtPlotCurves, die ich variabel hinzufügen und entfernen kann. Zur besseren Darstellung habe ich die Autoskalierung eingeschaltet und dies funktioniert auch sehr gut.
Leider habe ich nach hinzufügen des Qwt Zoomers diese super Funktion leider verloren, denn wenn ich hineinzoome wird natürlich eine andere Skalierung genommen, aber auch beim hinauszoomen wird nicht mehr in die ursprüngliche Auflösung gewechselt, sondern eine von der Zoomer Klasse festgelegt. Zudem funktioniert danach der ganze Autoscale nicht mehr
Anbei mein aktueller Code aus der Initialisierung, der replot findet an anderer Stelle bei der Selektion einer anzuzeigenden Kurve als slot des signals currentIndexChanged der QComboBox statt:
Code: Alles auswählen
m_pPlotWidget = new QwtPlot(m_pFrameBackground);
m_pPlotWidget->setCanvasBackground( QColor(0,0,0) );
QwtPlotGrid *grid = new QwtPlotGrid();
grid->setPen( QPen(Qt::gray, 0.0, Qt::DotLine) );
grid->enableX(true);
grid->enableXMin(false);
grid->enableY(true);
grid->enableYMin(false);
grid->attach(m_pPlotWidget);
QFont axisFont("Arial", 10);
m_pPlotWidget->setAxisFont(QwtPlot::yLeft, axisFont);
m_pPlotWidget->setAxisFont(QwtPlot::xBottom, axisFont);
// Enable axis auto scale
m_pPlotWidget->setAxisAutoScale(QwtPlot::xBottom);
m_pPlotWidget->setAxisAutoScale(QwtPlot::yLeft);
m_pPlotWidget->plotLayout()->setAlignCanvasToScales(true);
QwtPlotZoomer* zoomer = new CGuiPlotWidgetZoomer( m_pPlotWidget->canvas() );
#if QT_VERSION < 0x040000
zoomer->setMousePattern(QwtEventPattern::MouseSelect2,
Qt::RightButton, Qt::ControlButton);
#else
zoomer->setMousePattern(QwtEventPattern::MouseSelect2,
Qt::RightButton, Qt::ControlModifier);
#endif
zoomer->setMousePattern(QwtEventPattern::MouseSelect3,
Qt::RightButton);
QwtPlotPanner *panner = new QwtPlotPanner( m_pPlotWidget->canvas() );
panner->setAxisEnabled(QwtPlot::yRight, false);
panner->setMouseButton(Qt::MidButton);
const QColor c(Qt::darkBlue);
zoomer->setRubberBandPen(c);
zoomer->setTrackerPen(c);
Viele Grüße,
topo