У меня есть диаграмма QT с осями обычного значения. Когда я переключаю флажок, я хочу изменить ось X с QValueAxis на QLogValueAxis. Проблема в том, что когда я это делаю, мои данные больше не отображаются в правильной точке.
Я попробовал два подхода (и несколько вариантов к ним), чтобы заставить масштабирование журнала работать, но не то, что я пробовал, похоже, что сами шкалы данных вписываются в окно линейно и игнорируют журнал ось полностью.
Подход 1 - Заменить старую ось:
QLogValueAxis* xLogAxis = new QLogValueAxis();
xLogAxis->setBase(10);
xLogAxis->setMinorTickCount(10);
dataSeries->attachedAxes()[0] = xLogAxis; //Replace the old X Axis on the series
chart->setAxisX(xLogAxis);
Подход 2 - Создайте совершенно новую диаграмму:
chart->removeSeries(data); //release the data so you don't destroy it
QChart* newChart = new QChart();
ui->graphView->setChart(newChart); //Swap the old chart out then delete it
delete chart;
chart = newChart;
//get rid of the old axes on the data
for(QAbstractAxis* axis : data->attachedAxes()){
data->detachAxis(axis);
}
QValueAxis* yAxis = new QValueAxis();
data->attachAxis(xLogAxis);
data->attachAxis(yAxis);
chart->addAxis(xLogAxis, Qt::AlignBottom);
chart->addAxis(yAxis, Qt::AlignLeft);
chart->addSeries(data);
chart->legend()->setVisible(false);
Есть какие-нибудь идеи о том, как выполнить горячую замену оси журнала во время выполнения? Заранее спасибо!