Qt+ECharts開發筆記(一):ECharts介紹、下載和Qt呼叫ECharts基礎柱狀圖Demo
前言
核心思想
Demo演示
ECharts
簡介
主要功能
下載
Qt中引入ECharts
步驟一:引入web模組
QT += webenginewidgets
步驟二:初始化視窗
BarEChartWidget::BarEChartWidget(QWidget *parent) : QWidget(parent), ui(new Ui::BarEChartWidget), _pWebEngineView(0), _pWebEnginePage(0), _pWebChannel(0), _htmlDir("D:/qtProject/echartsDemo/echartsDemo/modules/barEChartWidget/html"), // 使用了絕對路徑,引到html資料夾 _indexFileName("barEChartWidget.html"){ ui->setupUi(this); QString version = "v1.0.0"; setWindowTitle(QString("Qt呼叫EChartsDemo %1(長沙紅胖子 QQ:21497936 WX:15173255813 blog:hpzwl.blog.csdn.net").arg(version)); // 設定無邊框,以及背景透明 // 背景透明,在介面構架時,若為本視窗為其他視窗提升為本視窗時, // 則再qss會在主視窗第一級新增frame_all,防止其他視窗提升本視窗而沖掉qss設定// setWindowFlag(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground, true); // 讓滾動條不出來 resize(600 + 20, 400 + 20); initControl();}
void BarEChartWidget::initControl(){ _pWebEngineView = new QWebEngineView(this); _pWebEnginePage = new QWebEnginePage(this); _pWebChannel = new QWebChannel(this); QString filePath;#if 0 filePath = QString("%1/%2").arg(_htmlDir).arg(_indexFileName);#else filePath = "qrc:/barEChartWidget/html/barEChartWidget.html";#endif LOG << "file exist:" << QFile::exists(filePath) << filePath;#if 0 // 列印html檔案內容 QFile file(_indexFilePath); file.open(QIODevice::ReadOnly); LOG << QString(file.readAll()); file.close();#endif _pWebEnginePage->load(QUrl(filePath)); _pWebEnginePage->setWebChannel(_pWebChannel); _pWebEngineView->setPage(_pWebEnginePage); // 背景透明// _pWebEngineView->setStyleSheet("background-color: transparent");// _pWebEnginePage->setBackgroundColor(Qt::transparent);}
步驟三:視窗大小跟隨
void BarEChartWidget::resizeEvent(QResizeEvent *event){ if(_pWebEngineView) { _pWebEngineView->setGeometry(rect()); }}
模組化
Demo
#ifndef BARECHARTWIDGET_H#define BARECHARTWIDGET_H#include <QWidget>#include <QWebEngineView>#include <QWebEnginePage>#include <QWebChannel>namespace Ui {class BarEChartWidget;}class BarEChartWidget : public QWidget{ Q_OBJECTpublic: explicit BarEChartWidget(QWidget *parent = 0); ~BarEChartWidget();protected: void initControl();protected: void resizeEvent(QResizeEvent *event);private: Ui::BarEChartWidget *ui;private: QWebEngineView *_pWebEngineView; // 瀏覽器視窗 QWebEnginePage *_pWebEnginePage; // 瀏覽器頁面 QWebChannel *_pWebChannel; // 瀏覽器js互動 QString _htmlDir; // html資料夾路徑 QString _indexFileName; // html檔案};#endif // BARECHARTWIDGET_H
#include "BarEChartWidget.h"#include "ui_BarEChartWidget.h"#include <QFile>#include <QMessageBox>// QtCreator在msvc下設定編碼也或有一些亂碼,直接一刀切,避免繁瑣的設定#define MSVC#ifdef MSVC#define QSTRING(s) QString::fromLocal8Bit(s)#else#define QSTRING(s) QString(s)#endif#include <QDebug>#include <QDateTime>//#define LOG qDebug()<<__FILE__<<__LINE__//#define LOG qDebug()<<__FILE__<<__LINE__<<__FUNCTION__//#define LOG qDebug()<<__FILE__<<__LINE__<<QThread()::currentThread()//#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd")#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")BarEChartWidget::BarEChartWidget(QWidget *parent) : QWidget(parent), ui(new Ui::BarEChartWidget), _pWebEngineView(0), _pWebEnginePage(0), _pWebChannel(0), _htmlDir("D:/qtProject/echartsDemo/echartsDemo/modules/barEChartWidget/html"), // 使用了絕對路徑,引到html資料夾 _indexFileName("barEChartWidget.html"){ ui->setupUi(this); QString version = "v1.0.0"; setWindowTitle(QString("Qt呼叫EChartsDemo %1(長沙紅胖子 QQ:21497936 WX:15173255813 blog:hpzwl.blog.csdn.net").arg(version)); // 設定無邊框,以及背景透明 // 背景透明,在介面構架時,若為本視窗為其他視窗提升為本視窗時, // 則再qss會在主視窗第一級新增frame_all,防止其他視窗提升本視窗而沖掉qss設定// setWindowFlag(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground, true); // 讓滾動條不出來 resize(600 + 20, 400 + 20); initControl();}BarEChartWidget::~BarEChartWidget(){ delete ui;}void BarEChartWidget::initControl(){ _pWebEngineView = new QWebEngineView(this); _pWebEnginePage = new QWebEnginePage(this); _pWebChannel = new QWebChannel(this); QString filePath;#if 0 filePath = QString("%1/%2").arg(_htmlDir).arg(_indexFileName);#else filePath = "qrc:/barEChartWidget/html/barEChartWidget.html";#endif LOG << "file exist:" << QFile::exists(filePath) << filePath;#if 0 // 列印html檔案內容 QFile file(_indexFilePath); file.open(QIODevice::ReadOnly); LOG << QString(file.readAll()); file.close();#endif _pWebEnginePage->load(QUrl(filePath)); _pWebEnginePage->setWebChannel(_pWebChannel); _pWebEngineView->setPage(_pWebEnginePage); // 背景透明// _pWebEngineView->setStyleSheet("background-color: transparent");// _pWebEnginePage->setBackgroundColor(Qt::transparent);}void BarEChartWidget::resizeEvent(QResizeEvent *event){ if(_pWebEngineView) { _pWebEngineView->setGeometry(rect()); }}
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>ECharts</title> <!-- 引入剛剛下載的 ECharts 檔案 --><!-- <script src="echarts.js"></script>--> <script src="./echarts.js"></script><!-- <script src="D:/qtProject/echartsDemo/echartsDemo/modules/barEChartWidget/html/echarts.js"></script>--><!-- <script src="echarts.min.js"></script>--><!-- <script src="./echarts.min.js"></script>--><!-- <script src="./html/echarts.min.js"></script>--><!-- <script src="D:/qtProject/echartsDemo/echartsDemo/modules/barEChartWidget/html/echarts.min.js"></script>--> </head> <body> <!-- 為 ECharts 準備一個定義了寬高的 DOM --> <div id="main" style="width:600px; height:400px;"></div> <script type="text/javascript"> // 基於準備好的dom,初始化echarts例項 const myChart = echarts.init(document.getElementById('main')); // 指定圖表的配置項和資料 var option = { title: { text: 'ECharts 入門示例' }, tooltip: {}, legend: { data: ['銷量'] }, xAxis: { data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子'] }, yAxis: {}, series: [ { name: '銷量', type: 'bar', data: [5, 20, 36, 10, 10, 20] } ] }; // 使用剛指定的配置項和資料顯示圖表。 myChart.setOption(option); </script> </body></html>
工程模板v1.0.0
入坑
入坑一:“js: Uncaught TypeError: echarts.init is not a function”錯誤
問題
解決方法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2904095/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Qt+ECharts開發筆記(三):ECharts的柱狀圖介紹、基礎使用和Qt封裝DemoQTEcharts筆記封裝
- Qt+ECharts開發筆記(五):ECharts的動態排序柱狀圖介紹、基礎使用和Qt封裝DemoQTEcharts筆記排序封裝
- Qt+ECharts開發筆記(四):ECharts的餅圖介紹、基礎使用和Qt封裝百分比圖DemoQTEcharts筆記封裝
- Qt+ECharts開發筆記(二):Qt視窗動態調整大小,使ECharts跟隨Qt視窗大小變換QTEcharts筆記
- Echarts立體柱狀圖Echarts
- Echarts 柱狀圖配置詳解Echarts
- Qt+QtWebApp開發筆記(一):QtWebApp介紹、下載和搭建基礎封裝http輕量級伺服器DemoQTWebAPP筆記封裝HTTP伺服器
- echarts 設定柱狀圖寬度Echarts
- echarts 柱狀圖如何橫向展示Echarts
- .net圖表之ECharts隨筆08-bar柱狀圖Echarts
- 地圖開發筆記(一):百度地圖介紹、使用和Qt內嵌地圖Demo地圖筆記QT
- Qwt開發筆記(一):Qwt簡介、下載以及基礎demo工程模板筆記
- echarts 柱狀圖 詳解與使用集合Echarts
- ECharts系列:玩轉ECharts之常用圖(折線、柱狀、餅狀、散點、關係、樹)Echarts
- 如何基於 echarts 實現區間柱狀圖(包括橫向)?Echarts
- libmatio開發筆記(一):matlab檔案操作libmatio庫介紹,編譯和基礎DemoIBM筆記Matlab編譯
- Qwt開發筆記(二):Qwt基礎框架介紹、折線圖介紹、折線圖Demo以及程式碼詳解筆記框架
- Echarts根據資料長度變換柱狀圖柱狀的顏色Echarts
- echarts 3D圓柱圖Echarts3D
- Qt+OpenCascade開發筆記(二):windows開發環境搭建(二):Qt引入occ庫,搭建基礎工程模板Demo和釋出DemoQT筆記Windows開發環境
- echarts柱狀圖示籤顯示不完全的問題Echarts
- echarts基礎應用Echarts
- ECharts 樣式設定介紹Echarts
- Qt+騰訊IM開發筆記(一):騰訊IM介紹、使用和Qt整合騰訊IM-SDK的工程模板DemoQT筆記
- Echarts學習筆記Echarts筆記
- 如何基於 echarts 在柱狀圖或條形圖上實現轉換率?(有想法嗎?)Echarts
- Qt混合Python開發技術:Python介紹、混合過程和DemoQTPython
- Echarts:10-5-2:柱狀圖(座標軸刻度與標籤對齊)Echarts
- Qt開發Activex筆記(二):Qt呼叫Qt開發的Activex控制元件QT筆記控制元件
- 微信小程式echarts-餅狀圖微信小程式Echarts
- 百度開源外掛echarts介紹及如何使用Echarts
- echarts遷移圖動態載入Echarts
- 【持續更新...】ECharts學習筆記Echarts筆記
- 九、柱狀圖和3D柱狀圖3D
- echarts 柱狀圖的選中模式實現-被選中變色和再次選中為取消變色Echarts模式
- 【筆記】Python基礎(二)運算子介紹筆記Python
- Gif開發筆記(一):gif介紹、編譯和工程模板筆記編譯
- Qt開發技術:圖形檢視框架(一)基本介紹QT框架