欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:筆記 Qt之QChart使用

柚子快報邀請碼778899分享:筆記 Qt之QChart使用

http://yzkb.51969.com/

一、相關(guān)類的介紹

1、QChartView

視圖組件(畫布),無法單獨進行顯示,需要依附其他組件進行顯示,如在窗口設(shè)計界面先放置一個QGraphicsView組件,然后升級為QChartView;隨后QChartView通過setChart將QChart添加為顯示的圖表。?

2、QChart

代表一個圖表對象,可以包含一個或多個QAbstractSeries(系列)對象。它提供了管理和控制圖表的方法,如添加/移除系列、設(shè)置圖表標(biāo)題、軸標(biāo)簽等。

3、QAbstractSeries

是所有系列類的基類,代表圖表中的一個系列。派生類包括QLineSeries(線性系列)、QScatterSeries(散點系列)、QBarSeries(柱狀系列)等。每個系列可以包含一個或多個數(shù)據(jù)點,并且可以設(shè)置系列的樣式、顏色、圖例等屬性。?

4、QLineSeries

行序列,數(shù)據(jù)的表現(xiàn)形式,也就是我們要顯示的數(shù)據(jù),例如折線圖。一般是通過QChart的addSeries將QLineSeries添加到圖表中,當(dāng)然不止QLineSeries,還有其他很多類型。?

5、QValueAxis

坐標(biāo)軸。具體使用步驟為:①使用QChart的addAxis將坐標(biāo)軸添加到圖表上;②使用QLineSeries的attachAxis設(shè)置數(shù)據(jù)與坐標(biāo)軸的關(guān)系;注意這兩步設(shè)置有先后關(guān)系,必須先將坐標(biāo)軸添加到QChart,如果順序反了會提示沒有與之關(guān)聯(lián)的坐標(biāo)軸。?

6、QScatterSeries

代表圖表中的散點系列,用于繪制散點圖??梢酝ㄟ^添加數(shù)據(jù)點來構(gòu)建散點系列,也可以設(shè)置散點的樣式和顏色。

7、QBarSeries

代表圖表中的柱狀系列,用于繪制柱狀圖??梢酝ㄟ^添加數(shù)據(jù)點來構(gòu)建柱狀系列,也可以設(shè)置柱子的樣式和顏色。

8、QAbstractAxis

是所有軸類的基類,代表圖表中的一個軸。派生類包括QValueAxis(數(shù)值軸)和QCategoryAxis(分類軸)。每個軸可以設(shè)置軸范圍、刻度間隔、標(biāo)簽等屬性。

9、QCategoryAxis

代表圖表中的分類軸,用于顯示離散的類別。可以設(shè)置軸的類別列表、標(biāo)簽格式等屬性。

二、封裝的圖表類型

QtCharts 可以繪制以下類型的圖表:

1、折線圖(Line Chart):用于顯示數(shù)據(jù)的趨勢和變化,通過連接數(shù)據(jù)點形成折線。

2、散點圖(Scatter Chart):用于展示數(shù)據(jù)點的分布情況,每個數(shù)據(jù)點在坐標(biāo)系中獨立顯示。

3、柱狀圖(Bar Chart):用于比較多個類別或數(shù)據(jù)組之間的數(shù)值差異,使用矩形柱子表示。

4、條形圖(Horizontal Bar Chart):類似于柱狀圖,但是柱子是橫向排列的。

5、餅圖(Pie Chart):用于展示數(shù)據(jù)占比情況,通過扇形的大小表示不同數(shù)據(jù)的相對比例。

6、區(qū)域圖(Area Chart):用于顯示數(shù)據(jù)的累積變化情況,通過填充區(qū)域來表達數(shù)據(jù)的范圍。

7、股票圖(Stock Chart):用于展示股票市場的價格數(shù)據(jù),包括開盤價、收盤價、最高價、最低價等。

8、散點線圖(Spline Chart):類似于散點圖,但是通過平滑的曲線連接數(shù)據(jù)點,更加強調(diào)數(shù)據(jù)的變化趨勢。

9、曲線圖(Spline Series Chart):用于平滑地顯示數(shù)據(jù)的變化情況,通過插值算法計算平滑曲線。

10、雷達圖(Radar Chart):用于展示多個數(shù)據(jù)維度之間的相對關(guān)系,通過多邊形的面積來表示數(shù)據(jù)的相對大小。

三、開始步驟

1、打開.pro文件,輸入Qt += charts,引入Qt Charts模塊;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?2、打開ui設(shè)計器,選擇一個Graphics View控件,鼠標(biāo)右鍵提升為;

3、輸入QChartView,點擊添加、提升;

? ? ? ? ? ? ? ? ? ? ? ? ?

4、在窗口右上角就可以看見控件類型變成QChartView了,然后將控件命名為chartView。

???????????????????????????????????????????

5、在代碼中添加QtCharts頭文件,引入命名空間; ? ? ? ? ? ? ?

四、QChart設(shè)置?

QChart類的主要函數(shù)

圖表外觀void setTitle()設(shè)置圖表標(biāo)題,顯示在圖表上方,支持HTML格式void setTitleFont()設(shè)置圖表標(biāo)題字體void setTitleBrush()設(shè)置圖表標(biāo)題畫刷void setTheme()設(shè)置主題,主題是內(nèi)置的UI設(shè)置,定義了圖表的配色void setMargins()設(shè)置繪圖區(qū)與圖表邊界的4個邊距QLegend* legend()返回圖表的圖例,是一個QLegend類的對象void setAnimationOptions()設(shè)置序列或坐標(biāo)軸的動畫效果數(shù)據(jù)序列void addSeries()添加序列QListseries()返回圖表擁有的序列的列表void removeSeries()移除一個序列,但并不刪除序列對象void removeAllSeries()移除并刪除圖表的所有序列坐標(biāo)軸void addAxis()為圖表的某個反向添加坐標(biāo)軸QListaxes()返回某個方向的坐標(biāo)軸列表void setAxisX()設(shè)置某個序列的水平方向的坐標(biāo)軸void setAxisY()設(shè)置某個序列的垂直方向的坐標(biāo)軸void rmoveAxis()移除一個坐標(biāo)軸void createDefaultAxes()根據(jù)已添加的序列的類型,創(chuàng)建缺省的坐標(biāo)軸,前面已有的坐標(biāo)軸會被刪除????????

void setAnimationOptions(AnimationOptions options)函數(shù)設(shè)置圖表的動畫效果,輸入?yún)?shù)是QChart::AnimationOption枚舉類型,有以下幾種類型:

QChart::NoAnimation,無動畫效果 QChart::GridAxisAnimation,背景網(wǎng)格有動畫效果 QChart::SeriesAnimation,序列有動畫效果 QChart::AllAnimation,都有動畫效果

五、QValueAxis坐標(biāo)軸的創(chuàng)建?

QValueAxis類的主要函數(shù)

坐標(biāo)軸整體void setVisible()設(shè)置坐標(biāo)軸可見性???????? Qt::Orientation orientation() 返回坐標(biāo)軸方向void setMin()設(shè)置坐標(biāo)軸最小值void setMax()設(shè)置坐標(biāo)軸最大值void setRange()設(shè)置坐標(biāo)軸最小、最大值表示的范圍軸標(biāo)題void setTitleVisible()設(shè)置軸標(biāo)題的可見性void setTitleText()設(shè)置軸標(biāo)題的文字void setTitleFont()設(shè)置軸標(biāo)題的字體void setTitleBrush()設(shè)置軸標(biāo)題的畫刷軸標(biāo)簽void setLabelFormat()????????設(shè)置標(biāo)簽格式,例如可以設(shè)置顯示的小數(shù)點位數(shù)void setLabelsAngle()設(shè)置標(biāo)簽的角度,單位為度void setLabelsBrush()設(shè)置標(biāo)簽的畫刷void setLabelsColor()設(shè)置標(biāo)簽文字顏色void setLabelsFont()設(shè)置標(biāo)簽文字字體void setLabelsVisible()設(shè)置軸標(biāo)簽文字是否可見軸線和刻度線void setTickCount()設(shè)置坐標(biāo)軸主刻度個數(shù)void setLineVisible()設(shè)置軸線和刻度線的可見性void setLinePen()設(shè)置軸線和刻度線的畫筆void setLinePenColor()設(shè)置軸線和刻度線的顏色主刻度線void setGridLineColor()設(shè)置網(wǎng)格線的顏色void setGridLinePen()設(shè)置網(wǎng)格線的畫筆void setGridLineVisible()設(shè)置網(wǎng)格線的可見性次刻度和次網(wǎng)格線void setMinorTickCount()設(shè)置兩個主刻度之間的次刻度的個數(shù)void setMinorGridLineColor()設(shè)置次網(wǎng)格線的顏色void setMinorGridLinePen()設(shè)置次網(wǎng)格線的畫筆void setMinorGridLineVisible()設(shè)置次網(wǎng)格線的可見性

1、第一種方式:使用addAxis方式(可以設(shè)置坐標(biāo)軸位置)

//1.創(chuàng)建畫布(已用ui設(shè)置)

//2.創(chuàng)建圖表

chart = new QChart;

//3.創(chuàng)建xy坐標(biāo)

axisX = new QValueAxis;

axisY = new QValueAxis;

//4.設(shè)置坐標(biāo)范圍

axisX->setRange(-10,10);

axisY->setRange(-10,10);

//5.將坐標(biāo)加入圖表,并設(shè)置坐標(biāo)位置

chart->addAxis(axisX,Qt::AlignBottom);

chart->addAxis(axisY,Qt::AlignLeft);

//6.將序列加入圖表

//7.關(guān)聯(lián)xy軸,將序列加入自己的xy坐標(biāo)(attachAxis)

//8.將圖表加入畫布

ui->chartView->setChart(chart);

2、第二種方式:使用setAxisX、setAxisY方式(不可以設(shè)置坐標(biāo)軸位置)

//1.創(chuàng)建畫布(已用ui設(shè)置)

//2.創(chuàng)建圖表

chart = new QChart;

//3.創(chuàng)建xy坐標(biāo)

axisX = new QValueAxis;

axisY = new QValueAxis;

//4.設(shè)置坐標(biāo)范圍

axisX->setRange(-10,10);

axisY->setRange(-10,10);

//5.將坐標(biāo)加入圖表,關(guān)聯(lián)xy軸(將序列圖表放在自己創(chuàng)建的坐標(biāo)系上)

chart->setAxisX(axisX);

chart->setAxisY(axisY);

//6.將序列加入圖表

//7.將圖表加入畫布

ui->chartView->setChart(chart);

總結(jié):

在Qt的QChart中,可以使用以下兩種方式來設(shè)置坐標(biāo)軸:

1、使用addAxis()方法:在這種方式下,軸對象可以在圖表中獨立于系列添加和移除,因此可以在圖表中靈活地管理和控制不同的軸。

2、使用setAxisX()和setAxisY()方法:在這種方式下,每個圖表只能有一個X軸和一個Y軸,并且會自動將系列與這些軸關(guān)聯(lián)起來。當(dāng)添加新的系列時,它們會自動使用已設(shè)置的X軸和Y軸。

總體而言,使用addAxis()方法可以在圖表中添加多個軸,并且可以更靈活地管理不同的軸。而使用setAxisX()和setAxisY()方法則適用于只需要一個X軸和一個Y軸的簡單情況,并且可以自動關(guān)聯(lián)系列和軸。選擇使用哪種方式取決于你的需求和使用場景。

六、QChart繪圖一般步驟?

1、創(chuàng)建QChartView畫布

2、創(chuàng)建QChart圖表

3、創(chuàng)建序列

4、創(chuàng)建QValueAxis坐標(biāo)軸(部分圖表不用,例如:餅狀圖)

5、配置序列(坐標(biāo)軸)、設(shè)置序列(坐標(biāo)軸)參數(shù)、添加數(shù)據(jù)等

6、將序列加入圖表

7、將坐標(biāo)軸加入圖表?

8、關(guān)聯(lián)xy軸(部分圖表不用,例如:餅狀圖),將圖表和自己創(chuàng)建的xy軸關(guān)聯(lián)

9、將圖表QChart加入QChartView畫布中

七、散點圖

QScatterSeries類的主要函數(shù)

append(double x, double y)向散點圖中添加一個點replace(int index, double x, double y)替換指定索引位置的點的坐標(biāo)。setMarkerShape(QScatterSeries::MarkerShape shape)設(shè)置散點的形狀。setMarkerSize(qreal size)設(shè)置散點的大小。setBorderColor(QColor color)設(shè)置散點的邊框顏色。setBrush(QColor color)設(shè)置散點的填充顏色。setColor(QColor color)設(shè)置散點的顏色,包括邊框和填充。clear()清空散點圖中的所有點。

//初始化坐標(biāo)軸

create_coordinate_system();

//創(chuàng)建圖表

QChart *chart = new QChart;

//自定義創(chuàng)建散點

QScatterSeries *scatterSeries = new QScatterSeries;

scatterSeries->setName("散點");

scatterSeries->setMarkerSize(7);

scatterSeries->setMarkerShape(QScatterSeries::MarkerShapeCircle);//設(shè)置散點形狀為圓

scatterSeries->append(1,1);

//隨機散點

for(int i = -60; i < 60; i++)// 添加120個任意點

{

scatterSeries->append(i, QRandomGenerator::global()->bounded(-60, 60));

}

//將散點加入圖表中

chart->addSeries(scatterSeries);

//將散點的圖表放在自己創(chuàng)建的坐標(biāo)系上

chart->setAxisX(x_axis,scatterSeries);

chart->setAxisY(y_axis,scatterSeries);

//將圖表加入畫布中

ui->chartView->setChart(chart);

效果圖:

八、折線圖

QLineSeries類的主要函數(shù)

序列名稱void setName()設(shè)置序列的名稱,這個名稱會顯示在圖例里,支持HTML格式圖表QChart *chart()返回序列所屬的圖表對象序列外觀void setVisible()設(shè)置序列的可見性void show()顯示序列,使序列可見void hide()隱藏序列,使其不可見void setColor()設(shè)置序列線條的顏色void setPen()設(shè)置序列線條的畫筆void setBrush()設(shè)置繪制數(shù)據(jù)點的畫刷void setOpacity()設(shè)置序列的透明度,0表示完全透明,1表示不透明數(shù)據(jù)點void setPointsVisible()設(shè)置數(shù)據(jù)點的可見性void append()添加一個數(shù)據(jù)點到序列void insert()在某個位置插入一個數(shù)據(jù)點void replace()替換某個數(shù)據(jù)點void clear()清空所有數(shù)據(jù)點void remove()刪除某個數(shù)據(jù)點void removePoints()從某個位置開始,刪除指定個數(shù)的數(shù)據(jù)點int count()????????數(shù)據(jù)點的個數(shù)QPointF& at()返回某個位置的數(shù)據(jù)點QList points()返回數(shù)據(jù)點的列表QVector pointsVector()返回數(shù)據(jù)點的,效率更高數(shù)據(jù)點標(biāo)簽void setPointLabelsVisible()設(shè)置數(shù)據(jù)點標(biāo)簽的可見性void setPointLabelsColor()設(shè)置數(shù)據(jù)點標(biāo)簽的文字顏色void setPointLabelsFont()設(shè)置數(shù)據(jù)點標(biāo)簽字體void setPointLabelsFormat()設(shè)置數(shù)據(jù)點標(biāo)簽格式void setPointLabelsClipping()設(shè)置標(biāo)簽的裁剪屬性,默認(rèn)為true,即繪圖區(qū)外的標(biāo)簽被裁剪掉坐標(biāo)軸bool attachAxis()為序列附加一個坐標(biāo)軸,通常需要一個X軸和Y軸bool detachAxis()解除一個附加的坐標(biāo)軸QListattachedAxes()返回附加的坐標(biāo)軸的列表

//初始化坐標(biāo)軸

create_coordinate_system();

//創(chuàng)建圖表

QChart *chart = new QChart;

//創(chuàng)建線條

QLineSeries *lineSeries1 = new QLineSeries;

QLineSeries *lineSeries2 = new QLineSeries;

lineSeries1->setName("正弦曲線");

lineSeries2->setName("折線");

int i;//sin的步長,橫坐標(biāo)

for(i=-60;i<61;i++){

qreal j = qSin(i);

lineSeries1->append(i,j);

}

// 添加折線數(shù)據(jù)

qsrand(QTime::currentTime().second());

for(int i = 0; i <= 20; i++) {

qreal x = i;

qreal y = qrand()%100;

lineSeries2->append(x, y);

}

//將線條加入圖表

chart->addSeries(lineSeries1);

chart->addSeries(lineSeries2);

//將有線條的圖表加入自己的坐標(biāo)系中

chart->setAxisX(x_axis,lineSeries1);

chart->setAxisY(y_axis,lineSeries1);

//將圖表加入畫布中

ui->chartView->setChart(chart);

效果圖:

九、柱狀圖

QBarSet類的主要函數(shù)功能

標(biāo)簽void setLabel()設(shè)置數(shù)據(jù)集的標(biāo)簽,用于圖例的顯示文字void setLabelBrush()設(shè)置標(biāo)簽的畫刷void setLabelColor()設(shè)置標(biāo)簽的文字顏色void setLabelFont()設(shè)置標(biāo)簽的字體數(shù)據(jù)棒void setBorderColor()設(shè)置數(shù)據(jù)集的棒圖的邊框顏色void setBrush()設(shè)置數(shù)據(jù)集的棒圖的畫刷void setColor()設(shè)置數(shù)據(jù)集的棒圖填充顏色void setPen()設(shè)置數(shù)據(jù)集的棒圖的邊框畫筆數(shù)據(jù)點void append()添加一個數(shù)據(jù)到數(shù)據(jù)集void insert()在某個位置插入一個數(shù)據(jù)到數(shù)據(jù)集void remove()從某個位置開始刪除一定數(shù)量的數(shù)據(jù)void replace()替換某個位置的數(shù)據(jù)qreal at()返回某個位置的數(shù)據(jù)int count()返回數(shù)據(jù)的個數(shù)qreal sum()返回數(shù)據(jù)集內(nèi)所有數(shù)據(jù)的和

(一)普通柱狀圖

//初始化坐標(biāo)軸

create_coordinate_system();

//創(chuàng)建圖表

chart = new QChart;

//創(chuàng)建QBarSeries,條形圖容器,用于管理和顯示多條柱子

QBarSeries *barSeries = new QBarSeries;

// barSeries->setBarWidth(5);//設(shè)置數(shù)據(jù)棒的寬度

//創(chuàng)建QBarSet并添加數(shù)據(jù)

QBarSet *set1 = new QBarSet("data1");

QBarSet *set2 = new QBarSet("data2");

QBarSet *set3 = new QBarSet("data3");

QBarSet *set4 = new QBarSet("data4");

*set1 << QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61);

*set2 << QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61);

*set3 << QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61)

<< QRandomGenerator::global()->bounded(0, 61);

*set4 << QRandomGenerator::global()->bounded(-60, 1)

<< QRandomGenerator::global()->bounded(-60, 1)

<< QRandomGenerator::global()->bounded(-60, 1)

<< QRandomGenerator::global()->bounded(-60, 1);

//用于橫坐標(biāo)的字符串列表

QStringList categories;

categories<<"學(xué)生1"<<"學(xué)生2"<<"學(xué)生3"<<"學(xué)生4";

//用于柱狀圖的橫坐標(biāo)

QBarCategoryAxis *axisX = new QBarCategoryAxis;

axisX->append(categories);

axisX->setRange(categories[0],categories[categories.length()-1]);

//將QBarSet添加到QBarSeries中

barSeries->append(set1);

barSeries->append(set2);

barSeries->append(set3);

barSeries->append(set4);

//將QBarSeries添加到圖表中

chart->addSeries(barSeries);

//將散點的圖表放在自定義坐標(biāo)中

chart->setAxisX(axisX,barSeries);

chart->setAxisY(y_axis,barSeries);

//將圖表加入畫布中

ui->chartView->setChart(chart);

效果圖:

(二)堆疊柱狀圖

//創(chuàng)建圖表

QChart *chart = new QChart;

//創(chuàng)建QStackedBarSeries,堆柱狀圖

QStackedBarSeries *series=new QStackedBarSeries;

// barSeries->setBarWidth(5);//設(shè)置數(shù)據(jù)棒的寬度

//創(chuàng)建QBarSet并添加數(shù)據(jù)

QBarSet *set1 = new QBarSet("data1");

QBarSet *set2 = new QBarSet("data2");

QBarSet *set3 = new QBarSet("data3");

*set1 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

*set2 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

*set3 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

//用于橫坐標(biāo)的字符串列表

QStringList categories;

categories<<"學(xué)生1"<<"學(xué)生2"<<"學(xué)生3"<<"學(xué)生4";

//用于柱狀圖的橫坐標(biāo)

QBarCategoryAxis *axisX = new QBarCategoryAxis;

axisX->append(categories);

axisX->setRange(categories[0],categories[categories.length()-1]);

//數(shù)值型坐標(biāo)作為縱坐標(biāo)

QValueAxis *axisY=new QValueAxis;

axisY->setRange(0,300);

axisY->setTitleText("分?jǐn)?shù)");

axisY->setTickCount(11);

axisY->setMinorTickCount(10);

axisY->setLabelFormat("%d");

//將QBarSet添加到QBarSeries中

series->append(set1);

series->append(set2);

series->append(set3);

series->setLabelsVisible(true);

//將QBarSeries添加到圖表中

chart->addSeries(series);

//將散點的圖表放在自定義坐標(biāo)中

chart->setAxisX(axisX,series);

chart->setAxisY(axisY,series);

//將圖表加入畫布中

ui->chartView->setChart(chart);

效果圖:

(三)百分比柱狀圖

//創(chuàng)建圖表

QChart *chart = new QChart;

//創(chuàng)建QPercentBarSeries,百分比柱狀圖

QPercentBarSeries *series=new QPercentBarSeries;

// barSeries->setBarWidth(5);//設(shè)置數(shù)據(jù)棒的寬度

//創(chuàng)建QBarSet并添加數(shù)據(jù)

QBarSet *set1 = new QBarSet("data1");

QBarSet *set2 = new QBarSet("data2");

QBarSet *set3 = new QBarSet("data3");

*set1 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

*set2 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

*set3 << QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100)

<< QRandomGenerator::global()->bounded(0, 100);

//用于橫坐標(biāo)的字符串列表

QStringList categories;

categories<<"學(xué)生1"<<"學(xué)生2"<<"學(xué)生3"<<"學(xué)生4";

//用于柱狀圖的橫坐標(biāo)

QBarCategoryAxis *axisX = new QBarCategoryAxis;

axisX->append(categories);

axisX->setRange(categories[0],categories[categories.length()-1]);

//數(shù)值型坐標(biāo)作為縱坐標(biāo)

QValueAxis *axisY=new QValueAxis;

axisY->setRange(0,300);

axisY->setTitleText("百分比");

axisY->setTickCount(6);

axisY->setMinorTickCount(10);

axisY->setLabelFormat("%d");

//將QBarSet添加到QBarSeries中

series->append(set1);

series->append(set2);

series->append(set3);

series->setLabelsVisible(true);

//將QBarSeries添加到圖表中

chart->addSeries(series);

//將散點的圖表放在自定義坐標(biāo)中

chart->setAxisX(axisX,series);

chart->setAxisY(axisY,series);

//將圖表加入畫布中

ui->chartView->setChart(chart);

效果圖:

十、餅狀圖

QPieSeries類的主要函數(shù)功能

分塊操作bool append()添加一個分塊到餅圖bool insert()在某個位置插入一個分塊bool remove()移除并刪除一個分塊bool take()移除一個分塊,但并不刪除數(shù)據(jù)塊對象void clear()清除序列所有分塊QListslices()返回序列的所有分塊的列表int count()返回序列分塊的個數(shù)bool isEmpty()如果序列為空,返回true,否則返回falseqreal sum()返回序列各分塊的數(shù)值的和外觀void setHoleSize()設(shè)置餅圖中心的空心圓大小,在0~1之間void setPieSize()設(shè)置餅圖占圖表矩形區(qū)的相對大小,0是最小,1最大void setLabelsVisible()設(shè)置分塊的標(biāo)簽的可見性

//創(chuàng)建圖表

QChart *chart = new QChart;

//創(chuàng)建餅狀圖序列

QPieSeries *pieSeries = new QPieSeries;

//設(shè)置餅狀圖數(shù)據(jù)

pieSeries->append("data1",7);

pieSeries->append("data2",4);

pieSeries->append("data3",9);

pieSeries->append("data4",3);

pieSeries->append("data5",6);

QPieSlice *slice = pieSeries->slices().at(0);

slice->setExploded(true);//設(shè)置exploded動畫效果

pieSeries->setLabelsVisible(true);//設(shè)置餅圖劃分的提示

//將餅狀圖加入圖表

chart->addSeries(pieSeries);

//將圖表加入畫布

ui->chartView->setRenderHint(QPainter::Antialiasing); // 抗鋸齒

ui->chartView->setChart(chart);

效果圖:

十一、極坐標(biāo)(雷達)

QPolarChart類的主要函數(shù)

addSeries(QAbstractSeries *series)向極坐標(biāo)圖表中添加一個數(shù)據(jù)系列。removeSeries(QAbstractSeries *series)從極坐標(biāo)圖表中移除指定的數(shù)據(jù)系列。setBackgroundVisible(bool visible)設(shè)置是否顯示極坐標(biāo)圖表的背景。setAxisX(QValueAxis *axis)設(shè)置極坐標(biāo)圖表的 X 軸。setAxisY(QValueAxis *axis)設(shè)置極坐標(biāo)圖表的 Y 軸。setAngularOrientation(Qt::Orientation orientation)設(shè)置極坐標(biāo)圖表的角度方向。setRadialOrientation(Qt::Orientation orientation)設(shè)置極坐標(biāo)圖表的徑向方向。

QScatterSeries* series = new QScatterSeries(); // 創(chuàng)建一個散點繪圖數(shù)據(jù)集對象

const qreal angularMax = 100; // 最大角度

series->setName("散點");

for(int i = 0; i < angularMax; i += 10)

{

series->append(i, i + 100); // 向series中添加數(shù)據(jù),X:角度 Y:到圓心距離

}

QPolarChart* chart = new QPolarChart(); // 創(chuàng)建一個極坐標(biāo)系圖表

chart->legend()->setVisible(false); // 隱藏圖例

chart->addSeries(series); // 將創(chuàng)建的series添加進圖表中

chart->createDefaultAxes(); // 根據(jù)已有的series生成默認(rèn)的坐標(biāo)軸

ui->chartView->setChart(chart);

效果圖:

十二、動態(tài)曲線(可縮放、查坐標(biāo))?

static int count = 0;

// //初始化畫布(已用ui)

// chartView = new QChartView(this);

// chartView->setFixedSize(this->window()->width(),this->window()->height());//設(shè)置畫布大小

chart = new QChart;

QLineSeries *lineSeries = new QLineSeries;

lineSeries->setName("QLineSeries不平滑曲線");

QSplineSeries *splineSeries = new QSplineSeries;

splineSeries->setName("QSplineSeries平滑曲線");

// int i;

// for(i = -10;i<11;i++){

// qreal j = qSin(i);

// qreal k = qCos(i);

// lineSeries->append(i,j);

// splineSeries->append(i,k);

// }

QValueAxis *axisX = new QValueAxis();

QValueAxis *axisY = new QValueAxis();

axisY->setRange(-10,10);

axisX->setRange(0,30);

chart->addSeries(lineSeries);

chart->addSeries(splineSeries);

//加入chart并設(shè)置坐標(biāo)軸位置、方向

chart->addAxis(axisX,Qt::AlignBottom);

chart->addAxis(axisY,Qt::AlignLeft);

//將序列綁定在自己的坐標(biāo)軸上

lineSeries->attachAxis(axisX);

lineSeries->attachAxis(axisY);

splineSeries->attachAxis(axisX);

splineSeries->attachAxis(axisY);

ui->chartView->setChart(chart);

ui->chartView->setMouseTracking(true); //開啟鼠標(biāo)追蹤功能

QTimer *timer = new QTimer(this);

connect(timer, &QTimer::timeout, this, [=](){

qreal j = qSin(count);

qreal k = qCos(count);

lineSeries->append(count, j);

splineSeries->append(count, k);

int points = splineSeries->points().size();

if(points >= 30){

axisX->setMax(++count);

axisX->setMin(count-30);

}else {

count++;

}

});

timer->start(100);

//=======================================================================================

//槽函數(shù)

void Widget::mouseMoveEvent(QMouseEvent *event)

{

// 獲取鼠標(biāo)在QChartView中的坐標(biāo)(按住鼠標(biāo)左鍵顯示坐標(biāo))

QPointF mousePoint = event->pos();

// 獲取鼠標(biāo)在QChartView中的坐標(biāo)

QPoint chartPoint = ui->chartView->mapFromGlobal(event->globalPos());

// 將坐標(biāo)轉(zhuǎn)換為QChart中的數(shù)值

QPointF value = ui->chartView->chart()->mapToValue(mousePoint);

// 在這里你可以更新提示框或者標(biāo)簽來顯示當(dāng)前坐標(biāo)點的數(shù)值

updateTooltip(value);

}

void Widget::wheelEvent(QWheelEvent *event)

{

if(event->delta() > 0){ // 當(dāng)滾輪遠離使用者時

chart->zoomIn(); // 進行放大

// Xrang /= 1.5;

}else{ // 當(dāng)滾輪向使用者方向旋轉(zhuǎn)時

chart->zoomOut(); // 進行縮小

// Xrang *= 1.5;

}

}

參考博客https://blog.csdn.net/weixin_55238862/article/details/130902767?spm=1001.2014.3001.5506

柚子快報邀請碼778899分享:筆記 Qt之QChart使用

http://yzkb.51969.com/

好文鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18734283.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄