文章用来回忆内容,不喜勿喷。
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 !!!