专栏首页CSharp编程大全VS2017中使用QT Chart图表

VS2017中使用QT Chart图表

有关QtChart的介绍在这就不详谈了,想要具体了解的百度就可以,官网和网站大多数都是介绍如何在QtCreator中使用QtChart,而本文主要介绍如何在vs中使用。

使用工具:VS2017+Qt5.13.2

准备工作

首先,安装以下软件:

  1. VS2017.下载安装教程
  2. Qt开发包,最好是qt5.9以上的版本,本篇教程以Qt5.13.2为例讲解
  3. Qt VS Tools插件。
  1. 将上述软件安装完成后,需要在 VS2017中配置QtVSTools插件,具体过程如下:

5.添加环境变量:

创建过程:

1、新建一个Qt的gui工程,一路next

2、打开ui文件,在designer中拖动一个widget,并提升窗口部件为QChartView

3、接下来先不要编译,因为我们还没有把QtChart的库文件包含进来,首先打开项目的属性,注意在添加包含目录的时候,要把QtCharts那个路径添加进去,这样ui文件中提升的那个头文件就不会报错

VC++目录->包含目录->添加:

D:\softsetup\qt5.13.2\5.13.2\msvc2017_64\include\QtCharts

D:\softsetup\qt5.13.2\5.13.2\msvc2017_64\include

库目录:

D:\softsetup\qt5.13.2\5.13.2\msvc2017_64\lib

下面添加附加依赖库:

连接器->输入->添加依赖项:Qt5Chartsd.lib

设置完了之后就可以点击确定,并进行编译,此时编译之后会出现错误,这是因为没有写命名空间:

4、那么我们在添加命名空间的时候不要在ui_xxx.h文件里面进行添加,因为这是自动生成的文件,每一次添加新的控件并编译的时候就把你添加的信息给删除掉,这时我们可以添加到刚开始新建的文件中去,见下图;

如果图中的命名空间不能用,(试过在头文件中不能用),则可以换另外一个:using namespace QtCharts;

此时,再进行编译就不会出现错误

5、然后,我们在这个cpp文件下面,写上简单的函数进行编译运行验证,见图:

自此,构建成功,谢谢!

我踩过的坑,希望大家不要再踩一遍,仔细按照上面的进行,运行不了你找我!

后续探索,有时间写...

全部代码:chartview.cpp

#include "chartview.h"

chartView::chartView(QWidget *parent)
  : QMainWindow(parent)
{
  ui.setupUi(this);
  
}
void chartView::on_pushButton1_clicked()
{
  chartDispaly();
}
void chartView::on_pushButton2_clicked()
{
  initChartView();
}
void chartView::chartDispaly()
{
  QSplineSeries *series = new QSplineSeries();
  for (float i = 0; i < 100; i++)
  {
    series->append(i, sin(0.5*i));
  }
  QChart *chart = new QChart();
  chart->addSeries(series);
  chart->legend()->hide();
  chart->createDefaultAxes();
  chart->setTheme(QChart::ChartThemeDark);
  //方法1
  ui.widget->setChart(chart);
  //方法2
  //QChartView *chartView = new QChartView(chart);
  //chartView->setRenderHint(QPainter::Antialiasing);
  //this->setCentralWidget(chartView);
}

void chartView::initChartView()
{
  QChart *chart2 = new QChart();
  QLineSeries *series = new QLineSeries();
  *series << QPointF(1.0, 1.0) << QPointF(2.0, 73.0) << QPointF(3.0, 268.0) << QPointF(4.0, 17.0)
    << QPointF(5.0, 4325.0) << QPointF(6.0, 723.0);
  chart2->addSeries(series);
  chart2->legend()->hide();//隐藏图例
  chart2->setTitle("Logarithmic axis example");//设置图标标题
  QValueAxis *axisX = new QValueAxis();
  axisX->setTitleText("Data point");
  axisX->setLabelFormat("%im");
  axisX->setTickCount(series->count());
  chart2->addAxis(axisX, Qt::AlignBottom);
  series->attachAxis(axisX);
  QLogValueAxis *axisY = new QLogValueAxis();
  axisY->setTitleText("Values");
  axisY->setLabelFormat("%gkg");
  axisY->setBase(8);
  //axisY->setMinorTickCount(-1);
  chart2->addAxis(axisY, Qt::AlignLeft);
  series->attachAxis(axisY);
  QChartView *chartView = new QChartView(chart2);
  chartView->setRenderHint(QPainter::Antialiasing);
  //connect(series, &QLineSeries::hovered, this, &QtGuiApplication1::showValue);
  this->setCentralWidget(chartView);
}

chartview.h

#pragma once

#include <QtWidgets/QMainWindow>
#include <QtCharts>
#include "ui_chartview.h"

class chartView : public QMainWindow
{
  Q_OBJECT

public:
  chartView(QWidget *parent = Q_NULLPTR);

private:
  Ui::chartViewClass ui;
  void chartDispaly();
  void initChartView();
private slots:
  void on_pushButton1_clicked();
  void on_pushButton2_clicked();
};

github源码地址:https://github.com/zyr365/chartView

本文分享自微信公众号 - CSharp编程大全(y438679770),作者:zls365

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • opencv中滤波函数的介绍和应用

    滤波作用 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪 声(包括高斯噪声、椒盐、噪声、随机噪声等)进行抑制,是图像预 处理中不可缺少的操作,其处理效...

    zls365
  • 归纳一下:C#线程同步的几种方法

     我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态;或者你的程序需要访问一些外部资源如数据库或...

    zls365
  • C# 软件版本号

    //build 等于自当地时间 2000 年 1 月 1 日以来的天数 //revision等于自当地时间午夜以来的秒数/2 // 可以指定所有这些值,也可以使...

    zls365
  • 前沿 | 将逆向课程生成用于强化学习:伯克利新研究让智能体掌握全新任务

    机器之心
  • 安装ovirt4.2极简教程

    (客户端首先设置controller域名C:\Windows\System32\drivers\etc\hosts)

    虚拟化云计算
  • SELINUX工作原理

    Security-Enhanced Linux (SELinux)由以下两部分组成:

    用户5807183
  • SpringBoot Redis 2.0.x

    在笔者之前的文章中有介绍redis的安装,不会的可以去看 笔者之前写的文章redis安装

    tanoak
  • Python的类型提示

    Python 是动态类型的编程语言,这就意味着我们不需要在代码中指定数据类型。但是这么做有时候容易让人困惑,此时灵活性就成为了缺点。

    fem178
  • jmeter组件精简概述

    jmeter是基于java语言的压力测试工具,除了通过命令来执行压测脚本,还提供图形界面功能。用户在图形界面中可以设置“测试计划”、“线程组”、“取样器”、“逻...

    Criss@陈磊
  • Golang学习笔记 数据类型和变量

    数据类型 先来介绍一下Golang的数据类型。 布尔型 bool类型代表逻辑值,有真值true和假值false两种取值。 整数类型 整数类型有如下几种,这些整数...

    乐百川

扫码关注云+社区

领取腾讯云代金券