QChart的简单应用

前言

在做项目的时候需要用折线图来体现数据的变化,于是就用到了QChart,下面是我在使用QChart时遇到的一些问题,在此记录。

准备工作

项目配置

因为我们这个项目是用cmake来构建的,所以在已经敲定用QChart的时候,首先遇到的第一个问题就是cmake如何使用QChart。

于是在我去搜的时候,发现网上大部分都是qmake使用QChart,cmake相关的很少,所以在此记录一下cmake如何添加QChart到自己的项目中去。

在CMakeLists.txt文件中添加下面两行代码即可。

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Charts)
target_link_libraries(SpinalAnesthesiaPuncture PRIVATE Qt${QT_VERSION_MAJOR}::Charts)

显示窗口

注意:窗口的基类必须是QGraphicsView,并且将该窗口提升为QChartView。一开始我用的是普通的QWidget,效果死活出不来。。。

折线图

下面有一个需要注意的地方

QChart的setAxisX()方法已经被遗弃了,如果非要用效果是在的,但是qt一直会提醒你该方法已经被遗弃,我觉得那个很烦,换成attachAxis()方法,但是这个方法是QLineSeries的,别搞错喽。

 //    chart->setAxisX(axisX, series);
    //    chart->setAxisY(axisY, series);
    series->attachAxis(axisX);
    series->attachAxis(axisY);
  //    chart->setAxisX(axisX, series);
    //    chart->setAxisY(axisY, series);
    series->attachAxis(axisX);
    series->attachAxis(axisY);

源码如下

void NavigationManageForm::creatChart()
{
    chart = new QChart();
    // 将图例隐藏
    chart->legend()->hide();
    // 创建默认的坐标系为笛卡尔坐标系
    chart->createDefaultAxes();
    // 设置图表标题
    chart->setTitle(QStringLiteral("压力传感器数据折线图"));
    //背景色显示隐藏
    chart->setBackgroundVisible(false);
    // 创建图表框架,QChartView是QChart的视图组件,用来显示 
    view = new QChartView(this);
    view->setChart(chart);
    view->setRenderHint(QPainter::Antialiasing);

    // 创建折线图序列
    series = new QLineSeries();
    //添加数据绘制,可以改为动态化
    series->append(0, 2);
    series->append(QPointF(2, 6));
    series->append(3, 8);
    series->append(7, 9);
    series->append(11, 3);
    series->setColor(QColor(0, 163, 255));
    chart->addSeries(series);
    // 绘图时对线条进行设置
    QPen pen;
    pen.setStyle(Qt::DotLine);
    QValueAxis* axisY = new QValueAxis;
    axisY->setGridLinePen(pen);
    //刻度线是否可见
    axisY->setLineVisible(false);
    //设置主网格线
    axisY->setGridLineVisible(true);
    axisY->setLinePenColor(QColor(44, 51, 62));
    //设置x,y轴标签
    axisY->setLabelsVisible(false);

    axisY->setGridLineColor(QColor(44, 51, 62));
    //    axisY->setTickCount(2);
// 次网线格
    axisY->setMinorTickCount(1);
    axisY->setMinorGridLinePen(pen);
    axisY->setMinorGridLineVisible(true);
    axisY->setMinorGridLineColor(QColor(44, 51, 62));

    //创建坐标轴
    QValueAxis* axisX = new QValueAxis;
    axisX->setGridLineVisible(false);
    axisX->setLineVisible(false);
    axisX->setLabelsVisible(false);
    axisX->setMinorGridLineVisible(false);

    chart->addAxis(axisX, Qt::AlignBottom); //下:Qt::AlignBottom  上:Qt::AlignTop
    chart->addAxis(axisY, Qt::AlignLeft); //左:Qt::AlignLeft    右:Qt::AlignRight

    //    chart->setAxisX(axisX, series);
    //    chart->setAxisY(axisY, series);
    series->attachAxis(axisX);
    series->attachAxis(axisY);
//你要放到哪个窗口让它显示出来
    ui->graphicsView->setChart(chart);
}

效果图

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值