日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt显示echart_Qt配置,载入html,Echart, 交互

發布時間:2023/12/4 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt显示echart_Qt配置,载入html,Echart, 交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、下載、安裝、配置

b)????? 編譯器下載,本次要用到MSVC的編譯器,下載安裝visual studio 2017 版本(某博客說該版本支持 QWebEngineView)

c)????? QT 安裝過程中缺少組件可在QT安裝目錄下找到 MaintenanceTool.exe 添加;

i.????????? 需要注冊,或者更新 MaintenanceTool.exe;

iii.????????? 組件選擇時勾選要使用的QT相關的組件尤其是 webengine;

d)????? 環境變量配置;將QT編譯器的include 和 bin 添加到系統 path;(有說法不用配置)

i.????????? C:\Qt\Qt5.9.0\5.9\msvc2017_64\include

ii.????????? C:\Qt\Qt5.9.0\5.9\msvc2017_64\bin

e)????? 打開Qt Creator ->工具->選項->構建和運行 配置Kit;

i.????????? 主要包括 編譯器、調試器、Qt 版本 三個信息;

ii.

f)?????? 打開QT安裝目錄下的Examples ;

i.????????? C:\Qt\Qt5.9.0\Examples\Qt-5.9\webenginewidgets

ii.????????? 編譯運行其中的 minimal項目,成功即可。

二、QT 項目結構簡介

三、QT 使用QWebEngineView 顯示 html

a)????? 工程文件 .pro 中添加

QT += webenginewidgets webchannel

i.????????? Webenginewidgets (web顯示類,用于顯示web界面)

ii.????????? Webchannel(web數據通道類,用于數據通信)

b)????? 雙擊打開界面ui,在UI編輯器中添加一個widget,(建議改名,ganttChart)并將widget提升為“QWebEngineView” ;

c)????? 在工程中引入html文件和相關的js等資源;項目右鍵->Add Existing Directory

d)????? 在代碼中載入html; (添加對應的頭文件)

QString htmlpath ="D:/Qt_project/QtCommDialog/demo1/a.html";

ui->ganttChart->load(QUrl(htmlPath));

e)????? 選擇MSVC 2017 編譯器運行即可顯示html頁面;

四、QT 調用前端 js

a)????? QT是通過QWebEngineView來調用HTML頁面的,而HTML是通過JS來調用ECharts。因此QT可以通過QWebEngineView調用加載的html頁面中的JS方法,先將HTML頁面中JS設置ECharts屬性的那段代碼封裝成一個方法供QWebEngineView調用。

b)????? 在QT工程中的UI界面中增加一個QPushButton并添加信號和槽函數,在槽函數中添加如下代碼;

槽函數代碼:(封裝成 json 數據)

QJsonObject seriesData;

QJsonArray data1 = {1, 3, 9, 27, 81, 247};

seriesData.insert("data1", data1);

QString optionStr = QJsonDocument(seriesData).toJson();

QString js = QString("init2(%1)").arg(optionStr);

ui->ganttChart->page()->runJavaScript(js);

js 代碼:

function init2(str){

// 指定圖表的配置項和數據

var option = {

title: {

text: '第一個 ECharts 實例'

},

tooltip: {},

legend: {

data:['銷量']

},

xAxis: {

data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]

},

yAxis: {},

series: [{

name: '銷量',

type: 'bar',

data: str["data1"]

}]

};

// 使用剛指定的配置項和數據顯示圖表。

myChart.setOption(option);

}

五、Qt與前端交互Qwebchannel

a)????? QWebEngine實現一個能打開網頁的簡單瀏覽器的基礎的項目;

b)????? 本地應用與網頁端之間的通訊過程,是通過信號和槽函數實現的,本地應用通過發送信號達到把信息發送到網頁端,而網頁端通過直接調用槽函數實現把信息傳到本地應用。很簡單,就是本地應用通過發送通訊類的信號通知網頁端,網頁端通過直接調用通訊類的槽函數來通知本地應用。網頁端對本地應用的操作一定要調用槽函數,寫在public slots 限定符下面的槽函數,不能是普通的public函數。

流程:

i.????????? 實現一個繼承于QObject的類(以下簡稱通信類),此類包含本地應用與網頁端通信的所有方法(信號,槽函數的方式);

ii.????????? 給本地應用的網頁載體QWebEnginePage對象注冊通信類對象;

iii.????????? 網頁實現中引入qwebchannel.js,創建網頁端的QWebChannel對象并與本地應用的通信類對像進行關聯,最終實現網頁端能夠直接訪問通信類的方法與本地應用進行通訊;

六、信號槽函數使用

signals:

void findNext(const QString &str, Qt::CaseSensitivity cs);

void findPrevious(const QString &str, Qt::CaseSensitivity cs);

private slots:

void findClicked();

void enableFindButton(const QString &text);

a)? ? ? 發送信號? emit findPrevious(text, cs);

b)????? 槽函數:需要在GUI里添加;

c)????? connect(ui->pushButton_2,SIGNAL(clicked()),this, SLOT(onResizeEcharts()));

d)????? 一個信號可以連接多個槽函數,這些槽會一個接一個的被調用,但是它們的調用順序是不確定的。

七、Shared library

a)????? 創建動態鏈接庫

i.????????? 創建Library項目

ii.????????? 創建UI文件

iii.????????? 編輯UI文件,添加widget 提升為QWebEngineView;

iv.????????? 根據UI文件編輯頭文件和源文件(將代碼和UI關聯,然后在代碼控制UI控件)

b)????? 使用動態鏈接庫

i.????????? 創建項目

ii.????????? 將動態鏈接庫的四個文件拷貝到項目目錄下

iii.????????? 編輯項目的pro文件

INCLUDEPATH 這一行就是為了讓我們的項目可以找到 ganttchardll.h 和 ganttchardll_global.h 這兩個文件,你需要把這里的路徑替換成符合你的工程的路徑。LIBS 這一行則需要告訴編譯器(注意,這里是編譯器)到哪里去找到這個 dll 文件。

iv.????????? 編輯源文件

v.????????? 找到工程下的exe文件,運行缺少dll,將dll復制到當前文件;(運行時需要dll,查找順序:當前路徑-系統路徑)

vi.????????? 運行即可。

c)????? 更新dll

共享庫的一個好處是可以動態加載,也就是說,如果你需要升級程序,那么就要簡單的替換掉這個 dll 就好了,不需要要求用戶重新安裝全部文件。當然,這些 dll 也是有缺點的:動態加載的東西肯定會比靜態編譯的東西效率低一些。不過在現在的硬件環境下,這點性能損失已經可以忽略不計了。

1、修改共享庫的代碼,添加一個按鈕,槽函數為點擊關閉。

2、選擇重新構建項目

3、將項目目錄下的dll替換新的dll。

4、運行即可

八、項目源碼

九、參考文獻

Qt 基礎通識:

qt加載EChart 調用js:

Qt UI和 代碼關聯:

Qt 動態鏈接庫:

qt html webchannel 通信:

總結

以上是生活随笔為你收集整理的qt显示echart_Qt配置,载入html,Echart, 交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。