由于在linux 实现了一套自定义BarChart, 它本身继承自QChart
class BarChart : public QChart
{
Q_OBJECT
public:
explicit BarChart(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = 0);
~BarChart();
};
后来依据实际需要, 要将此项目移植到windows + vs2019 + Qt5.15.2下, 然后编译项目过程中就产生了如下问题。
缺少分号“;” 意外的分号“:”
“QtCharts::QtCharts::QtCharts::QtCharts::std::bad_weak_ptr::what”: 包含重写说明符“override”的方法没有重写任何基类方法
“QtCharts::QtCharts::QAbstractBarSeries”: 未定义基类
刚开始是有点懵逼, 寻思linux能编译过, QCharts编译本身就是跨平台兼容的, 不应该出错才对。
#include <QtCharts/QtCharts>
求助 请问 VS2019配完了qt的库,只要include QtCharts还会报错可以怎么解决
参考这两位博客, 此类问题最终就是没找到对应正确的QCharts。我们可以通过如下思路解决QCharts某种变化过程中导致问题。
我的最终版本解决就是添加此 。
#pragma comment(lib, "Qt5Charts.lib")
初步猜想可能是找到库位置不对, 导致release 版本下编译过程中, 找的qtchart不对。
#include <QObject>
#if unix
#include <QChart>
#else
#include <QtCharts/QtCharts>
#pragma comment(lib, "Qt5Charts.lib")
#endif
#include <QtCharts/QChartGlobal>
#include <QtCharts/QBarSet>
#include <QtCharts/QAbstractAxis>
#include <QtCharts/QBarCategoryAxis>
#include <QtCharts/QValueAxis>
#include <QtCharts/QBarSeries>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QChartView>
QT_BEGIN_NAMESPACE
QT_CHARTS_USE_NAMESPACE
class BarChart : public QChart
{
Q_OBJECT
public:
explicit BarChart(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = 0);
~BarChart();
};
QT_END_NAMESPACE