日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qchart折现图_Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qchart折现图_Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

若該文為原創文章,未經允許不得轉載

各位讀者,知識無窮而人力有窮,要么改需求,要么找專業人士,要么自己研究

敬請期待…

紅胖子,來也!

介紹了整體框架,開始動手碼代碼,按照順序,從折線圖開始。

QCharts所有的圖表都依賴《Qt開發技術:QCharts(一)QCharts基本介紹以及圖表框架詳解》中的QChart、QChartView、QLegend、QValueAxis。

QQ群:1047134658(點擊“文件”搜索“qChartsTools”,群內與博文同步更新)

QLineSeries類以折線圖的形式顯示數據。

折線圖用于將信息顯示為由直線連接的一系列數據點。

QLineSeries類以折線圖的形式顯示數據。

折線圖用于將信息顯示為由直線連接的一系列數據點。

創建基本折線圖:

// 方式一:逐一添加,大批量數據較慢

QLineSeries* series = new QLineSeries();

series->append(0, 6);

series->append(2, 4);

...

chart->addSeries(series);

效率更高的方式為:

_pLineSeries = new QLineSeries;

_pLineSeries2 = new QLineSeries;

_pLineSeries3 = new QLineSeries;

_pLineSeries4 = new QLineSeries;

QList listLine;

listLine.append(_pLineSeries);

listLine.append(_pLineSeries2);

listLine.append(_pLineSeries3);

listLine.append(_pLineSeries4);

for(int index = 1; index < 4; index++)

{

QList listPointF;

for(int index = 0; index < 11; index++)

{

listPointF << QPointF(index, qrand()%11);

}

listLine.at(index)->append(listPointF);

listLine.at(index)->setName(QString("通道%1").arg(index+1));

listLine.at(index)->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));

// 通用:將批量數據插入到圖表中

_pChart->addSeries(listLine.at(index));

}

注意:樣條曲線圖的QLineSeries類的使用請參考QXYSeries的使用。

QLineSeries類以折線圖的形式顯示數據。

折線圖用于將信息顯示為由直線連接的一系列數據點。

QXYSeries類是折線圖、樣條曲線圖、散點圖的基類,QSplineSeries、QLineSeries、QScatterSeries都參照該類使用。

LineChartWidget::LineChartWidget(QWidget *parent) :

QWidget(parent),

_pChartView(0),

_pChart(0),

_pXValueAxis(0),

_pYValueAxis(0),

_pLegend(0),

_pLineSeries(0),

_pLineSeries2(0),

_pLineSeries3(0),

_pLineSeries4(0)

{

_pChartView = new QChartView(this);

_pChart = new QChart();

initData();

}

void LineChartWidget::resizeEvent(QResizeEvent *event)

{

if(_pChartView)

{

_pChartView->setGeometry(rect());

}

}

void LineChartWidget::initData()

{

_pLineSeries = new QLineSeries;

_pLineSeries2 = new QLineSeries;

_pLineSeries3 = new QLineSeries;

_pLineSeries4 = new QLineSeries;

// 方式一:逐一添加,大批量數據較慢

_pLineSeries->append(0, qrand()%11);

_pLineSeries->append(1, qrand()%11);

_pLineSeries->append(2, qrand()%11);

_pLineSeries->append(3, qrand()%11);

_pLineSeries->append(4, qrand()%11);

_pLineSeries->append(5, qrand()%11);

_pLineSeries->append(6, qrand()%11);

_pLineSeries->append(7, qrand()%11);

_pLineSeries->append(8, qrand()%11);

_pLineSeries->append(9, qrand()%11);

_pLineSeries->append(10, qrand()%11);

_pLineSeries->setName("通道1");

_pLineSeries->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));

// 通用:將數據插入到圖表中

_pChart->addSeries(_pLineSeries);

// 方式二:逐一添加,大批量數據較慢

QList listLine;

listLine.append(_pLineSeries);

listLine.append(_pLineSeries2);

listLine.append(_pLineSeries3);

listLine.append(_pLineSeries4);

for(int index = 1; index < 4; index++)

{

QList listPointF;

for(int index = 0; index < 11; index++)

{

listPointF << QPointF(index, qrand()%11);

}

listLine.at(index)->append(listPointF);

listLine.at(index)->setName(QString("通道%1").arg(index+1));

listLine.at(index)->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));

// 通用:將批量數據插入到圖表中

_pChart->addSeries(listLine.at(index));

}

// 通用:X軸和Y軸的處理(先插入數據再處理軸,否則不會有軸)

_pChart->createDefaultAxes();

_pYValueAxis = dynamic_cast(_pChart->axisY());

_pYValueAxis->setRange(0, 10);

_pYValueAxis->setLinePen(QPen(Qt::black, 1));

// tick

_pYValueAxis->setTickCount(5);

_pYValueAxis->setGridLinePen(QPen(Qt::gray, 1));

_pYValueAxis->setGridLineVisible(true);

// subTick

_pYValueAxis->setMinorTickCount(4);

_pYValueAxis->setMinorGridLineVisible(true);

_pYValueAxis->setLabelFormat("%d");

_pXValueAxis = dynamic_cast(_pChart->axisX());

_pXValueAxis->setRange(0, 10);

_pXValueAxis->setLinePen(QPen(Qt::black, 1));

// tick

_pXValueAxis->setTickCount(5);

_pXValueAxis->setGridLinePen(QPen(Qt::gray, 1));

_pXValueAxis->setGridLineVisible(true);

// subTick

_pXValueAxis->setMinorTickCount(4); // 相反

_pXValueAxis->setMinorGridLineVisible(true);

_pXValueAxis->setLabelFormat("%d s");

// 通用:視圖顯示設置為圖表

_pChartView->setRubberBand(QChartView::NoRubberBand);? // 不縮放

_pChartView->setDragMode(QChartView::NoDrag);? // 拽拖:需要自己重寫QCharView

_pChartView->setChart(_pChart);

// 標識

_pLegend = _pChart->legend();

_pLegend->setAlignment(Qt::AlignRight);

// 平滑

_pChartView->setRenderHint(QPainter::Antialiasing, true);

// 陰影

_pChart->setDropShadowEnabled(true);

}

void LineChartWidget::setDataVisible(int index, bool visible)

{

if(index < 0 || index > 3)

{

return;

}

QList listLine;

listLine.append(_pLineSeries);

listLine.append(_pLineSeries2);

listLine.append(_pLineSeries3);

listLine.append(_pLineSeries4);

listLine.at(index)->setVisible(visible);

}

void LineChartWidget::setTheme(QChart::ChartTheme theme)

{

_pChart->setTheme(theme);

}

void LineChartWidget::setAnimationOptions(QChart::AnimationOption option)

{

_pChart->setAnimationOptions(option);

}

void LineChartWidget::setAlignment(Qt::Alignment align)

{

_pLegend->setAlignment(align);

}

void LineChartWidget::setLegendVisible(bool visible)

{

_pLegend->setVisible(visible);

_pChartView->setRenderHint(QPainter::Antialiasing);

}

void LineChartWidget::setAntialiasing(bool antialiasing)

{

_pChartView->setRenderHint(QPainter::Antialiasing, antialiasing);

}

void LineChartWidget::setShadow(bool shadow)

{

_pChart->setDropShadowEnabled(shadow);

}

void LineChartWidget::resetData()

{

_pChart->removeAllSeries();

_pLineSeries = new QLineSeries;

_pLineSeries2 = new QLineSeries;

_pLineSeries3 = new QLineSeries;

_pLineSeries4 = new QLineSeries;

QList listLine;

listLine.append(_pLineSeries);

listLine.append(_pLineSeries2);

listLine.append(_pLineSeries3);

listLine.append(_pLineSeries4);

for(int index = 0; index < 4; index++)

{

QList listPointF;

for(int index = 0; index < 11; index++)

{

listPointF << QPointF(index, qrand()%11);

}

listLine.at(index)->append(listPointF);

listLine.at(index)->setName(QString("通道%1").arg(index+1));

listLine.at(index)->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));

_pChart->addSeries(listLine.at(index));

}

resetColor();

}

void LineChartWidget::resetColor()

{

QList listLine;

listLine.append(_pLineSeries);

listLine.append(_pLineSeries2);

listLine.append(_pLineSeries3);

listLine.append(_pLineSeries4);

for(int index = 0; index < listLine.size(); index++)

{

listLine.at(index)->setColor(QColor(qrand()%256, qrand()%256, qrand()%256));

}

}

對應版本號v1.0.0

總結

以上是生活随笔為你收集整理的qchart折现图_Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。