暴露C++;对象到Qt中的Javascript 是否有任何方法可以将QC++对象/函数暴露在QtWebKIT浏览器中运行的JavaScript中?可以将ActionScript对象公开给AdobeAIR中WebKit浏览器中运行的JS代码—我正在寻找Qt中类似的功能。
是的。看看它应该是一个好的开始。编辑:链接正在工作,但以防理查德·摩尔再次中断链接 ... 我在#qt和qt兴趣上多次遇到的一个问题是如何 将自定义(特定于应用程序的)API添加到中默认可用的API中 QtWebKit。正如我将要展示的,这其实很容易(一旦你知道怎么做) 在下面这篇文章将展示一个如何使对象可用的简单示例 来自javascript,包括对对象调用方法和返回值 从C++ +< /P> 要执行此操作,有两件事是您真正需要知道的 集成,第一个是的addToJavaScriptWindowObject()方法 QWebFrame,这允许将指定的QObject从 javascript。您需要知道的第二件事是在 每次清除javascript窗口对象时,这种方式都将消失- 即,每次用户导航到新页面时。为了防止这造成 问题是,QWebFrame提供了一个信号,告诉您对象何时被激活 已清除,允许您重新添加自定义API。这实际上要简单得多 比听起来更糟 其核心实际上是通过示例中的两种方法实现的,它们是 如下所示: 这段代码就是您所需要的全部代码,以便生成的所有公共插槽 MyApi对象对javascript可见。MyApi类提供两个公共插槽: 第一个插槽只是将消息记录到调试输出,第二个插槽返回 它的两个参数之和(是的,插槽可以返回东西!)。他们被称为 来自如下javascript: 这就是全部!您可以从>下载代码暴露C++;对象到Qt中的Javascript 是否有任何方法可以将QC++对象/函数暴露在QtWebKIT浏览器中运行的JavaScript中?可以将ActionScript对象公开给AdobeAIR中WebKit浏览器中运行的JS代码—我正在寻找Qt中类似的功能。,javascript,c++,qt,qtwebkit,Javascript,C++,Qt,Qtwebkit,是的。看看它应该是一个好的开始。编辑:链接正在工作,但以防理查德·摩尔再次中断链接 ... 我在#qt和qt兴趣上多次遇到的一个问题是如何 将自定义(特定于应用程序的)API添加到中默认可用的API中 QtWebKit。正如我将要展示的,这其实很容易(一旦你知道怎么做) 在下面这篇文章将展示一个如何使对象可用的简单示例 来自javascript,包括对对象调用方法和返回值 从C++ +< /P> 要执行此操作,有两件事是您真正需要知道的 集成,第一个是的addToJavaScriptWindo
不幸的是,该示例在QT5中不起作用。有没有更新的机会,或者我应该再问一个问题?
void MyApi::setWebView( QWebView *view )
{
QWebPage *page = view->page();
frame = page->mainFrame();
attachObject();
connect( frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(attachObject()) );
}
void MyApi::attachObject()
{
frame->addToJavaScriptWindowObject( QString("MyApi"), this );
}
public slots:
void doSomething( const QString ¶m );
int doSums( int a, int b );
MyApi.doSomething( 'Hello from JS page 2!!!!' );
sum = MyApi.doSums( 2, 3 );
alert( 'C++ says the sum is ' + sum );