diff options
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/doc/src')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/doc/src/simplebrowser-model.qmodel | 938 | ||||
-rw-r--r-- | examples/webenginewidgets/simplebrowser/doc/src/simplebrowser.qdoc | 263 |
2 files changed, 1201 insertions, 0 deletions
diff --git a/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser-model.qmodel b/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser-model.qmodel new file mode 100644 index 000000000..ce6f8ea2a --- /dev/null +++ b/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser-model.qmodel @@ -0,0 +1,938 @@ +<?xml version="1.0" encoding="UTF-8"?> +<qmt> + <project> + <uid>{fa2cc127-337e-4194-b272-fc8bb6c1e3b0}</uid> + <root-package> + <instance> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{4ffa8932-4330-4845-af33-c26f0fcdecd7}</uid> + </MElement> + </base-MElement> + <name>simplebrowser-model</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{de670101-4064-4a81-bdf0-885b4cb09526}</uid> + <target> + <instance type="MCanvasDiagram"> + <MCanvasDiagram> + <base-MDiagram> + <MDiagram> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{de670101-4064-4a81-bdf0-885b4cb09526}</uid> + </MElement> + </base-MElement> + <name>simplebrowser-model</name> + </MObject> + </base-MObject> + <elements> + <qlist> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{b7b131f9-5e56-484a-ba8b-c7a5fc34fb7b}</uid> + </DElement> + </base-DElement> + <object>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</object> + <name>BrowserWindow</name> + <pos>x:190;y:100</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{8d3e6a00-ffa6-497a-a5a2-f1ba13deee76}</uid> + </DElement> + </base-DElement> + <object>{72a2b731-3aad-430f-a76c-f43dd9b36462}</object> + <name>Browser</name> + <pos>x:5;y:100</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DAssociation"> + <DAssociation> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{5ab59ef4-3509-4ea3-900e-20d1cea16af1}</uid> + </DElement> + </base-DElement> + <object>{e878ee71-b5d1-4943-b081-466851b0f721}</object> + <a>{8d3e6a00-ffa6-497a-a5a2-f1ba13deee76}</a> + <b>{b7b131f9-5e56-484a-ba8b-c7a5fc34fb7b}</b> + </DRelation> + </base-DRelation> + <a> + <DAssociationEnd> + <cradinality>1..*</cradinality> + <kind>2</kind> + </DAssociationEnd> + </a> + <b> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </b> + </DAssociation> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{487d395c-3f8b-422c-9568-d70a5d50a9d4}</uid> + </DElement> + </base-DElement> + <object>{1ab2b778-127b-4661-ba2d-8f329f44d859}</object> + <name>TabWidget</name> + <pos>x:360;y:100</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DAssociation"> + <DAssociation> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{cc9dee75-9f9c-4599-acf8-35e14f75cd78}</uid> + </DElement> + </base-DElement> + <object>{ee3a86b4-773d-4ea5-81c1-552501061629}</object> + <a>{b7b131f9-5e56-484a-ba8b-c7a5fc34fb7b}</a> + <b>{487d395c-3f8b-422c-9568-d70a5d50a9d4}</b> + </DRelation> + </base-DRelation> + <a> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </a> + <b> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </b> + </DAssociation> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{9d909ab7-02a8-4582-89cd-b31bb794bc40}</uid> + </DElement> + </base-DElement> + <object>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</object> + <name>WebView</name> + <pos>x:550;y:100</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DAssociation"> + <DAssociation> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{1e82e3ce-c835-4b7a-99ec-ae40e07f0185}</uid> + </DElement> + </base-DElement> + <object>{97fd8235-200e-4448-b173-51add1df8edc}</object> + <a>{487d395c-3f8b-422c-9568-d70a5d50a9d4}</a> + <b>{9d909ab7-02a8-4582-89cd-b31bb794bc40}</b> + </DRelation> + </base-DRelation> + <a> + <DAssociationEnd> + <cradinality>1..*</cradinality> + <kind>2</kind> + </DAssociationEnd> + </a> + <b> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </b> + </DAssociation> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{ed0a94cd-0abd-49f6-ac98-3da13fef9dff}</uid> + </DElement> + </base-DElement> + <object>{320f3a48-12de-4bcb-b7f5-47b12c77dbee}</object> + <name>WebPage</name> + <pos>x:720;y:100</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DAssociation"> + <DAssociation> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{06ce5b46-b043-45b8-8718-0054d7baf939}</uid> + </DElement> + </base-DElement> + <object>{772227ff-d0df-4ecd-97ea-89d1bd10a96f}</object> + <a>{9d909ab7-02a8-4582-89cd-b31bb794bc40}</a> + <b>{ed0a94cd-0abd-49f6-ac98-3da13fef9dff}</b> + </DRelation> + </base-DRelation> + <a> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </a> + <b> + <DAssociationEnd> + <cradinality>1</cradinality> + </DAssociationEnd> + </b> + </DAssociation> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{cb588414-35d6-482f-a9df-2dddb7d72af1}</uid> + </DElement> + </base-DElement> + <object>{9b91aa7b-0fa3-4c78-9e8d-e1bfdfce9f7f}</object> + <name>QWebEngineView</name> + <pos>x:550;y:0</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{c9755d3b-0ed4-4821-95d3-64f4f4cdb458}</uid> + </DElement> + </base-DElement> + <object>{6659de40-605d-4744-8654-73ae959dcb8a}</object> + <name>QWebEnginePage</name> + <pos>x:720;y:0</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DInheritance"> + <DInheritance> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{6bdcd7e9-fa78-417d-9024-47796596e18d}</uid> + </DElement> + </base-DElement> + <object>{1176aee6-be27-4b21-be22-33bca908a71e}</object> + <a>{9d909ab7-02a8-4582-89cd-b31bb794bc40}</a> + <b>{cb588414-35d6-482f-a9df-2dddb7d72af1}</b> + </DRelation> + </base-DRelation> + </DInheritance> + </instance> + </item> + <item> + <instance type="DInheritance"> + <DInheritance> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{30abce68-7fa1-4b0c-8620-9f96c7392be7}</uid> + </DElement> + </base-DElement> + <object>{20788ccc-cab0-406b-8cf4-d8062570085e}</object> + <a>{ed0a94cd-0abd-49f6-ac98-3da13fef9dff}</a> + <b>{c9755d3b-0ed4-4821-95d3-64f4f4cdb458}</b> + </DRelation> + </base-DRelation> + </DInheritance> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{a372397b-316a-48c0-b99f-724372413a64}</uid> + </DElement> + </base-DElement> + <object>{32e677d2-4bfb-4f5d-93dc-67fdb1a0c8a1}</object> + <name>QTabWidget</name> + <pos>x:360;y:0</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DInheritance"> + <DInheritance> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{dce2499c-fdef-40e3-ba77-29b94f8beb1b}</uid> + </DElement> + </base-DElement> + <object>{66fd2699-e4ea-4312-990a-7488c75fc850}</object> + <a>{487d395c-3f8b-422c-9568-d70a5d50a9d4}</a> + <b>{a372397b-316a-48c0-b99f-724372413a64}</b> + </DRelation> + </base-DRelation> + </DInheritance> + </instance> + </item> + <item> + <instance type="DClass"> + <DClass> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{35e8a91e-8192-4e17-b6c7-e44b3ba3a138}</uid> + </DElement> + </base-DElement> + <object>{988c1b8e-1e9a-4d03-b9b4-75ba5dcac6d7}</object> + <name>QMainWindow</name> + <pos>x:190;y:0</pos> + <rect>x:-55;y:-30;w:110;h:60</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DClass> + </instance> + </item> + <item> + <instance type="DInheritance"> + <DInheritance> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{7dd17b0c-4256-463f-8852-c4faf0614997}</uid> + </DElement> + </base-DElement> + <object>{9f29593e-b0b5-4488-ae5d-2378857535a0}</object> + <a>{b7b131f9-5e56-484a-ba8b-c7a5fc34fb7b}</a> + <b>{35e8a91e-8192-4e17-b6c7-e44b3ba3a138}</b> + </DRelation> + </base-DRelation> + </DInheritance> + </instance> + </item> + </qlist> + </elements> + <last-modified>1456935246527</last-modified> + </MDiagram> + </base-MDiagram> + </MCanvasDiagram> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{72a2b731-3aad-430f-a76c-f43dd9b36462}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{72a2b731-3aad-430f-a76c-f43dd9b36462}</uid> + <flags>1</flags> + </MElement> + </base-MElement> + <name>Browser</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{736a9cc9-35f1-47c1-bdc4-c3033d14a33d}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{736a9cc9-35f1-47c1-bdc4-c3033d14a33d}</uid> + </MElement> + </base-MElement> + <a>{72a2b731-3aad-430f-a76c-f43dd9b36462}</a> + <b>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{e878ee71-b5d1-4943-b081-466851b0f721}</uid> + <target> + <instance type="MAssociation"> + <MAssociation> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{e878ee71-b5d1-4943-b081-466851b0f721}</uid> + </MElement> + </base-MElement> + <a>{72a2b731-3aad-430f-a76c-f43dd9b36462}</a> + <b>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</b> + </MRelation> + </base-MRelation> + <a> + <MAssociationEnd> + <cardinality>1..*</cardinality> + <kind>2</kind> + </MAssociationEnd> + </a> + <b> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </b> + </MAssociation> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</uid> + <flags>1</flags> + </MElement> + </base-MElement> + <name>BrowserWindow</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{ee3a86b4-773d-4ea5-81c1-552501061629}</uid> + <target> + <instance type="MAssociation"> + <MAssociation> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{ee3a86b4-773d-4ea5-81c1-552501061629}</uid> + </MElement> + </base-MElement> + <a>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</a> + <b>{1ab2b778-127b-4661-ba2d-8f329f44d859}</b> + </MRelation> + </base-MRelation> + <a> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </a> + <b> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </b> + </MAssociation> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{9f29593e-b0b5-4488-ae5d-2378857535a0}</uid> + <target> + <instance type="MInheritance"> + <MInheritance> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{9f29593e-b0b5-4488-ae5d-2378857535a0}</uid> + </MElement> + </base-MElement> + <a>{ee93b67f-4caf-4d92-9303-f6c2582bf1b9}</a> + <b>{988c1b8e-1e9a-4d03-b9b4-75ba5dcac6d7}</b> + </MRelation> + </base-MRelation> + </MInheritance> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{1ab2b778-127b-4661-ba2d-8f329f44d859}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{1ab2b778-127b-4661-ba2d-8f329f44d859}</uid> + <flags>1</flags> + </MElement> + </base-MElement> + <name>TabWidget</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{97fd8235-200e-4448-b173-51add1df8edc}</uid> + <target> + <instance type="MAssociation"> + <MAssociation> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{97fd8235-200e-4448-b173-51add1df8edc}</uid> + </MElement> + </base-MElement> + <a>{1ab2b778-127b-4661-ba2d-8f329f44d859}</a> + <b>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</b> + </MRelation> + </base-MRelation> + <a> + <MAssociationEnd> + <cardinality>1..*</cardinality> + <kind>2</kind> + </MAssociationEnd> + </a> + <b> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </b> + </MAssociation> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{66fd2699-e4ea-4312-990a-7488c75fc850}</uid> + <target> + <instance type="MInheritance"> + <MInheritance> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{66fd2699-e4ea-4312-990a-7488c75fc850}</uid> + </MElement> + </base-MElement> + <a>{1ab2b778-127b-4661-ba2d-8f329f44d859}</a> + <b>{32e677d2-4bfb-4f5d-93dc-67fdb1a0c8a1}</b> + </MRelation> + </base-MRelation> + </MInheritance> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{320f3a48-12de-4bcb-b7f5-47b12c77dbee}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{320f3a48-12de-4bcb-b7f5-47b12c77dbee}</uid> + <flags>1</flags> + </MElement> + </base-MElement> + <name>WebPage</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{20788ccc-cab0-406b-8cf4-d8062570085e}</uid> + <target> + <instance type="MInheritance"> + <MInheritance> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{20788ccc-cab0-406b-8cf4-d8062570085e}</uid> + </MElement> + </base-MElement> + <a>{320f3a48-12de-4bcb-b7f5-47b12c77dbee}</a> + <b>{6659de40-605d-4744-8654-73ae959dcb8a}</b> + </MRelation> + </base-MRelation> + </MInheritance> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</uid> + <flags>1</flags> + </MElement> + </base-MElement> + <name>WebView</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{772227ff-d0df-4ecd-97ea-89d1bd10a96f}</uid> + <target> + <instance type="MAssociation"> + <MAssociation> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{772227ff-d0df-4ecd-97ea-89d1bd10a96f}</uid> + </MElement> + </base-MElement> + <a>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</a> + <b>{320f3a48-12de-4bcb-b7f5-47b12c77dbee}</b> + </MRelation> + </base-MRelation> + <a> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </a> + <b> + <MAssociationEnd> + <cardinality>1</cardinality> + </MAssociationEnd> + </b> + </MAssociation> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{1176aee6-be27-4b21-be22-33bca908a71e}</uid> + <target> + <instance type="MInheritance"> + <MInheritance> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{1176aee6-be27-4b21-be22-33bca908a71e}</uid> + </MElement> + </base-MElement> + <a>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</a> + <b>{9b91aa7b-0fa3-4c78-9e8d-e1bfdfce9f7f}</b> + </MRelation> + </base-MRelation> + </MInheritance> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{9b91aa7b-0fa3-4c78-9e8d-e1bfdfce9f7f}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{9b91aa7b-0fa3-4c78-9e8d-e1bfdfce9f7f}</uid> + </MElement> + </base-MElement> + <name>QWebEngineView</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{5124d95d-73fb-4d70-aa89-1135f2202c2f}</uid> + <target> + <instance type="MInheritance"> + <MInheritance> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{5124d95d-73fb-4d70-aa89-1135f2202c2f}</uid> + </MElement> + </base-MElement> + <a>{9b91aa7b-0fa3-4c78-9e8d-e1bfdfce9f7f}</a> + <b>{b8a281e2-4ee3-42cd-bb3d-d075a54ad358}</b> + </MRelation> + </base-MRelation> + </MInheritance> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{6659de40-605d-4744-8654-73ae959dcb8a}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{6659de40-605d-4744-8654-73ae959dcb8a}</uid> + </MElement> + </base-MElement> + <name>QWebEnginePage</name> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{32e677d2-4bfb-4f5d-93dc-67fdb1a0c8a1}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{32e677d2-4bfb-4f5d-93dc-67fdb1a0c8a1}</uid> + </MElement> + </base-MElement> + <name>QTabWidget</name> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{988c1b8e-1e9a-4d03-b9b4-75ba5dcac6d7}</uid> + <target> + <instance type="MClass"> + <MClass> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{988c1b8e-1e9a-4d03-b9b4-75ba5dcac6d7}</uid> + </MElement> + </base-MElement> + <name>QMainWindow</name> + </MObject> + </base-MObject> + </MClass> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </root-package> + </project> +</qmt> diff --git a/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser.qdoc b/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser.qdoc new file mode 100644 index 000000000..b8df9b02a --- /dev/null +++ b/examples/webenginewidgets/simplebrowser/doc/src/simplebrowser.qdoc @@ -0,0 +1,263 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example webenginewidgets/simplebrowser + \title WebEngine Widgets Simple Browser Example + \ingroup webengine-widgetexamples + \brief A simple browser based on Qt WebEngine Widgets + + \image simplebrowser.png + + \e {Simple Browser} demonstrates how to use the + \l{Qt WebEngine Widgets C++ Classes}{Qt WebEngine C++ classes} to develop a + small Web browser application that contains the following elements: + + \list + \li Menu bar for opening stored pages and managing windows and tabs. + \li Navigation bar for entering a URL and for moving backward and + forward in the web page browsing history. + \li Multi-tab area for displaying web content within tabs. + \li Status bar for displaying hovered links. + \endlist + + The web content can be opened in new tabs or separate windows. HTTP and + proxy authentication can be used for accessing web pages. + + \include examples-run.qdocinc + + \section1 Class Hierarchy + + We start with sketching a diagram of the classes that we are going to + implement: + + \image simplebrowser-model.png + + \list + \li \c{Browser} is a singleton class managing the application windows. + \li \c{BrowserWindow} is a \l QMainWindow showing the menu, a navigation + bar, \c {TabWidget}, and a status bar. + \li \c{TabWidget} is a \l QTabWidget and contains one or multiple + browser tabs. + \li \c{WebView} is a \l QWebEngineView, provides a view for \c{WebPage}, + and is added as a tab in \c{TabWidget}. + \li \c{WebPage} is a \l QWebEnginePage that represents website content. + \endlist + + \section1 Creating the Browser Main Window + + This example supports multiple main windows that are owned by a + \c Browser singleton object. This class could also be used for further + functionality, such as downloading files, bookmarks, and history managers. + + In \c main.cpp, we create the first \c BrowserWindow instance and add it + to the \c Browser object. If no arguments are passed on the command line, + we open the \l{Qt Homepage}: + + \quotefromfile webenginewidgets/simplebrowser/main.cpp + \skipto main + \printuntil } + + \section1 Creating Tabs + + The \c BrowserWindow constructor initializes all the necessary user interface + related objects. The \c centralWidget of \c BrowserWindow contains an instance of + \c TabWidget. The \c TabWidget contains one or several \c WebView instances as tabs, + and delegates it's signals and slots to the currently selected one: + + \quotefromfile webenginewidgets/simplebrowser/tabwidget.h + \skipto TabWidget : + \printuntil { + \dots + \skipto signals + \printuntil triggerWebPageAction + \skipto } + \dots + \printline }; + + Each tab contains an instance of \c WebView: + + \quotefromfile webenginewidgets/simplebrowser/tabwidget.cpp + \skipto TabWidget::createTab( + \printuntil } + + In \c TabWidget::setupView(), we make sure that the \c TabWidget always forwards + the signals of the currently selected \c WebView: + + \quotefromfile webenginewidgets/simplebrowser/tabwidget.cpp + \skipto TabWidget::setupView + \printuntil emit loadProgress + \skipto closeTab + \skipto }); + \printline } + \dots + \printline } + + \section1 Implementing WebView Functionality + + The \c WebView is derived from QWebEngineView to support the following + functionality: + + \list + \li Downloading favicons + \li Displaying error messages in case \c renderProcess dies + \li Handling \c createWindow requests + \li Adding custom menu items to context menus + \endlist + + First, we create the WebView with the necessary methods and signals: + + \quotefromfile webenginewidgets/simplebrowser/webview.h + \skipto WebView : + \printuntil WebView( + \dots + \skipto protected: + \printuntil handleIconLoaded + \skipto } + \dots + \printline }; + + \section2 Downloading Favicons + + To download a favicon, we use QNetworkAccessManager and create a + QNetworkRequest every time the URL specified by + QWebEngineView::iconUrlChanged is emitted: + + \quotefromfile webenginewidgets/simplebrowser/webview.cpp + \skipto WebView::handleIconUrlChanged( + \printuntil } + + \section2 Displaying Error Messages + + If the render process is terminated, we display a QMessageBox with an error + code, and then we reload the page: + + \quotefromfile webenginewidgets/simplebrowser/webview.cpp + \skipto WebView::WebView(QWidget *parent) + \printuntil { + \skipto renderProcessTerminated + \dots + \printuntil QTimer + \printline }); + \printline } + + \section2 Managing WebWindows + + The loaded page might want to create windows of the type + QWebEnginePage::WebWindowType, for example, when a JavaScript program + requests to open a document in a new window or dialog. + This is handled by overriding \c QWebView::createWindow(): + + \skipto WebView::createWindow( + \printuntil return nullptr; + \printuntil } + + In case of \c QWebEnginePage::WebDialog, we create an instance of a custom \c WebPopupWindow class: + + \quotefromfile webenginewidgets/simplebrowser/webpopupwindow.h + \skipto class WebPopupWindow + \printuntil }; + + \section2 Adding Context Menu Items + + We add menu items to the context menu, so that users can right-click a link + to have it opened in the same tab, a new window, or a new tab. We override + QWebEngineView::contextMenuEvent and use + QWebEnginePage::createStandardContextMenu to create a default QMenu with a + default list of QWebEnginePage::WebAction actions. + + The default name for QWebEnginePage::OpenLinkInThisWindow action is + \uicontrol Follow. For clarity, we rename it + \uicontrol {Open Link in This Tab}. Also, we add the actions for opening + links in a separate window or in a new tab: + + \quotefromfile webenginewidgets/simplebrowser/webview.cpp + \skipto WebView::contextMenuEvent( + \printuntil menu->popup + \printline } + + \section1 Implementing WebPage Functionality + + As mentioned earlier, each \c WebView contains a \c WebPage instance that + was created by using QWebEngineProfile::defaultProfile(). + + We implement \c WebPage as a subclass of QWebEnginePage to enable HTTP, + proxy authentication, and ignoring SSL certificate errors when accessing web + pages: + + \quotefromfile webenginewidgets/simplebrowser/webpage.h + \skipto WebPage : + \printuntil } + + In all the cases above, we display the appropriate dialog to the user. In + case of authentication, we need to set the correct credential values on the + QAuthenticator object: + + \quotefromfile webenginewidgets/simplebrowser/webpage.cpp + \skipto WebPage::handleAuthenticationRequired( + \printuntil } + \printuntil } + \printline } + + The \c handleProxyAuthenticationRequired signal handler implements the very same + steps for the authentication of HTTP proxies. + + In case of SSL errors, we just need to return a boolean value indicating + whether the certificate should be ignored. + + \quotefromfile webenginewidgets/simplebrowser/webpage.cpp + \skipto WebPage::certificateError( + \printuntil } + \printuntil } + + \section1 Opening a Web Page + + This section describes the workflow for opening a new page. + When the user enters a URL in the navigation bar and presses \uicontrol Enter, + \c QLineEdit::returnPressed is emitted, which lets \c BrowserWindow + load the requested page: + + \quotefromfile webenginewidgets/simplebrowser/browserwindow.cpp + \skipto connect(m_urlLineEdit + \printuntil }); + + The \c loadPage() method calls the \c setUrl() method of \c TabWidget: + + \skipto void BrowserWindow::loadPage(const QUrl + \printuntil } + \printline } + + The call is forwarded to the currently selected tab: + + \quotefromfile webenginewidgets/simplebrowser/tabwidget.cpp + \skipto TabWidget::setUrl( + \printuntil } + \printuntil } + + The \c setUrl() method of \c WebView just forwards the \c url to the associated \c WebPage, + which in turn starts the downloading of the page's content in the background. +*/ |