QtWebkit javascript bridge,无法访问 Qt 对象方法
QtWebkit javascript bridge,Cannot access Qt object methods
使用QtWebkit的javascript桥,我创建了一个类,用于将Web框架中的数据与Qt代码的其余部分连接起来。 它识别对象,但不识别其方法。
主窗口.cpp代码:
#include "app.h"
MainWindow::MainWindow(QWidget *parent) : QWebView(parent)
{
happ = new app(this);
m_network = new QNetworkAccessManager(this);
page()->setNetworkAccessManager(m_network);
QFile file("E://qt//test.happ//index.html");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream in(&file);
QString htmlContent = in.readAll();
addJSObject();
QObject::connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),this, SLOT(addJSObject()));
setHtml(htmlContent);
}
void MainWindow::addJSObject()
{
page()->mainFrame()->addToJavaScriptWindowObject(QString("happ"), happ);
};
应用程序代码:
#include <QObject>
class app:public QObject
{
public:
app(QObject *parent);
public slots:
void os_foo();
signals:
void win_bar();
};
JavaScript:
function a(){
if(window.happ){
alert("obj: " + typeof happ); //shows "obj: object"
alert("os_foo: " + typeof happ.os_foo); //shows "os_foo: undefined"
}
}
javascript不能调用app类的函数,你帮帮我谢谢
您是否尝试过在普通(即非插槽功能)上使用Q_INVOKABLE
?试试这个
class app:public QObject
{
public:
app(QObject *parent);
//public slots:
Q_INVOKABLE void os_foo();
signals:
void win_bar();
};
然后像从 JavaScript coode 中调用函数一样调用该函数。
通常这种方法对我有用。不过,我从来没有把Q_SLOT
和Q_INVOKABLE
结合起来。
相关文章:
- Qt:从另一个窗口访问公共对象
- 如何访问QT中传递给程序的参数
- 从 QT Widget 对象实例访问 QT Widget 子成员
- 如何访问Qt::D isplayRole并在TableView中指定列
- 访问QT上的本地用户文件进行Web组件
- 使用C 访问QT / QML对象
- 在连接语句中访问Qt信号的"有效载荷"
- 访问QT小部件线程安全
- 无法从外部cpp文件访问Qt UI
- 如何访问Qt中父选项卡的属性
- QtWebkit javascript bridge,无法访问 Qt 对象方法
- 如何从任何类全局访问 QT 对话框
- 如何在c++项目中访问Qt的资源文件?
- 如何从非Qt函数访问Qt资源数据
- 从Webkit IFRAME(本地页面)访问Qt QWebView桥的技巧
- 使用QJSEngine从JavaScript访问Qt API
- 无法从 void 函数访问 Qt UI
- 访问Qt Designer创建的QWizardPage
- 如何访问Qt中另一个类的变量
- 无法使用 QtWebkit 通过 javascript 访问 Qt 对象方法