QtChart-Qt官方繪圖庫(kù)安裝與使用

簡(jiǎn)介

Qt的線性繪圖控件有大名鼎鼎的Qwt仿滔,ChartDirector,小巧玲瓏的QCustomPlot,當(dāng)然還有自家的QtChart缅叠。長(zhǎng)久以來(lái)QtChart在Qt家族里一直是收費(fèi)的模塊卢鹦,只有商業(yè)版才可以使用檐涝,但Qt5.7之后將開放其權(quán)限,可參見:Qt 5.7 亮瞎眼的更新法挨。下面將介紹如何安裝QtChart并進(jìn)行簡(jiǎn)單的繪圖谁榜。

下載

這里用git下載QtChart,參考Qt Charts 5.7.0 安裝教程
如果大家還用Qt5.4以下版本請(qǐng)升級(jí)完再看凡纳,Qt5.4以下是不支持滴
Git地址:https://github.com/qtproject/qtcharts.git

git clone https://github.com/qtproject/qtcharts.git

這里寫圖片描述

下載完目錄是這樣的:
這里寫圖片描述

開始編譯前需要下載Perl:activePerl
直接下一步點(diǎn)到頭安裝窃植。
安裝完成后需要重啟一下電腦或者手動(dòng)激活一下環(huán)境變量。

編譯QtChart

此時(shí)用Qt Creator加載qtcharts.pro


加載后Qt Creator界面

一杯茶的時(shí)間后:


編譯成功后界面

此時(shí)在生成目錄下生成:
生成文件

安裝

編譯結(jié)束后就可以進(jìn)行安裝了
選擇Qt Creator項(xiàng)目欄 - 運(yùn)行標(biāo)簽 - 添加部署構(gòu)建


這里寫圖片描述

這里需要添加兩個(gè)部署荐糜,一個(gè)是QtChart的安裝巷怜,一個(gè)是QtChart文檔的編譯葛超。
如圖所示配置完后,點(diǎn)擊運(yùn)行


這里寫圖片描述

這時(shí)會(huì)有很多復(fù)制的信息延塑,它會(huì)把編譯好的dll和頭文件復(fù)制到Qt的安裝目錄下
這里寫圖片描述

這里寫圖片描述

打開Qt目錄下的lib文件夾和include文件夾可以看到被復(fù)制過來(lái)的QtChart信息绣张。
這時(shí),再看QtChart的生成目錄关带,比第一次編譯時(shí)多了一個(gè)doc文件夾
你只要把這個(gè)doc文件夾里的qtcharts文件夾和qtcharts.qch文件復(fù)制到Qt安裝目錄下的Docs文件夾內(nèi)對(duì)應(yīng)版本文件夾下即可


這里寫圖片描述

這時(shí)打開Qt Assisant侥涵,搜QtChart,即可看到說明文檔宋雏!
這里寫圖片描述

這時(shí)你的QtChart大部分已經(jīng)配置完成芜飘。
還有example的安裝,可參看文獻(xiàn)[3]

測(cè)試QtChart

下面演示如何用Qt Creator的界面設(shè)計(jì)師創(chuàng)建一個(gè)QtChart磨总,其他方法可見參考文獻(xiàn)嗦明。
首先新建一個(gè)Widget項(xiàng)目
使用一個(gè)Widget作為Chart的載體,在界面上放置一個(gè)Widget


這里寫圖片描述

右鍵點(diǎn)擊這個(gè)widget蚪燕,把這個(gè)Widget提升娶牌。


這里寫圖片描述

把這個(gè)Widget提升為QChartView
QtChart有兩類繪圖窗口容器,分別為QChart(QPolarChart)和QChartView馆纳,其區(qū)別官方文檔說明為:

QChart is a QGraphicsWidget that you can show in a QGraphicsScene. It manages the graphical representation of different types of series and other chart related objects like legend and axes. If you simply want to show a chart in a layout, you can use the convenience class QChartView instead of QChart.

QChartView is a standalone widget that can display charts. It does not require separate QGraphicsScene to work. If you want to display a chart in your existing QGraphicsScene, you need to use the QChart (or QPolarChart) class instead.

因?yàn)檫@里是單獨(dú)作為一個(gè)窗體放置裙戏,因此用QChartView


這里寫圖片描述

提升的類名為QChartView
頭文件也為QChartView ,Qt每個(gè)類都有個(gè)無(wú)后綴的同類名文件厕诡,方便include
嘗試編譯一下程序會(huì)出現(xiàn)一個(gè)錯(cuò)誤:


這里寫圖片描述

官方文檔說明累榜,使用QtChart還需要對(duì)pro文件進(jìn)行設(shè)置:

To create a simple application, start by creating a new Qt Gui Application project in Qt Creator and add this line to the .pro file of the project:

QT += charts

In the main.cpp file, include the module headers and declare namespace usage:

#include <QtCharts>
using namespace QtCharts;

其中,可以使用QT_CHARTS_USE_NAMESPACE替代using namespace QtCharts;

這里寫圖片描述

添加完所需要的內(nèi)容灵嫌,編譯還是發(fā)生錯(cuò)誤壹罚,錯(cuò)誤定位到ui_widget里
這里寫圖片描述

前面說了,用到QtChart的地方需要包含#include <QtCharts>以及命名空間using namespace QtCharts;(或者QT_CHARTS_USE_NAMESPACE替代using namespace QtCharts;)
但是ui_widget文件是自動(dòng)生成的寿羞,不能再此文件里進(jìn)行修改猖凛,此文件是包含在widget.h的一個(gè)叫Ui的命名空間中,因此绪穆,可以把

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

放置在widget.h上:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

此時(shí)在編譯即可:

這里寫圖片描述

在構(gòu)造函數(shù)里添加:

QLineSeries* line1 = new QLineSeries();
for(double x=0;x<10;x+=0.1)
{
    line1->append(x,sin(x));
}
QChart* c = new QChart();
c->addSeries(line1);
ui->chart->setChart(c);

效果如下:


這里寫圖片描述

總結(jié)

在使用界面設(shè)計(jì)師用QtChart時(shí)辨泳,需要在對(duì)應(yīng)的界面頭文件上添加:

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

否則會(huì)發(fā)生編譯錯(cuò)誤!

完玖院!

參考文獻(xiàn)

[1]Qt Charts 5.7.0 安裝教程http://www.reibang.com/p/8d9a817aa6b9
[2]Qt Chart 5.7.0 傻瓜安裝教程http://www.cnblogs.com/findumars/p/5152294.html
[3] QtCharts編譯(編譯環(huán)境MSVC12)和VS2013配置QtCharts
http://blog.csdn.net/wokaowokaowokao12345/article/details/50933447

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菠红,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子难菌,更是在濱河造成了極大的恐慌试溯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郊酒,死亡現(xiàn)場(chǎng)離奇詭異遇绞,居然都是意外死亡键袱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門摹闽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹄咖,“玉大人,你說我怎么就攤上這事付鹿±教溃” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵倘屹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我慢叨,道長(zhǎng)纽匙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任拍谐,我火速辦了婚禮烛缔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轩拨。我一直安慰自己践瓷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布亡蓉。 她就那樣靜靜地躺著晕翠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砍濒。 梳的紋絲不亂的頭發(fā)上淋肾,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音爸邢,去河邊找鬼樊卓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杠河,可吹牛的內(nèi)容都是我干的碌尔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼券敌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唾戚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起待诅,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤颈走,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咱士,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體立由,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轧钓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锐膜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毕箍。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖道盏,靈堂內(nèi)的尸體忽然破棺而出而柑,到底是詐尸還是另有隱情,我是刑警寧澤荷逞,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布媒咳,位于F島的核電站,受9級(jí)特大地震影響种远,放射性物質(zhì)發(fā)生泄漏涩澡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一坠敷、第九天 我趴在偏房一處隱蔽的房頂上張望妙同。 院中可真熱鬧,春花似錦膝迎、人聲如沸粥帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芒涡。三九已至,卻和暖如春卖漫,著一層夾襖步出監(jiān)牢的瞬間拖陆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工懊亡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留依啰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓店枣,卻偏偏與公主長(zhǎng)得像速警,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸯两,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Qt是屬于一個(gè)跨平臺(tái)的GUI開發(fā)軟件闷旧,支持的平臺(tái)有Unix、Linux钧唐、Windows/WinCE忙灼、IOS等。 Q...
    一葉之界閱讀 8,162評(píng)論 0 17
  • 背景:很久很久以前,在GKE里手動(dòng)寫k8s yaml file部署了Kong该园,版本是v0.13.x酸舍,這個(gè)版本太老太...
    Mokaffee閱讀 928評(píng)論 0 1
  • 吃播,起源于韓國(guó)里初,最初指的是吃飯直播啃勉。目前,吃播包括直播和錄播兩種類型双妨,節(jié)目時(shí)長(zhǎng)不一淮阐,短至三五分鐘,長(zhǎng)達(dá)三五...
    這個(gè)檸檬不太酸閱讀 3,308評(píng)論 0 1
  • 2019.01.14 大兒子早上起床氣刁品,好說歹說都不起來(lái)泣特。 我只好搬出拯救宇宙的奧特曼:兒子,奧特曼是用來(lái)干嘛的挑随?...
    超有才華閱讀 456評(píng)論 0 0
  • 《我從未忘記你》 遙遠(yuǎn)一詞状您,大抵是如此,多了些許愛和情結(jié)镀裤。 所到之處 竞阐,環(huán)滁皆山也缴饭, 黑暗與光明交錯(cuò)暑劝, 向群山深處...
    踢球?qū)懺?shī)的小何老師閱讀 298評(píng)論 0 1