void wrapInFunction() { //! [0] // ... QWebFrame *frame = myWebPage->mainFrame(); frame->addToJavaScriptWindowObject("someNameForMyObject", myObject); // ... //! [0] #if 0 //! [1] { width: ..., height: ..., toDataURL: function() { ... }, assignToHTMLImageElement: function(element) { ... } } //! [1] #endif //! [2] class MyObject : QObject { Q_OBJECT Q_PROPERTY(QPixmap myPixmap READ getPixmap) public: QPixmap getPixmap() const; }; /* ... */ MyObject myObject; myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject); //! [2] #if 0 //! [3] <html> <head> <script> function loadImage() { myObject.myPixmap.assignToHTMLImageElement(document.getElementById("imageElement")); } </script> </head> <body onload="loadImage()"> <img id="imageElement" width="300" height="200" /> </body> </html> //! [3] #endif //! [4] class MyObject : QObject { Q_OBJECT public slots: void doSomethingWithWebElement(const QWebElement&); }; /* ... */ MyObject myObject; myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject); //! [4] #if 0 //! [5] <html> <head> <script> function runExample() { myObject.doSomethingWithWebElement(document.getElementById("someElement")); } </script> </head> <body onload="runExample()"> <span id="someElement">Text</span> </body> </html> //! [5] //! [6] connect(function); //! [6] //! [7] function myInterestingScriptFunction() { ... } ... myQObject.somethingChanged.connect(myInterestingScriptFunction); //! [7] //! [8] myQObject.somethingChanged.connect(myOtherQObject.doSomething); //! [8] //! [9] myQObject.somethingChanged.disconnect(myInterestingFunction); myQObject.somethingChanged.disconnect(myOtherQObject.doSomething); //! [9] //! [10] myQObject.somethingChanged.connect(thisObject, function) //! [10] //! [11] var form = { x: 123 }; var onClicked = function() { print(this.x); }; myButton.clicked.connect(form, onClicked); //! [11] //! [12] myQObject.somethingChanged.disconnect(thisObject, function); //! [12] //! [13] connect(function); //! [13] //! [14] myQObject.somethingChanged.connect(thisObject, "functionName") //! [14] //! [15] var obj = { x: 123, fun: function() { print(this.x); } }; myQObject.somethingChanged.connect(obj, "fun"); //! [15] //! [16] connect(function); //! [16] //! [17] myQObject.somethingChanged.disconnect(thisObject, "functionName"); //! [17] //! [18] try { myQObject.somethingChanged.connect(myQObject, "slotThatDoesntExist"); } catch (e) { print(e); } //! [18] //! [19] myQObject.somethingChanged("hello"); //! [19] //! [20] myQObject.myOverloadedSlot(10); // will call the int overload myQObject.myOverloadedSlot("10"); // will call the QString overload //! [20] //! [21] myQObject['myOverloadedSlot(int)']("10"); // call int overload; the argument is converted to an int myQObject['myOverloadedSlot(QString)'](10); // call QString overload; the argument is converted to a string //! [21] //! [22] class MyObject : public QObject { Q_OBJECT public: Q_INVOKABLE void thisMethodIsInvokableInJavaScript(); void thisMethodIsNotInvokableInJavaScript(); ... }; //! [22] //! [23] Q_PROPERTY(bool enabled READ enabled WRITE setEnabled) //! [23] //! [24] myQObject.enabled = true; ... myQObject.enabled = !myQObject.enabled; //! [24] //! [25] myDialog.okButton //! [25] //! [26] myDialog.okButton myDialog.okButton.objectName = "cancelButton"; // from now on, myDialog.cancelButton references the button //! [26] #endif }