文章用来回忆内容,不喜勿喷。
QWebChanne与js交互
下面是用来与JS交互类
webconnect.h
#ifndef WEBCONNECT_H
#define WEBCONNECT_H
#include <QDebug>
#include <QObject>
class webconnect : public QObject
{
Q_OBJECT
public:
public slots:
void receiveText(const QString &r_text);
signals:
void sendText(const QString &text);
};
#endif // WEBCONNECT_H
头文件里面我认为最重要也是最容易忽视的就是
: public QObject 和 Q_OBJECT类里如果少了这两样就会调用失败,这折腾了我几天的时间.....
webconnect.cpp
#include "webconnect.h"void webconnect::receiveText(const QString &r_text){qDebug()<<(QObject::tr("Received message: %1").arg(r_text));}下面是怎样从QT传类对象到JS
QWebEnginePage *page = new QWebEnginePage(this);ui->webEngineView->setPage(page);QWebChannel *channel = new QWebChannel(this);channel->registerObject(QStringLiteral("content"), &lianjie); //lianjie就是交互类page->setWebChannel(channel);
ui->webEngineView->setUrl(QUrl("xxxxxx"));
signals就是发出信号的意思
在JS文件里面我是这样写的
window.onload = function() { new QWebChannel(qt.webChannelTransport, function(channel) { // make dialog object accessible globally var content = channel.objects.content; //把对象赋值到JS中 content.receiveText("sss"); //c++中调用类中的函数一样 } content.sendText.connect(function(message) { //连接QT中发出的信号,里面的message是参数;只需要在QT中调用此函数也就是sendText就可以调用JS函数 alert("Received message: " + message); }); }); }
如果出现什么js找不到什么函数,那就是你写的连接类有问题。2016年10月23日01:13:37
好了该睡觉了(~﹃~)~zZ !!!