当我初始化一个QChart时,它会导致一个未处理的异常EXCEPTION_ACCESS_VIOLATION。当其他人试图初始化QChart时,我在Qt论坛上看到了同样的异常违规错误,但是他们的建议并没有为我解决这个问题。他们的建议是确保在Visual的项目属性中,在C++/C > General中包含必要的Qt文件夹(即\include\QtCharts),并在Linker > Input中包含必要的.lib文件(即\lib\Qt5Charts.lib)。我也在使用其他模块,这些模块都被适当地包括了。我在建造释放。
下面是我的代码的清理版本,只包含绝对必要的内容。实际的.cpp文件要大得多。
#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或任何东西。
发布于 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();上方的问题
https://stackoverflow.com/questions/68956451
复制相似问题