亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談Qt的圖表開發(fā)

        2018-05-14 13:50陳嘉敏趙云峰史家樂
        好日子(下旬) 2018年1期
        關(guān)鍵詞:圖表數(shù)據(jù)庫

        陳嘉敏 趙云峰 史家樂

        摘 要:在實(shí)際開發(fā)中如果我們想要快速的開發(fā)出一款簡單實(shí)用的上位機(jī)軟件,而我們又是側(cè)重底層開發(fā)或者剛?cè)腴T的新手,先前沒有進(jìn)行過相關(guān)的操作,這時(shí)Qt將是你的一個(gè)非常好的選擇。Qt采用C++進(jìn)行編程,完全向下兼容C語言,而且還有豐富的控件,這對(duì)于新手是非常容易上手的。而且Qt自帶了很多模塊,為我們的帶來了很多便利。本文我將著重就上位機(jī)開發(fā)中經(jīng)常要用到的數(shù)據(jù)處理結(jié)合我前些日子做的一個(gè)小例子給大家分享一下如何用Qt實(shí)現(xiàn)數(shù)據(jù)的接收、存儲(chǔ)和圖形化顯示。

        關(guān)鍵詞:Qt;圖表;數(shù)據(jù)庫

        引言

        本人一直在從事的都是底層的硬件驅(qū)動(dòng),使用的都是面向過程的語言C語言。但前些日子由于業(yè)務(wù)需求需要開發(fā)一個(gè)簡單的上位軟件監(jiān)控界面,因此自學(xué)了C++和Qt,并最終完成了該監(jiān)控界面程序的開發(fā),可以實(shí)現(xiàn)常用的數(shù)據(jù)圖表化顯示,實(shí)現(xiàn)簡單的曲線圖的繪制。下面我將簡單總結(jié)一下這段時(shí)間以來本人的一些經(jīng)驗(yàn)和遇到的問題,希望能給有這方面需求的人帶來一些幫助。

        一、準(zhǔn)備工作

        1)在工程的pro文件中添加QT += charts,這個(gè)語句是用來導(dǎo)入圖表模塊charts,如果沒有導(dǎo)入這個(gè)模塊,圖表相關(guān)的類都不能使用。

        2)在mainwindow.h中添加#include,包含圖表類通用的頭文件,在使用各自的類時(shí)要添加相應(yīng)的頭文件.

        3)在mainwindow.h中添加如下代碼:

        QT_CHARTS_BEGIN_NAMESPACE

        class QLineSeries;

        class QChart;

        QT_CHARTS_END_NAMESPACE

        QT_CHARTS_USE_NAMESPACE

        代碼分析:從Qt源碼定義中可以看出若把上面的代碼展開看,就是定義了一個(gè)命名空間QT_CHARTS_NAMESPACE,并把需要的兩個(gè)類添加進(jìn)這個(gè)命名空間中。

        二、相關(guān)的類及具體實(shí)現(xiàn)

        想要在Qt中實(shí)現(xiàn)曲線圖的繪制需要的最基本的類即為Qchart類,除此之外還需要QLineSeries、QChartView、QValueAxis等類。下面我將一一介紹各個(gè)類的作用

        1)QValueAxis類

        這個(gè)類的作用是用來自定義坐標(biāo)軸的。其實(shí)Qchart類里也有一個(gè)默認(rèn)的坐標(biāo)軸,但是一般都不太符合我們的要求,所以一般的做法就是使用這個(gè)類定義一個(gè)新的(坐標(biāo)軸)對(duì)象,設(shè)置相應(yīng)的參數(shù)后設(shè)置為Qchar的默認(rèn)坐標(biāo)軸。應(yīng)用代碼如下:

        QValueAxis *axisX = new QValueAxis;axisX->setRange(0,10);//設(shè)置坐標(biāo)軸范圍

        axisX->setLabelFormat("%g");//設(shè)置坐標(biāo)軸格axisX->setTitleText("Samples");

        QValueAxis *axisY = new QValueAxis;axisY->setRange(0,100);

        axisY->setTitleText("Humility");

        2)QLineSeries類

        這個(gè)類還有幾個(gè)相似的類,例QXYSeries類、QSplineSeries類等,這些類的都是用來平滑曲線,實(shí)現(xiàn)把點(diǎn)連接成線的目的。使用時(shí)只要把關(guān)鍵坐標(biāo)點(diǎn)添加進(jìn)則幾個(gè)點(diǎn)集中,然后再把這些點(diǎn)集設(shè)置成表格圖像要顯示的點(diǎn)集即可。要注意的是這幾個(gè)類對(duì)關(guān)鍵點(diǎn)的處理方式是不同的,QLineSeries類會(huì)把添加進(jìn)的點(diǎn)以直線方式連接,也即之后會(huì)生成折線圖,而QSplineSeries類會(huì)把關(guān)鍵點(diǎn)以平滑曲線連接,也即最后會(huì)生成一個(gè)曲線圖,在本次項(xiàng)目中我選擇的是QLineSeries類來連接關(guān)鍵點(diǎn),生成曲線圖。代碼示例如下:

        QLineSeries *m_series = new QLineSeries;

        QVector points;//矢量點(diǎn)集

        points.append(QPointF(0,20));points.append(QPointF(1,23));

        points.append(QPointF(2,12));points.append(QPointF(3,45));

        points.append(QPointF(4,23));points.append(QPointF(5,43));

        points.append(QPointF(6,3)); points.append(QPointF(7,43));

        points.append(QPointF(8,89));points.append(QPointF(9,34));

        points.append(QPointF(10,76));

        m_series->replace(points);

        代碼分析:上面的代碼先是定義了一個(gè)矢量點(diǎn)集points,然后向這個(gè)點(diǎn)集中添加了11個(gè)點(diǎn)的坐標(biāo),然后用replace函數(shù)替代m_series中的默認(rèn)坐標(biāo)點(diǎn)集。

        3)QChart類設(shè)置圖表格式

        QChart類是真正用來生成圖形曲線的,用這個(gè)類可以對(duì)生成的曲線圖進(jìn)行各種格式的設(shè)置,代碼如下:

        QChart *m_chart = new QChart;m_chart->addSeries(m_series);//添加系列

        m_chart->setAxisX(axisX,m_series);//設(shè)置橫坐標(biāo)軸

        m_chart->setAxisY(axisY,m_series);//設(shè)置縱坐標(biāo)軸

        m_chart->legend()->hide();//將默認(rèn)的圖例樣式隱藏

        m_chart->setTitle("Chart test");//設(shè)置標(biāo)題

        4)QchartView類顯示出圖表

        QchartView類的作用是為了顯示的顯示出圖表,代碼設(shè)置如下:

        QChartView *chartView = newQChartView(m_chart);chartView->setParent(this);

        代碼分析:第一句代碼的作用是定義一個(gè)QChartView類的對(duì)象指針,同時(shí)為該指針開辟空間,并調(diào)用構(gòu)造函數(shù)用先前設(shè)置好的圖表m_chart去初始化該對(duì)象。第二句代碼的作用是把該對(duì)象指針(控件)添加進(jìn)主窗口,以能夠顯示在主窗上。

        最后整體的顯示效果圖如下:

        參考文獻(xiàn)

        [1](美)普拉達(dá)(Prata,S.)著;姜佑譯.C Primer Plus(第6版)[M].北京:人民郵電出版社,2016:576-589

        [2](美)Bruce Eckel.Thinking in C++(第一卷)[M].(美)新澤西:Prentice Hall,1998:319-454

        [3]霍亞飛.Qt Creator快速入門[M].北京:北京航空航天大學(xué)出版社,2012,5:367-383

        [4]霍亞飛.Qt及Qt Quick開發(fā)實(shí)戰(zhàn)精解[M].北京:北京航空航天大學(xué)出版社,2012,5:79-100

        猜你喜歡
        圖表數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        圖表
        雙周圖表
        雙周圖表
        圖表
        雙周圖表
        圖表
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        国产亚洲超级97免费视频| 亚洲成在人网av天堂| 一本久道久久综合狠狠操| 日韩麻豆视频在线观看| 亚洲精品无码专区| 国模无码视频一区| 亚洲xx视频| 久久国产精品美女厕所尿尿av| 国产精品久久久亚洲| 欧美日韩精品一区二区在线观看| 成 人 网 站 在线 看 免费| 国产在线a免费观看不卡| 加勒比色老久久爱综合网| 又粗又硬又黄又爽的免费视频| 亚洲女同精品一区二区久久| 日本一区中文字幕在线播放| 欧美最猛性xxxx| 日本成本人三级在线观看| 久久国产精99精产国高潮| 国产av一区二区三区天美| 亚洲综合激情另类小说区| 久久不见久久见免费视频7| 精品国产91久久久久久久a| 亚洲三级香港三级久久| 亚洲精品白浆高清久久久久久| 色拍拍在线精品视频| 亚洲av网一区天堂福利| 亚洲国产精品国自产拍久久蜜av| 亚洲成av人片天堂网| 传媒在线无码| 国产精品美女一区二区av| 夜夜爽日日澡人人添| a一区二区三区乱码在线 | 欧洲| 国产三级在线看完整版| 色婷婷色丁香久久婷婷| 久久综合精品国产一区二区三区无码 | 精品福利一区二区三区蜜桃| 亚洲乱码中文字幕综合| 国产黑色丝袜在线观看视频| 亚洲精品国产亚洲av | 免费无码又爽又刺激网站|