Ошибка Qt Chart: ASSERT: "width> 0.0" в файле painting \ qrasterizer.cpp, строка 761 - PullRequest
0 голосов
/ 24 мая 2018

Я получил ошибку при использовании QValueAxis в QtCharts:

ASSERT: "ширина> 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 Ответ

0 голосов
/ 24 мая 2018

Как говорит ошибка:

ASSERT: "ширина> 0,0"

Вам нужно значение больше нуля.

Также QBarSet::append,

void QBarSet :: append (const qreal value)

ожидает значение qreal или double.

Возможно, вы хотитечтобы установить 0.1 изначально:

set->append(0.1);
...