【问题标题】:Qt chart error: ASSERT: "width > 0.0" in file painting\qrasterizer.cpp, line 761Qt 图表错误:ASSERT: "width > 0.0" in file painting\qrasterizer.cpp, line 761
【发布时间】:2023-03-28 16:25:02
【问题描述】:

QtCharts 中使用QValueAxis 时出现错误:

ASSERT: "width > 0.0" in file painting\qrasterizer.cpp, line 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();
}

我的程序将从QMap 动态启动QBarSet。像这样:

for(auto it = map.cbegin(); it != map.cend(); ++it) {
    set->append(it.value());
}

当程序启动时,QMap 会被初始化成这样:

QMap(("First", 0)("Second", 0)...)

有时QMap会因为程序的使用而不会加值,那么所有QBarSet的值都会被初始化为0。然后程序将由于该错误而崩溃。

那么,当QBarSet 值全部初始化为0 时,如何避免这个错误呢?

【问题讨论】:

  • @codekaizer 这就是我得到的所有错误。仅此而已,没有其他细节,没有别的。
  • @codekaizer 两种方法都试过了,错误依然存在
  • @BTW,该错误仅在所有QBarSet 为0时显示,可能有问题。

标签: c++ qt qchar


【解决方案1】:

正如错误所说:

断言:“宽度 > 0.0”

您需要一个大于零的值。

还有QBarSet::append

void QBarSet::append(const qreal value)

需要 qrealdouble 值。

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

set->append(0.1);

【讨论】:

  • 啊,也许这是唯一的方法。 ://
猜你喜欢
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多