0

QValueAxis在使用时出现错误QtCharts

断言:文件绘画\qrasterizer.cpp 中的“宽度 > 0.0”,第 761 行

QBarSet值为 all时会发生这种情况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. 然后程序将由于该错误而崩溃。那么,当值全部启动

时,我怎样才能避免这个错误呢?QBarSet0

4

1 回答 1

1

正如错误所说:

断言:“宽度 > 0.0”

您需要一个大于零的值。

还有QBarSet::append

void QBarSet::append(const qreal 值)

期望一个qrealdouble值。

也许您想将其设置为0.1最初:

set->append(0.1);
于 2018-05-24T08:19:16.720 回答