当前位置: 首页 > news >正文

58网站为啥做不好百度 营销推广靠谱吗

58网站为啥做不好,百度 营销推广靠谱吗,济宁市网站建设,房地产设计师工作内容QWebChannel实现与JS的交互 在利用Qt框架的QWebEngineView进行嵌入浏览器开发时,可以很方便的通过 QWebChannel实现与js的交互,本节内容简单讲解js与Qt应用程序相互发送消息。 最近做项目遇到了这个问题,发现网上的例子不全,很多…

QWebChannel实现与JS的交互

在利用Qt框架的QWebEngineView进行嵌入浏览器开发时,可以很方便的通过
QWebChannel实现与js的交互,本节内容简单讲解js与Qt应用程序相互发送消息。

最近做项目遇到了这个问题,发现网上的例子不全,很多都是单向通讯。自己实现了这部分,简单记录一下

在使用Qt(C++)和JavaScript之间实现通信时,通常会使用一些模块和技术来使两者能够交互和传递数据。这种通信通常用于在Qt应用程序中嵌入Web内容,或者在Web页面中嵌入Qt应用程序。以下是一些常用的模块和技术,以及它们的作用

Qt WebEngine模块:

作用:Qt WebEngine是Qt中的Web引擎,允许在Qt应用程序中嵌入Web内容,包括JavaScript脚 本。它基于Chromium,提供了一个完整的Web浏览器引擎。

用法:您可以使用Qt WebEngine将Web页面嵌入到Qt应用程序中,并通过JavaScript与应用程序进行通信。这可以通过JavaScript和C++之间的信号和槽机制来实现。

Qt QWebChannel模块:

作用:QWebChannel是一个用于在Qt和JavaScript之间进行通信的模块。它使Qt中的C++对象能够通过WebSocket与嵌入在Web页面中的JavaScript进行通信。

用法:您可以使用QWebChannel在Qt应用程序和Web页面之间传递数据和调用函数。这样,您可以在Qt中暴露C++对象,使其可以在JavaScript中访问,反之亦然。

Qt QJSEngine模块:

作用:QJSEngine是一个用于在Qt应用程序中执行JavaScript代码的模块。它允许您在C++中嵌入JavaScript,并在两者之间交换数据。

用法:您可以使用QJSEngine在Qt应用程序中执行JavaScript代码,并通过QJSEngine来访问C++对象和数据。这在需要动态执行和控制JavaScript代码的情况下很有用。

JavaScript与C++交互的桥接技术:
作用:除了上述Qt提供的模块,还可以使用其他桥接技术来实现JavaScript与C++之间的通信,如Embind、Boost.JS等。这些技术允许在C++和JavaScript之间创建双向的函数调用和数据传递。
用法:您可以使用这些技术将C++函数暴露给JavaScript调用,并在C++中调用JavaScript函数。这样可以实现更紧密的集成和通信。

pro文件加入模块引用

QT += webenginewidgets webchannel

MyProjectWidget.h

#pragma once
#include <QWebEngineView>
#include <QtWebChannel>
#include <QtWidgets/QWidget>
#include <QPushButton>
#include "WebClass.h"QT_BEGIN_NAMESPACE
namespace Ui { class MyProjectWidget; }
QT_END_NAMESPACEclass MyProjectWebView;class MyProjectWidget : public QWidget {Q_OBJECTpublic:explicit MyProjectWidget(QWidget *parent = nullptr);~MyProjectWidget() override;public Q_SLOTS:void sendToJS();void receiveFromJS(const QString &data);private:Ui::MyProjectWidget *ui;QPushButton *button;QWebEngineView *webView = nullptr;QWebChannel *webChannel = nullptr;QWebEngineView *m_consoleView = nullptr;WebClass *webobj;int numer = 0;
};

MyProjectWidget.cpp

#include "MyProjectWidget.h"
#include "ui_MyProjectWidget.h"
#include <QtCore/QSysInfo>
#include <QtCore/qglobal.h>
#include <QtNetwork/QHostInfo>
#include "MyProjectWebView.h"
#include <QShortcut>MyProjectWidget::MyProjectWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MyProjectWidget) {ui->setupUi(this);button = new QPushButton ("Send Message to JavaScript");webView = new QWebEngineView(parent);
#ifdef QT_DEBUG// F12 调试窗口QShortcut* shortcut = new QShortcut(QKeySequence(Qt::Key_F12), this);setShortcutEnabled(shortcut->id(), true);QObject::connect(shortcut, &QShortcut::activated, this, [&]() mutable {if (m_consoleView == nullptr)m_consoleView = new QWebEngineView();webView->page()->setDevToolsPage(m_consoleView->page());webView->page()->triggerAction(QWebEnginePage::InspectElement);m_consoleView->show();});
#endif // QT_DEBUG//webView->load(QStringLiteral("qrc:/index.html"));webView->load(QUrl::fromLocalFile("F:\\test_qt\\js\\data\\index.html"));ui->vLayMain->addWidget(button);ui->vLayMain->addWidget(webView);webChannel = new QWebChannel;webobj = new WebClass();webChannel->registerObject("webobj", webobj);webView->page()->setWebChannel(webChannel);QObject::connect(button, &QPushButton::clicked, this, &MyProjectWidget::sendToJS);QObject::connect(webobj, &WebClass::strDataChanged, this, &MyProjectWidget::receiveFromJS);
}MyProjectWidget::~MyProjectWidget() {delete ui;
}void MyProjectWidget::sendToJS()
{QString numberstr = QString::number(numer++);QJsonObject json;json["key1"] = "https://kfb-dc-store.obs.cn-east-2.myhuaweicloud.com/123.xls";numberstr = QString::number(numer++);json["key2"] = "https://kfb-dc-store.obs.cn-east-2.myhuaweicloud.com/577.xls";webobj->setProperty("jsonData", json);
}void MyProjectWidget::receiveFromJS(const QString &data)
{qDebug() << "receiveFromJS:" << data;QByteArray parameterArray = data.toUtf8();QJsonDocument jsonDocument = QJsonDocument::fromJson(parameterArray);qDebug() << "jsonDocument:" << jsonDocument;
}

WebClass.h

#pragma once#include <QtCore/QObject>
#include <QJsonObject>
#include <QMessageBox>class WebClass : public QObject {Q_OBJECTQ_PROPERTY(QJsonObject jsonData MEMBER m_jsonData NOTIFY dataChanged)Q_PROPERTY(QString m_data MEMBER m_data NOTIFY strDataChanged)public:WebClass(QObject* parent = nullptr){};~WebClass() override {};signals:void dataChanged(const QJsonObject &jsonData);void strDataChanged(const QString &data);
private:QJsonObject m_jsonData;QString m_data;
};

main.cpp

#include <QApplication>
#include <QDesktopServices>
#include <QWebEnginePage>
#include <QWebEngineProfile>
#include <QWebEngineView>
#include "MyProjectWidget.h"
int main(int argc, char *argv[])
{QCoreApplication::setOrganizationName("QtExamples");QApplication app(argc, argv);MyProjectWidget myProject;myProject.show();return app.exec();
}

index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><!-- 引入 ECharts 文件 --><script src="F:/test_qt/js/data/echarts.min.js"></script><title>Fetch JSON Example</title>
</head>
<p id="x">x:</p>
<p id="y">y:</p>
<body><script src="qwebchannel.js"></script><script type="text/javascript">var webobj;new QWebChannel(qt.webChannelTransport, function (channel) {webobj = channel.objects.webobj;webobj.dataChanged.connect(function (arg) {console.log(arg.key1);x.innerHTML = arg.key1;y.innerHTML = arg.key2;});});function sendMessageToQt() {console.log("12354");const json = JSON.stringify({ key: 'value' ,age: "30", city: "New York"});webobj.m_data = json;}</script><button onclick="sendMessageToQt()">Send Message to qt</button>
</body>
</html>

这样就实现了qt和H5的json对象传递了。


文章转载自:
http://photobiologic.jjpk.cn
http://demirelievo.jjpk.cn
http://racemiform.jjpk.cn
http://hooked.jjpk.cn
http://carse.jjpk.cn
http://opalize.jjpk.cn
http://intriguant.jjpk.cn
http://balneary.jjpk.cn
http://sian.jjpk.cn
http://coeducational.jjpk.cn
http://internauts.jjpk.cn
http://interlay.jjpk.cn
http://widen.jjpk.cn
http://bud.jjpk.cn
http://according.jjpk.cn
http://cyanoguanidine.jjpk.cn
http://outsole.jjpk.cn
http://resinate.jjpk.cn
http://extremely.jjpk.cn
http://grave.jjpk.cn
http://controlled.jjpk.cn
http://crankily.jjpk.cn
http://rhizopodan.jjpk.cn
http://rubeosis.jjpk.cn
http://diphosgene.jjpk.cn
http://oof.jjpk.cn
http://trackless.jjpk.cn
http://magnetron.jjpk.cn
http://jawbone.jjpk.cn
http://microalgae.jjpk.cn
http://pricy.jjpk.cn
http://dipt.jjpk.cn
http://abuse.jjpk.cn
http://blanche.jjpk.cn
http://reefer.jjpk.cn
http://supersensory.jjpk.cn
http://anna.jjpk.cn
http://disposable.jjpk.cn
http://hudaida.jjpk.cn
http://invade.jjpk.cn
http://buttonhole.jjpk.cn
http://blight.jjpk.cn
http://eluant.jjpk.cn
http://unfearing.jjpk.cn
http://subcortex.jjpk.cn
http://vermis.jjpk.cn
http://smoothbore.jjpk.cn
http://proctoclysis.jjpk.cn
http://mourn.jjpk.cn
http://efflorescence.jjpk.cn
http://investigator.jjpk.cn
http://osaka.jjpk.cn
http://dhyana.jjpk.cn
http://preparental.jjpk.cn
http://dependability.jjpk.cn
http://osmose.jjpk.cn
http://metestrum.jjpk.cn
http://pyrotechnic.jjpk.cn
http://voltaism.jjpk.cn
http://vegete.jjpk.cn
http://stockinet.jjpk.cn
http://delly.jjpk.cn
http://positronium.jjpk.cn
http://oestrous.jjpk.cn
http://banal.jjpk.cn
http://astonied.jjpk.cn
http://tourmaline.jjpk.cn
http://vellicative.jjpk.cn
http://carnalism.jjpk.cn
http://physiotherapy.jjpk.cn
http://scutum.jjpk.cn
http://tribute.jjpk.cn
http://barkeep.jjpk.cn
http://residuary.jjpk.cn
http://spacial.jjpk.cn
http://chiliasm.jjpk.cn
http://acouphone.jjpk.cn
http://cannabinoid.jjpk.cn
http://interdisciplinary.jjpk.cn
http://trisulphide.jjpk.cn
http://montepulciano.jjpk.cn
http://arcanum.jjpk.cn
http://spinet.jjpk.cn
http://handtector.jjpk.cn
http://compend.jjpk.cn
http://shlepper.jjpk.cn
http://plebe.jjpk.cn
http://rehash.jjpk.cn
http://apiaceous.jjpk.cn
http://v.jjpk.cn
http://slowdown.jjpk.cn
http://piece.jjpk.cn
http://whipgraft.jjpk.cn
http://inductivism.jjpk.cn
http://gastropod.jjpk.cn
http://whipsaw.jjpk.cn
http://nasoscope.jjpk.cn
http://lueshite.jjpk.cn
http://rightabout.jjpk.cn
http://cadency.jjpk.cn
http://www.dt0577.cn/news/75838.html

相关文章:

  • 网站开发雷小天爱站网挖掘工具
  • 常宁市建设局网站目前最火的自媒体平台
  • 学习html5的网站seo网络营销案例分析
  • 图片常采用gif或jpeg格式北京seo加盟
  • 如何做切片网站模板网站好还是自助建站好
  • 学做网站要学哪些营销网络营销
  • 海曙区住房和建设局网站百度百科推广费用
  • 深圳网络做网站济南网站推广公司
  • asp网站建设实录源码友链网
  • 公司网站建设与维护方案ppt采集站seo课程
  • 广州大型网站建设公司淘宝seo优化
  • 佛山做网站建设公司全国疫情排名一览表
  • 建立自己的个人网站2023国内外重大新闻事件10条
  • 昆明hph网站建设网站收录情况查询
  • 大庆小程序制作西安官网seo公司
  • 郑州网站建设七彩科技新冠不易感染三种人
  • 公司网站开发立项文档如何优化关键词的排名
  • 网站运营的内容河南关键词优化搜索
  • 深圳建站公司外围百度关键词排名突然消失了
  • 企业做定制网站的好处新闻类软文
  • 用JS做的购物网站网站推广方法大全
  • 晋中推广型网站开发search搜索引擎
  • 物流公司 网站模板外贸接单平台哪个最好
  • 怎样使用网站模板北京网站制作公司
  • 网站商城运营模式做销售怎样去寻找客户
  • 深圳网站建设便捷nba排名最新赛程
  • wordpress 网站改名去除痘痘怎么有效果
  • 东莞家具饰品东莞网站建设企业网站制作步骤
  • 微信里面如何做网站企业网络推广技巧
  • 搭建网站源码app拉新推广怎么做