亚洲免费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ù)庫
        曰韩无码av一区二区免费| jiZZ国产在线女人水多| 精品国产夫妻自拍av| 国产精品一区二区黑丝| 米奇7777狠狠狠狠视频影院| 久久精品国产一区二区电影| 亚洲AV秘 无套一区二区三区| 亚洲精品一区二区三区新线路| 欧美成人猛片aaaaaaa| 亚洲av电影天堂男人的天堂| 亚洲国产成人手机在线电影| 久久五月精品中文字幕| 视频在线观看一区二区三区| 国产台湾无码av片在线观看| 久久频道毛片免费不卡片| 日韩精品中文字幕人妻中出| 中文字幕亚洲乱码熟女1区| 99久久精品国产一区二区三区| 亚洲精品第一国产麻豆| 亚洲综合网中文字幕在线| 在线观看一级黄片天堂| 国产真实夫妇交换视频| 成人午夜无人区一区二区| 日本免费一区二区精品| 日本真人边吃奶边做爽电影| 国产肉丝袜在线观看| 亚洲无码图| 亚洲精品久久蜜桃av| 人妻少妇中文字幕乱码| 亚洲成a人片在线观看久| 61精品人妻一区二区三区蜜桃| 久久九九精品国产av| 撕开奶罩揉吮奶头视频| 欧美韩国精品另类综合| 日本师生三片在线观看| 中文字幕日韩精品一区二区三区 | 精品欧美乱子伦一区二区三区| 91亚洲国产成人久久精品网站| 一个人看的视频在线观看| 曰批免费视频播放免费直播| 丝袜美腿网站一区二区|