QtCharts移植报错

发布时间:2024年01月22日

文章目录

目的

由于在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还会报错可以怎么解决

#include <QtCharts>头文件报错

参考这两位博客, 此类问题最终就是没找到对应正确的QCharts。我们可以通过如下思路解决QCharts某种变化过程中导致问题。

  • pro 文件中加入 QT += charts (前提是你安装qt过程中安装的chart模块)
  • QT_CHARTS_USE_NAMESPACE 宏定义添加
  • #include <QtCharts/QtCharts> 头文件包含
  • #pragma comment(lib, “Qt5Charts.lib”)

我的最终版本解决就是添加此 。

#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
文章来源:https://blog.csdn.net/liunanya/article/details/135749470
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。