私はC++とQtを再び掘り起こし始め、WebKit Javascript/Qtバインディングを使用しています。私はQObjectサブクラスがJavascript側で「未定義」であることを除いて、動いているすべての部分を処理しています。ここで私はとのトラブルを抱えている簡単なテストアプリです:QWebFrame addToJavaScriptWindowObject()オブジェクトはJavascriptで定義されていません
私のメインウィンドウの実装:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// instantiate a webview
QWebView *webview = new QWebView(this);
webview->setGeometry(0, 0, 400, 300);
webview->setUrl(QUrl("file://localhost/Users/kyle/Sites/tests/qt/index.html"));
// instantiate and attach our QObject
hello *h = new hello();
QWebFrame *frame = webview->page()->mainFrame();
frame->addToJavaScriptWindowObject("Hello", h);
// show the window
webview->show();
}
HELLO.CPP
...snip...
QString hello::say()
{
return QString("Kyle");
}
Hello.h
...snip includes...
class hello : public QObject
{
Q_OBJECT
public:
hello();
Q_INVOKABLE QString say();
};
以上に上記のindex.htmlファイルは単純なalert(Hello.say())
コールを実行しますが、typeof Hello
、私は未定義になる。
私はC++でちょっと錆びていて、Qtにはかなり新しくなっています。だから私はこれがnoobの間違いだと確信していますが、私は困惑しています。
あなたの 'attachObject()'パブリックスロットクラスメソッドに 'frame'オブジェクトがありません。私は 'QWebFrame * frame = ui-> myWebViewWidget-> page() - > mainFrame();'を実行して私のケースで修正しました。それ以外は、まさに私にとってうまくいきました。 – Volomike
これは、私のオブジェクトをQWebViewウィジェットのmainFrame()に注入するのに最適ですが、それを子のIFRAMEに注入するようには動作しません。あなたは何をしようと思いますか? http://stackoverflow.com/q/33599474/105539 – Volomike