我已經開始深入研究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