QCharts专题

感觉用下来和qwt差不多,没什么难度

但是群里大佬都发话了,吐槽qchart不行,虽然还是不肯定,还是尽量用qcustomplot

记一个今天遇到的问题  曲线用QLineSeries 不要用QSplineSeries,QSplineSeries加载得超级慢!!!!!!

 

//开始

-------------------------------------------------------------------------------------------------------------------------------------------------

三个东西组成

QChartView类  QChart类  线段 QLineSeries类 

QLineSeries->QChart->QChartView里         ->指放入

//直接复制一段函数,直接可以设置样式和显示曲线了

    pressure_chart->addSeries(pressure_line_series);
    pressure_chart->addSeries(mark_line_series);

    pressure_chart->createDefaultAxes(); // 基于已添加到图表的 series 来创建默认的坐标轴
    qchart_view->setChart(pressure_chart);
    qchart_view->setRubberBand(QChartView::NoRubberBand);
    qchart_view->setRenderHint(QPainter::Antialiasing);//抗锯齿渲染
    qchart_view->chart()->setTheme(QChart::ChartThemeBlueCerulean);

    pressure_line_series->setUseOpenGL(true);//openGl 加速
    pressure_line_series->setVisible(true);
    mark_line_series->setUseOpenGL(true);//openGl 加速
    mark_line_series->setVisible(true);

    axisX = new QValueAxis(this);
    axisX->setRange(0, Axis_X_Maxsize);
    axisX->setLabelFormat("%d");

    axisX->setTickCount(9);//设置大刻度
    axisX->setMinorTickCount(0); //设置小刻度线的数目(两个大刻度之间的小刻度数目)
                                 //axisX->setTitleText("axisX");

    QValueAxis *axisY = new QValueAxis;
    axisY->setRange(Axis_Y_Minsize, Axis_Y_Maxsize);
    axisY->setLabelFormat("%.1f");
    //axisY->setTitleText("axisY");

    pressure_chart->setAxisX(axisX, pressure_line_series);
    pressure_chart->setAxisY(axisY, pressure_line_series);

    pressure_chart->setAxisX(axisX, mark_line_series);
    pressure_chart->setAxisY(axisY, mark_line_series);

    pressure_chart->legend()->hide();
    //m_chart->createDefaultAxes();


    //曲线颜色
    pressure_line_series->setPen(QPen(QColor(199, 199, 0), 1, Qt::SolidLine));//设置画笔
    mark_line_series->setPen(QPen(QColor(255, 255, 255),2, Qt::SolidLine));

    //画布颜色
    //pressure_chart->setBackgroundBrush(QColor(64, 70, 76));
    //坐标轴字体以及颜色
    axisX->setLabelsColor(QColor(255, 255, 255));
    axisY->setLabelsColor(QColor(255, 255, 255));

    QFont font_x = axisX->labelsFont();
    QFont font_y = axisY->labelsFont();
    font_x.setFamily(QString::fromLocal8Bit("微软雅黑"));
    font_y.setFamily(QString::fromLocal8Bit("微软雅黑"));
    font_x.setPixelSize(12);
    font_y.setPixelSize(12);
    axisX->setLabelsFont(font_x);
    axisY->setLabelsFont(font_y);

-----------------------------------------------------------------------------------------

说个问题,点击QChart想获取坐标轴x值 找了很久没找到

然后通过鼠标事件 得到鼠标在QChartView上的坐标

再用QChart的这个函数直接可以得到坐标轴!!!!

QPointF point_new=pressure_chart->mapToValue(point);

 

//补充 或者当前坐标轴的最大最小值

ui.qchart_view->chart()->axisX())->min();

 

//之后能用qchart尽量用qchart吧 尽量替代qwt (现在又用qcustomplot代替qchart了。。哈哈)

 

//填充区域

 

QAreaSeries area_series = new QAreaSeries(line_series, nullptr);  //第一个参数为上线 第二个是线 没有默认x轴

具体要看我的控件库

还是万能的一句话 将准备好的 都准备好

位置问题 100%正确

2020.7.14 今天窗口设置小了 chart显示不全 直接设置下布局就好了

    qchart->setMargins(QMargins(0, 0, 0, 0);    
    qchart->layout()->setContentsMargins(0,0,0,0);   
    qchart->layout()->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);   
    qchart->layout()->setMinimumHeight(1);
    qchart->layout()->setMinimumWidth(1);

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值