首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QChart初始化会导致异常冲突

QChart初始化会导致异常冲突
EN

Stack Overflow用户
提问于 2021-08-27 16:06:42
回答 1查看 66关注 0票数 1

当我初始化一个QChart时,它会导致一个未处理的异常EXCEPTION_ACCESS_VIOLATION。当其他人试图初始化QChart时,我在Qt论坛上看到了同样的异常违规错误,但是他们的建议并没有为我解决这个问题。他们的建议是确保在Visual的项目属性中,在C++/C > General中包含必要的Qt文件夹(即\include\QtCharts),并在Linker > Input中包含必要的.lib文件(即\lib\Qt5Charts.lib)。我也在使用其他模块,这些模块都被适当地包括了。我在建造释放。

下面是我的代码的清理版本,只包含绝对必要的内容。实际的.cpp文件要大得多。

代码语言:javascript
复制
#include <QPainter>
#include <QPen>
#include <QApplication>
#include <QMainWindow>
#include <QtCharts> // for QScatterPlot
#include <QChartView>
#include <iostream>

int Graphics::OpenGraphic()
{
    char* myargv[1];
    int myargc = 1;
    myargv[0] = strdup("");

    QScatterSeries* redSeries = new QScatterSeries;
    redSeries->append(0, 6);
    redSeries->append(2, 4);
    redSeries->setColor(Qt::red);

    QScatterSeries* blueSeries = new QScatterSeries;
    blueSeries->append(3, 8);
    blueSeries->append(7, 4);
    blueSeries->append(10, 5);
    blueSeries->setColor(Qt::blue);

    QChart* chart = new QChart(); // This causes an Unhandled exception EXCEPTION_ACCESS_VIOLATION at 0x00007FFA1FE24CBC

    chart->addSeries(redSeries);
    chart->addSeries(blueSeries);

    QApplication a(myargc, myargv);
    QMainWindow w;

    //w.setCentralWidget(chartView);
    w.resize(400, 300);

    w.show();

    return a.exec();
}

任何洞察力都是值得赞赏的。这似乎是一个棘手的问题。

编辑:同样,在VS中也没有红色的标签,下划线,QChart或任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-27 16:32:31

您的问题是在创建QChart实例之前创建了QApplication。QApplication的文档声明:,因为QApplication对象进行了如此多的初始化,所以必须在创建与用户界面相关的任何其他对象之前创建它。

https://doc.qt.io/qt-5/qapplication.html#details

要修复将QApplication a(myargc, myargv);行移到QChart *chart = new QChart();上方的问题

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68956451

复制
相关文章

相似问题

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