Ошибка Qt Chart: ASSERT: "width > 0.0" в файле painting\qrasterizer.cpp, строка 761
Я получил ошибку при использовании QValueAxis
в QtCharts
:
ASSERT: "width> 0.0" в файле painting\qrasterizer.cpp, строка 761
Это происходит, когда QBarSet
все значения 0
,
У меня есть этот пример с минимально необходимым кодом ниже:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QChart *chart = new QChart;
QBarSeries *series = new QBarSeries(chart);
QBarSet *set = new QBarSet("BarSet", series);
series->append(set);
QValueAxis *valueAxisX = new QValueAxis(chart);
QChartView *chartView = new QChartView(chart);
for(int i = 0; i < 24; ++i) {
set->append(0); //error
//if I set like set->append(1) or anything just to make sure the values are not all 0, there will be no error.
}
chart->addSeries(series);
chart->setAxisX(valueAxisX, series);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(420, 300);
window.show();
return a.exec();
}
Моя программа будет инициировать QBarSet
динамически от QMap
, Как это:
for(auto it = map.cbegin(); it != map.cend(); ++it) {
set->append(it.value());
}
И QMap
запускается примерно так при запуске программы:
QMap(("First", 0)("Second", 0)...)
Иногда QMap
не будет добавлять значения из-за использования программы, то все QBarSet
значения будут инициированы в 0
, Затем программа завершится сбоем из-за этой ошибки.
Так как я могу избежать этой ошибки, когда QBarSet
все значения инициируются 0
?
1 ответ
Как говорит ошибка:
ASSERT: "ширина> 0.0"
Вам нужно значение больше нуля.
Также QBarSet::append
,
void QBarSet:: append (const qreal value)
ожидает qreal
или же double
значение.
Возможно, вы хотите установить его на 0.1
первоначально:
set->append(0.1);