У меня есть qwt plot, вот простой пример с QWtPlotZoomer. Масштабирование работает, но масштабирование обратно сбросит масштаб до 0-1000, вместо оригинальной шкалы.qwt уменьшить масштаб с неправильным ответом
Я попытался решить эту проблему с (в чем разница между этими линиями?)
zoomer->setZoomBase(false);
zoomer->zoom(0);
но это не имеет никакого эффекта. Что нужно сделать, чтобы получить правильную начальную шкалу для масштабирования? Тривиальное решение заключается в реализации Zoomer после присоединения кривого, но в реальном примере работы, которая не применяется:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QDebug>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_plot_zoomer.h>
#include <vector>
using std::vector;
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QwtPlot * plot = new QwtPlot();
plot->setAxisAutoScale(QwtPlot::xBottom);
plot->setAxisAutoScale(QwtPlot::yLeft);
QwtPlotZoomer *zoomer;
zoomer = new QwtPlotZoomer(QwtPlot::xBottom, QwtPlot::yLeft, plot->canvas());
// create data
vector<double> x(100);
vector<double> y1(x.size());
for (size_t i = 0; i< x.size(); ++i) { x[i] = int(i)-50; }
for (size_t i = 0; i< y1.size(); ++i) { y1[i] = pow(double(abs(i-50))/10,2); }
// first curve
QwtPlotCurve *curve = new QwtPlotCurve();
curve->setRawSamples(&x[0], &y1[0], x.size());
curve->attach(plot);
zoomer->setZoomBase(false);
zoomer->zoom(0);
plot->replot();
QMainWindow window;
window.setCentralWidget(plot);
window.resize(800, 600);
window.show();
return a.exec();
}
Я понимаю, что 'setZoomBase' необходим, и я применил его в своем коде. Однако мне не хватает причины, по которой для этого требуется doReplot = true. –