Qt Webengine Widget常見問題
阿新 • • 發佈:2019-01-03
t Webengine Widget常見問題
Author: kagula
LastUpdate: 2015-09-25
Environment:
[1]Qt5.4、Qt5.5
[2]Visual studio 2013 Update5
[3]QT Plugin 1.2.4
注意:
[1]發現和中文輸入法有相容性問題,感覺需要修改render_widget_host_view_qt_delegate_widget.cpp檔案來解決。
[2]若碰到Cannot open include file: 'QtWebEngineWidgets'的問題
則把“C:\Qt\5.4\msvc2013\include\QtWebEngineWidgets”加入到標頭檔案搜尋路徑中。
新增下面兩個lib檔案的連結。
Qt5WebEngined.lib
Qt5WebEngineWidgetsd.lib
這裡假設你用的是Qt5.4。
[3]最簡單的呼叫“Webegine”的示例程式碼段如下:
#include <QtWebEngineWidgets>
#include <QSizePolicy>
Erp2013::Erp2013(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
view = new QWebEngineView(this);
view->load(QUrl("http://www.baidu.com"));
//setCentralWidget(view);
//view->setSizePolicy(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Expanding);
ui.verticalLayout->addWidget(view);
}
[4]html/js如何同C++程式碼互動,參考資料[4]
但是必須注意以下幾點事項:
[4-1]
假設我把index.html重新命名為index2.html,"qwebchannel.js"檔案放在了D:/nginx-1.8.0/html/目錄下面。
如果找不到“qwebchannel.js”檔案可以從下面地址下載:http://code.qt.io/cgit/qt/qtwebchannel.git/tree/src/webchannel/qwebchannel.js
[4-2]修改standalone例子main.cpp的"fromLocalFile"那行程式碼為下面的樣子。
QUrl url = QUrl::fromLocalFile("D:/nginx-1.8.0/html/index2.html");
[4-3]下面這段程式碼是Qt呼叫系統預設瀏覽器開啟上面的超級連結
QUrl url = QUrl::fromLocalFile("D:/nginx-1.8.0/html/index2.html");
url.setQuery(QStringLiteral("webChannelBaseUrl=") + server.serverUrl().toString());//奇怪這行程式碼沒起作用
QDesktopServices::openUrl(url);
[4-4]程式跑起來後,在Web瀏覽器中,你會發現“webChannelBaseUrl”引數沒有正確傳遞。
你需要把下面的字串在瀏覽器中再打一次:
"file:///D:/nginx-1.8.0/html/index2.html?webChannelBaseUrl=ws://127.0.0.1:12345"
[4-5]現在你瀏覽器中的頁面應該和你standalone程式相互通訊了。
[4-6]檢視js程式碼,我把QWebChannel註冊時的“dialog”改為“Erp2013”,下面html中的程式碼
由
window.dialog = channel.objects.dialog;
相應改為了如下:
window.Erp2013 = channel.objects.Erp2013;
類似,把html中dialog名改為了Erp2013.
[5]如何呼叫js函式?
QString code = QString::fromLocal8Bit("alert('呼叫Java function的測試')");
view->page()->runJavaScript(code);
參考資料
[1]《Qt WebEngine Widgets》
http://doc.qt.io/qt-5/qtwebenginewidgets-index.html
[2]《Qt下載》
http://www.qt.io/download-open-source/
[3]《Qt WebEngine Widgets C++ Classes》
http://doc.qt.io/qt-5/qtwebenginewidgets-module.html
[4]《standalone例子》
http://doc.qt.io/qt-5/qtwebchannel-standalone-example.html
Author: kagula
LastUpdate: 2015-09-25
Environment:
[1]Qt5.4、Qt5.5
[2]Visual studio 2013 Update5
[3]QT Plugin 1.2.4
注意:
[1]發現和中文輸入法有相容性問題,感覺需要修改render_widget_host_view_qt_delegate_widget.cpp檔案來解決。
[2]若碰到Cannot open include file: 'QtWebEngineWidgets'的問題
則把“C:\Qt\5.4\msvc2013\include\QtWebEngineWidgets”加入到標頭檔案搜尋路徑中。
新增下面兩個lib檔案的連結。
Qt5WebEngined.lib
Qt5WebEngineWidgetsd.lib
這裡假設你用的是Qt5.4。
[3]最簡單的呼叫“Webegine”的示例程式碼段如下:
#include <QtWebEngineWidgets>
#include <QSizePolicy>
Erp2013::Erp2013(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
view = new QWebEngineView(this);
view->load(QUrl("http://www.baidu.com"));
//setCentralWidget(view);
//view->setSizePolicy(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Expanding);
ui.verticalLayout->addWidget(view);
}
[4]html/js如何同C++程式碼互動,參考資料[4]
但是必須注意以下幾點事項:
[4-1]
假設我把index.html重新命名為index2.html,"qwebchannel.js"檔案放在了D:/nginx-1.8.0/html/目錄下面。
如果找不到“qwebchannel.js”檔案可以從下面地址下載:http://code.qt.io/cgit/qt/qtwebchannel.git/tree/src/webchannel/qwebchannel.js
[4-2]修改standalone例子main.cpp的"fromLocalFile"那行程式碼為下面的樣子。
QUrl url = QUrl::fromLocalFile("D:/nginx-1.8.0/html/index2.html");
[4-3]下面這段程式碼是Qt呼叫系統預設瀏覽器開啟上面的超級連結
QUrl url = QUrl::fromLocalFile("D:/nginx-1.8.0/html/index2.html");
url.setQuery(QStringLiteral("webChannelBaseUrl=") + server.serverUrl().toString());//奇怪這行程式碼沒起作用
QDesktopServices::openUrl(url);
[4-4]程式跑起來後,在Web瀏覽器中,你會發現“webChannelBaseUrl”引數沒有正確傳遞。
你需要把下面的字串在瀏覽器中再打一次:
"file:///D:/nginx-1.8.0/html/index2.html?webChannelBaseUrl=ws://127.0.0.1:12345"
[4-5]現在你瀏覽器中的頁面應該和你standalone程式相互通訊了。
[4-6]檢視js程式碼,我把QWebChannel註冊時的“dialog”改為“Erp2013”,下面html中的程式碼
由
window.dialog = channel.objects.dialog;
相應改為了如下:
window.Erp2013 = channel.objects.Erp2013;
類似,把html中dialog名改為了Erp2013.
[5]如何呼叫js函式?
QString code = QString::fromLocal8Bit("alert('呼叫Java function的測試')");
view->page()->runJavaScript(code);
參考資料
[1]《Qt WebEngine Widgets》
http://doc.qt.io/qt-5/qtwebenginewidgets-index.html
[2]《Qt下載》
http://www.qt.io/download-open-source/
[3]《Qt WebEngine Widgets C++ Classes》
http://doc.qt.io/qt-5/qtwebenginewidgets-module.html
[4]《standalone例子》
http://doc.qt.io/qt-5/qtwebchannel-standalone-example.html