首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt图表错误: painting\qrasterizer.cpp文件中的断言:“宽度> 0.0”,第761行

Qt图表错误: painting\qrasterizer.cpp文件中的断言:“宽度> 0.0”,第761行
EN

Stack Overflow用户
提问于 2018-05-24 08:00:16
回答 1查看 483关注 0票数 0

我在QValueAxis中使用QtCharts时出错了

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

QBarSet值都是0时,就会发生这种情况。

下面我有一个包含最小必要代码的示例:

代码语言:javascript
复制
#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。如下所示:

代码语言:javascript
复制
for(auto it = map.cbegin(); it != map.cend(); ++it) {
    set->append(it.value());
}

当程序启动时,QMap会启动如下内容:

代码语言:javascript
复制
QMap(("First", 0)("Second", 0)...)

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

那么,当QBarSet值全部初始化到0时,如何避免此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 08:19:16

正如错误所言:

断言:“宽度> 0.0”

你需要一个大于零的值。

还有QBarSet::append

无效QBarSet::追加(const qreal值)

期望有一个qrealdouble值。

也许您希望最初将其设置为0.1

代码语言:javascript
复制
set->append(0.1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50504031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档