QChart小示例

QChart类管理图表系列、图例和轴的图形表示。

QChart是一个你可以在qgraphicscene中显示的qgraphicswwidget。它管理不同类型的级数和其他图表相关对象(如图例和轴)的图形表示。要在布局中简单地显示图表,可以使用方便类QChartView代替QChart。此外,可以使用QPolarChart类将直线、样条、区域和散点序列表示为极坐标图。

    QChart *chart=new QChart();

    QCategoryAxis *axisy=new QCategoryAxis();
    axisy->setMin(0);
    axisy->setMax(100);
    axisy->setStartValue(0);    //值的起始位置
    axisy->append("10",10);
    axisy->append("20",20);
    axisy->append("30",30);
    axisy->append("40",40);
    axisy->append("50",50);
    axisy->append("60",60);
    axisy->append("70",70);
    axisy->append("80",80);
    axisy->append("90",90);
    axisy->append("100",100);

    QCategoryAxis *axisx=new QCategoryAxis();
    axisx->setMin(0);
    axisx->setMax(100);
    axisx->setStartValue(0);    
    axisx->append("10",10);
    axisx->append("20",20);
    axisx->append("30",30);
    axisx->append("40",40);
    axisx->append("50",50);
    axisx->append("60",60);
    axisx->append("70",70);
    axisx->append("80",80);
    axisx->append("90",90);
    axisx->append("100",100);


    chart->setAxisY(axisy);	//y轴
    chart->setAxisX(axisx); //x轴
    //chart->createDefaultAxes(); //基于已添加到图表中的序列为图表创建轴。

    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);    //抗锯齿

16、示例1

折线图加散点图,当鼠标放到点上时通过QToolTip::showText来显示提示内容

	QChart *chart=new QChart();
    QCategoryAxis *axisy=new QCategoryAxis(this);
    //axisy->setGridLineColor(QColor(255,0,0));
    axisy->setMin(0);
    axisy->setMax(100);
    axisy->setStartValue(0);    //值的起始位置
    axisy->append("0",0);
    axisy->append("10",10);
    axisy->append("20",20);
    axisy->append("30",30);
    axisy->append("40",40);
    axisy->append("50",50);
    axisy->append("60",60);
    axisy->append("70",70);
    axisy->append("80",80);
    axisy->append("90",90);
    axisy->append("100",100);
    axisy->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
    axisy->setTickCount(10);

    QCategoryAxis *axisx=new QCategoryAxis(this);
    axisx->setMin(0);
    axisx->setMax(100);
    axisx->setStartValue(0);
    axisx->append("0",0);
    axisx->append("10",10);
    axisx->append("20",20);
    axisx->append("30",30);
    axisx->append("40",40);
    axisx->append("50",50);
    axisx->append("60",60);
    axisx->append("70",70);
    axisx->append("80",80);
    axisx->append("90",90);
    axisx->append("100",100);
    axisx->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
    axisx->setTickCount(10);

    //线
    QLineSeries *lineSeries=new QLineSeries(this);
    QList<QPointF> pos;
    pos<<QPointF(0.,30.)<<QPointF(10,60)<<QPointF(20,10)<<QPointF(30,90)<<QPointF(40,30)<<QPointF(50,40)<<QPointF(60,60)<<QPointF(70,30)<<QPointF(80,60)<<QPointF(90,20);
    lineSeries->append(pos);

    //散点
    QScatterSeries *scatterSeries=new QScatterSeries(this);
    scatterSeries->setBorderColor(QColor(0,255,0));
    scatterSeries->setMarkerSize(10);
    scatterSeries->append(pos);



    lineSeries->setName("折线图");
    chart->addSeries(lineSeries);
    chart->addSeries(scatterSeries);
    chart->setAxisX(axisx);
    chart->setAxisY(axisy);


    //自己绘制的x,y轴需要额外设置下面两句,否则线和轴对不准,在chart设置完x,y轴之后加
    lineSeries->attachAxis(axisx);
    lineSeries->attachAxis(axisy);

    scatterSeries->attachAxis(axisx);
    scatterSeries->attachAxis(axisy);

    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);    //抗锯齿

    connect(scatterSeries,&QScatterSeries::hovered,this,[this](const QPointF &point, bool state){
        if(state)
        {
            QString str=QString("%1,%2").arg(point.x()).arg(point.y());
            QToolTip::showText(QCursor::pos(),str,this);
        }
    });

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值