簡(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
一杯茶的時(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