diff options
author | Venugopal Shivashankar <venugopal.shivashankar@digia.com> | 2012-12-11 18:11:01 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-13 15:07:57 +0100 |
commit | 9d4ecf37491b9391335d43e33869cb476adb0cfd (patch) | |
tree | 339290d362e8b8e51b42c9e5260401c0d8389f48 | |
parent | 22ae7de488940665a21c723230884dbc0a5fc148 (diff) | |
download | qtdoc-9d4ecf37491b9391335d43e33869cb476adb0cfd.tar.gz |
Doc: Moved documentation for the WebKit examples
- Moved the documentation to qtwebkit-examples-and-demos repo
- Removed the WebKit examples page
- Added qtwebkitexamples to the depends list
Change-Id: I2fc7593e1600b82ece4f2dca0bc84557d6303c78
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
-rw-r--r-- | doc/config/qtdoc-project.qdocconf | 1 | ||||
-rw-r--r-- | doc/src/examples/browser.qdoc | 39 | ||||
-rw-r--r-- | doc/src/examples/qobjectxmlmodel.qdoc | 339 | ||||
-rw-r--r-- | doc/src/examples/simpleselector.qdoc | 114 | ||||
-rw-r--r-- | doc/src/examples/webkit-bridge-imageanalyzer.qdoc | 160 | ||||
-rw-r--r-- | doc/src/examples/webkit-framecapture.qdoc | 37 | ||||
-rw-r--r-- | doc/src/examples/wheel.qdoc | 109 | ||||
-rw-r--r-- | doc/src/getting-started/examples.qdoc | 51 | ||||
-rw-r--r-- | doc/src/images/browser-demo.png | bin | 144715 -> 0 bytes | |||
-rw-r--r-- | doc/src/images/qobjectxmlmodel-example.png | bin | 111515 -> 0 bytes | |||
-rw-r--r-- | doc/src/images/webkit-simpleselector.png | bin | 130292 -> 0 bytes |
11 files changed, 1 insertions, 849 deletions
diff --git a/doc/config/qtdoc-project.qdocconf b/doc/config/qtdoc-project.qdocconf index 52818ab9..6f4e8691 100644 --- a/doc/config/qtdoc-project.qdocconf +++ b/doc/config/qtdoc-project.qdocconf @@ -40,6 +40,7 @@ depends += \ qtversit \ qtwidgets \ qtwebkit \ + qtwebkitexamples \ qtxml \ qtxmlpatterns diff --git a/doc/src/examples/browser.qdoc b/doc/src/examples/browser.qdoc deleted file mode 100644 index 09c6e609..00000000 --- a/doc/src/examples/browser.qdoc +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 webkit/browser - \title Tab Browser - - The Tab Browser example shows Qt's WebKit module in action, - providing a little Web browser application with support for tabs. - - \image browser-demo.png - - This browser is the foundation for the \l{Arora Browser}, a simple cross-platform - Web browser. -*/ diff --git a/doc/src/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc deleted file mode 100644 index d2eefd80..00000000 --- a/doc/src/examples/qobjectxmlmodel.qdoc +++ /dev/null @@ -1,339 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 xmlpatterns/qobjectxmlmodel - \title QObject XML Model Example - - This example shows how to use QtXmlPatterns to query QObject trees - by modeling the non-XML data structure of a QObject tree to look - like XML. - - \tableofcontents - - \section1 Introduction - - This example illustrates two important points about using XQuery to - query non-XML data modeled to look like XML. The first point is that - a custom node model class doesn't always have to actually build the - node model. Sometimes the node model can be an already existing data - structure, like the QObject tree used in this example. The second - point is to explain what is required to make non-XML data look like - XML. - - In this example, we want to model a QObject tree to look like - XML. That is easy to do because a QObject tree maps to the XML tree - structure in a staightforward way. Each QObject node is modeled as - an XML element node. However, when we want to add the QMetaObject tree - to the QObject tree node model, we are trying to add a second tree to - the node model. The QMetaObject tree exists \e{behind} the QObject - tree. Adding the QMetaObject tree to the node model changes the two - dimensional tree into a three dimensional tree. - - The query engine can only traverse two dimensional trees, because an - XML document is always a two dimensional tree. If we want to add the - QMetaObject tree to the node model, we have to somehow flatten it - into the same plane as the QObject tree. This requires that the - node model class must build an auxiliary data structure and make it - part of the two dimensional QObject node model. How to do this is - explained in \l{Including The QMetaObject Tree}. - - \section2 The User Interface - - The UI for this example was created using Qt Designer: - - \image qobjectxmlmodel-example.png - - \section1 Code Walk-Through - - The strategy for this example is different from the strategy for the - \l{File System Example}{file system example}. In the file system - example, the node model class had to actually build a node model - because the non-XML data to be traversed was the computer's file - system, a structure stored on disk in a form that the query engine - couldn't use. The node model class had to build an analog of the - computer's file system in memory. - - For this example, the data structure to be traversed already exists - in memory in a usable form. It is the QObject tree of the example - application itself. All we need is the pointer to the root of the - QObject tree. - - \note When we add the QMetaObject tree to the node model, the node - model class will have to build an auxiliary data structure to move - the QMetaObject tree into the same plane as the QObject tree. This - is explained later in \l{Including The QMetaObject Tree}. - - \section2 The Custom Node Model Class: QObjextXmlModel - - The node model class for this example is QObjextXmlModel, which is - derived from QSimpleXmlNodeModel. QObjextXmlModel implements the - callback interface functions that don't have implementations in - QSimpleXmlNodeModel: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h 0 - - The node model class declares three data members: - - \target Three Data Members - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h 2 - - The constructor sets \c m_baseURI to the QUrl constructed from the - \l{QCoreApplication::applicationFilePath()}{file path} of the - application executable. This is the value returned by - \l{QAbstractXmlNodeModel::documentUri()}{documentUri()}. The - constructor sets \c{m_root} to point to the QObject tree for the - example application. This is the node model that the query engine - will use. And the constructor calls a local function to build the - auxiliary data structure (\c{m_allMetaObjects}) for including the - QMetaObject tree in the node model. How this auxiliary data - structure is incorporated into the QObject node model is discussed - in \l{Including The QMetaObject Tree}. - - \section3 Accessing The Node Model - - Since the query engine knows nothing about QObject trees, it can - only access them by calling functions in the node model callback - interface. The query engine passes a QXmlNodeModelIndex to uniquely - identify a node in the node model. The QXmlNodeModelIndex is - constructed from a pointer to the QObject that represents the node. - \l{QAbstractXmlNodeModel::createIndex()}{createIndex()} creates the - QXmlNodeModelIndex, as in the local \c{root()} function, for example: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 0 - - A QObject represents an element node in the node model, but we also - need to represent attribute nodes. For example, the class name of a - QObject is an attribute of the QObject, so it should be an attribute - node in the node model. A QObject's class name is obtained from the - QObject. (Actually, it is in the QMetaObject, which is obtained from - the QObject). This means that a single QObject logically represents - multiple nodes in the node model: the element node and potentially - many attribute nodes. - - To uniquely identify an attribute node, we need the pointer to the - QObject containing the attribute, and an additional value that - identifies the attribute in the QObject. For this \e{additional - data} value, we use \c{enum QObjectNodeType}: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h 3 - - Ignore the \c{MetaObjectXXX} values for now. They will be explained - in \l{Including The QMetaObject Tree}. Here we are interested in the - three node types for QObject nodes: \c{IsQObject}, which represents - the element node type for a QObject, and \c{QObjectProperty} and - \c{QObjectClassName}, which represent the attribute node types for - the attributes of a QObject. - - The \l{QAbstractXmlNodeModel::createIndex()}{createIndex()} - function called in the \c{root()} snippet above is the overload that - accepts a \c{void*} pointer and a second parameter, - \c{additionalData}, with default value 0 (\c{IsQObject}). Wherever - you see a call to \l{QAbstractXmlNodeModel::createIndex()} - {createIndex()} that only passes the QObject pointer, it is creating - the node index for a QObject element node. To create the node index - for the class name attribute, for example, the \l{QObject - attributes} {attributes()} function uses - \c{createIndex(object,QObjectClassName)}. - - \target QObject attributes - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 6 - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 8 - - \l{QObject attributes} {attributes()} is one of the callback - functions you have to implement in your custom node model class. It - returns a QVector of \l{QXmlNodeModelIndex} {node indexes} for all - the attribute nodes for QObject \c{n}. It calls - \l{QAbstractXmlNodeModel::createIndex()} {createIndex()} in two places. - Both calls use the QObject pointer from the current node \c{n} (the - element node), and just add a different value for the \e{additional data} - parameter. This makes sense because, in XML, the attributes of an - element are part of that element. - - \section3 Traversing The Node Model - - The query engine traverses the QObject tree by calling back to the - node model class's implementation of \l{QObject nextFromSimpleAxis} - {nextFromSimpleAxis()}. This function is the heart of the callback - interface, and it will probably be the most complex to implement in - your custom node model class. Below is a partial listing of the - implementation for this example. The full listing will be shown in - \l{Including The QMetaObject Tree}, where we discuss traversing the - QMetaObject tree. - - \target QObject nextFromSimpleAxis - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 2 - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 4 - - The main switch uses \c toNodeType(), which obtains the node - type from \l{QXmlNodeModelIndex::additionalData()}: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 1 - - \c{case IsObject} case is the most interesting. It switches again on - the value of the \c{axis} parameter, which specifies the direction - the query engine wants to take from the current node. It is one of - the four enum values of \l{QAbstractXmlNodeModel::SimpleAxis}. The - \l{QAbstractXmlNodeModel::Parent} {Parent} and - \l{QAbstractXmlNodeModel::FirstChild} {FirstChild} cases reduce to - calls to QObject::parent() and QObject::children() - respectively. Note that a default constructed QXmlNodeModelIndex is - returned in the \l{QAbstractXmlNodeModel::Parent} {Parent} case if - the current node is the root, and in the - \l{QAbstractXmlNodeModel::FirstChild} {FirstChild} case if the - current node has no children. - - For the \l{QAbstractXmlNodeModel::NextSibling} {NextSibling} and - \l{QAbstractXmlNodeModel::PreviousSibling} {PreviousSibling} axes, - the helper function \c{qObjectSibling()} is called, with +1 to - traverse to the \l{QAbstractXmlNodeModel::NextSibling} {NextSibling} - and -1 to traverse to the - \l{QAbstractXmlNodeModel::PreviousSibling} {PreviousSibling}. - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 5 - - \c{qObjectSibling()} determines whether or not the node has any - siblings. It is called with \c{n}, the index of the current node. - If the current node is a child, then it has a parent with children - (the current node one of these). - So, we get the \l{QObject::parent()}{parent}, obtain the parent's - \l{QObject::children()} {child list}, find the current node in the - list, and construct the node index for the next or previous child - (sibling) and return it. - - \note In \l{QObject nextFromSimpleAxis} {nextFromSimpleAxis()}, the - special case of asking for the - \l{QAbstractXmlNodeModel::PreviousSibling} {PreviousSibling} of the - root node is discussed in \l{Including The QMetaObject Tree}. - - Traversing away from a \c{QObjectClassName} attribute node or a - \c{QObjectProperty} attribute node might seem a bit confusing at - first glance. The only move allowed from an attribute node is to the - \l{QAbstractXmlNodeModel::Parent} {Parent}, because attribute nodes - don't have children. But these two cases simply return the - \l{QXmlNodeModelIndex} {node index} of the current node. - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 7 - - Since \c n is the QXmlNodeModelIndex of the current node, all this - does is create another QXmlNodeModelIndex for the current node and - return it. This was explained above in \l{Accessing The Node Model}, - where we saw that each QObject in the node model actually represents - an element node and potentially many attribute nodes. Traversing to - the parent node of an attribute simply creates a node index for the - same QObject, but with an \e{additional data} value of 0 - (\c{IsQObject}). - - If we only wanted to traverse the QObject tree with XQuery, we could - just implement the rest of the virtual callback functions listed - earlier and we would be done. The implementations for the remaining - functions are straightforward. But if we also want to use XQuery to - traverse the QMetaObject tree, we must include the QMetaObject tree - in the custom node model. - - \section3 Including The QMetaObject Tree - - The \l{Meta-Object System} {metaobject system} not only enables Qt's - \l{Signals and Slots} {signals and slots}, it also provides type - information that is useful at run-time; e.g., getting and setting - properties without knowing the property names at compile time. Each - QObject has an associated QMetaObject tree which contains all this - useful type information. Given a QObject, its QMetaObject is - obtained with QObject::metaObject(). Then QMetaObject::superClass() - can be called repeatedly to get the QMetaObject for each class in the - class hierarchy for the original QObject. - - However, the QMetaObject hierarchy is a second tree in a plan that - exists logically behind the plane of the QObject tree. The QtXmlPatterns - query engine can only traverse a two dimensional node model that - represents an XML tree. If we want to include the QMetaObject in the - same node model that represents the QObject tree, we must find a way - to flatten the QMetaObject tree into the same plane as the QObject - tree. - - The node model class declares \l{All MetaObjects}{m_allMetaObjects} - as a vector of pointers to QMetaObject: - - \target All MetaObjects - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h 1 - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h 4 - - This vector gets populated by the QObjectXmlModel constructor by - calling the private allMetaObjects() function: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 9 - - The first half of the function is an example of the standard code - pattern for using QtXmlPatterns to run an XQuery. First it creates an - instance of QXmlQuery. Then it \l{QXmlQuery::bindVariable()}{binds} - the XQuery variable \c{$root} to the root node of the of the node - model; i.e., the root of the QObject tree. Then it - \l{QXmlQuery::setQuery()} {sets the query} to be an XQuery that - returns all the QObjects in the node model. Finally, the query is - evaluated into a \l{QXmlResultItems} {result item list}. - - \note \l{QXmlQuery::bindVariable()} must be called before - \l{QXmlQuery::setQuery()}, because setting the query causes - QtXmlPatterns to \e compile the XQuery, which requires knowledge of - the variable bindings. - - The second half of the function traverses the \l{QXmlResultItems} - {result item list}, getting the QMetaObject hierarchy for each - QObject and appending it to \l{All MetaObjects} {m_allMetaObjects}, - if it isn't already there. But how do we include this vector of - pointers to QMetaObjects in the node model? The key insight is - shown in the full listing of \l{Full Listing of nextFromSimpleAxis} - {nextFromSimpleAxis()}, where we are interested now in the - \c{MetaObjectXXX} cases: - - \target Full Listing of nextFromSimpleAxis - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 2 - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 3 - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 4 - - But first, revisit the \c{PreviousSibling} case for the - \c{IsQObject} case: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 10 - - When asking for the previous sibling of the root of the QObject - tree, it creates a node model index with a null QObject pointer and - an \c{additionalData} value of \c{MetaObjects}. This effectively - allows the query engine to jump from the QObject tree to the - QMetaObject tree. - - The query engine can jump from the QMetaObject tree back to the - QObject tree in the \c{NextSibling} case of case \c{MetaObjects}, - where the \c{root()} function is called: - - \snippet examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp 11 - - Having jumped from the QObject tree to the QMetaObject tree, the - query engine will use the \c{MetaObject}, \c{MetaObjectClassName}, - and \c{MetaObjectSuperClass} cases, which are similar to the cases - for \c{IsQObject}, \c{QObjectProperty}, and \c{QObjectClassName}. -*/ diff --git a/doc/src/examples/simpleselector.qdoc b/doc/src/examples/simpleselector.qdoc deleted file mode 100644 index 92f6666f..00000000 --- a/doc/src/examples/simpleselector.qdoc +++ /dev/null @@ -1,114 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 webkit/simpleselector - \title Simple Selector Example - - The Simple Selector example shows how to use QWebElement to access the - Document Object Model (DOM) in a Web page. - - \image webkit-simpleselector.png - - The QWebElement class enables access to the document structure and content in a Web page, - as represented by a QWebFrame instance. It can be used for basic traversal of the document - structure (see the \l{DOM Traversal Example}), to search for particular elements, and to - modify any elements found. - - This example uses a QWebView widget to display a Web page. A QLineEdit widget and QPushButton - allow the user to enter a query and highlight the results in the page. These widgets are - contained in an instance of the \c Window class, which we described below. - - \section1 Window Class Definition - - The \c Window class describes the example's user interface and this is partially described - by the \c window.ui file, created using \l{Qt Designer}: - - \snippet doc/src/snippets/webkit/simpleselector/window.h Window class definition - - We use \l{Using a Designer UI File in Your Application#The Multiple Inheritance Approach} - {multiple inheritance} to include the user interface description. We define slots that - will automatically respond to signals emitted by certain user interface controls. - - \section1 Window Class Implementation - - Since the layout of the user interface is provided by the \c{window.ui} user interface file, - we only need to call the \l{QWidget::}{setupUi()} in the constructor: - - \snippet doc/src/snippets/webkit/simpleselector/window.cpp Window class constructor - - This adds all the controls to the window and sets up connections between their signals - and suitably-named slots in the \c Window class. The QLineEdit instance was given a name of - \c elementLineEdit in Qt Designer, so the \c{on_elementLineEdit_returnPressed()} slot is - automatically connected to its \l{QLineEdit::}{returnPressed()} signal. - - This slot performs the main work of this example. We begin by obtaining a QWebFrame - instance for the current page shown in the QWebView widget. Each QWebFrame contains - a QWebElement instance that represents the document, and we obtain this in order to - examine its contents: - - \snippet doc/src/snippets/webkit/simpleselector/window.cpp return pressed - - Taking the contents of the QLineEdit as the query text, we call the element's - \l{QWebElement::}{findAll()} function to obtain a list of elements that match the - query. - - For each element obtained, we modify its style by setting its \c style attribute - to give it a yellow background color. - - Since we also want the query to be performed when the user clicks the \gui Highlight - button, we also implement the \c{on_highlightButton_clicked()} slot to simply call - the \c{on_elementLineEdit_returnPressed()} slot when it is invoked: - - \snippet doc/src/snippets/webkit/simpleselector/window.cpp button clicked - - For completeness, we also implement a \c setUrl() function which simply passes on - a QUrl instance to the equivalent function in the QWebView widget: - - \snippet doc/src/snippets/webkit/simpleselector/window.cpp set URL - - \section1 Starting the Example - - The main function implementation is simple. We set up the application, create - a \c Window instance, set its URL, and show it: - - \snippet doc/src/snippets/webkit/simpleselector/main.cpp main program - - When the application's event loop is run, the WebKit home page will load, and the - user can then begin to start running queries against the contents of the page. - The highlighting can only be removed by reloading the page. To do this, open a - context menu over the page and select the \gui Reload menu item. - - \section1 Further Reading - - The QWebElement documentation contains more information about DOM access for the - QtWebKit classes. - - In this example, we take advantage of Qt's - \l{Using a Designer UI File in Your Application#Automatic Connections}{auto-connection} - feature to avoid explicitly connecting signals to slots. -*/ diff --git a/doc/src/examples/webkit-bridge-imageanalyzer.qdoc b/doc/src/examples/webkit-bridge-imageanalyzer.qdoc deleted file mode 100644 index 6d44a879..00000000 --- a/doc/src/examples/webkit-bridge-imageanalyzer.qdoc +++ /dev/null @@ -1,160 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 webkit/imageanalyzer - \startpage {index.html}{Qt Reference Documentation} - \title The Webkit Bridge Tutorial - Hybrid Client Application - - In this example, we will show how to write a hybrid application using -\l{The QtWebKit Bridge}{QtWebKit Bridge}, which distinguishes itself from a -thin client in that it performs heavy calculations on the client side in C++, -like a native application, but presents nothing more than a \c QWebView for its -user interface, displaying web content written in HTML/JavaScript. The -application uses QtConcurrent to distribute its work across as many CPU cores as -are available from the system, so it can process each image in parallel. - -For the full reference documentation of QtWebKit hybrid development, see -\l{qtwebkit-bridge.html}{The QtWebKit Bridge}. - -Initially, you will see a user interface with an empty list of images. Clicking -on some of the images in the lower pane below adds them to the list view above, -as shown in the screenshot below. - - \image webkit-imageanalyzer-screenshot.png - -Now, we can click on \b Analyze, and each image is analyzed using some -computationally intensive C++ function, in parallel and on different cores. -Progress is shown while the analysis is proceeding. - - \image webkit-imageanalyzer-progress.png - -and in the end, we will see something like this, where the average RGB values of -each image are shown. - - \image webkit-imageanalyzer-complete.png - -The MainWindow is defined in C++, and creates a \l QNetworkDiskCache and a -\l QWebView, and tells the \l QWebView to load the starting page, providing us -with a user interface for the client. - - \snippet doc/src/snippets/webkit/imageanalyzer/mainwindow.cpp MainWindow - constructor - -In this example, the sample content is addressed with the \tt qrc:/index.html -URL. \tt qrc:/ indicates that the file is stored as a Qt resource (attached to -the executable). In a real-world application, the content and images would -likely be retrieved from the network rather than from resources. - -We wish to initialize an object reference in the JavaScript web page to point -to our \tt ImageAnalyzer before any other scripts are run. To do this, we -connect the \l{QWebFrame::}{javaScriptWindowObjectCleared()} signal to a slot -which does the object creation and handoff to JavaScript. - - \snippet doc/src/snippets/webkit/imageanalyzer/mainwindow.cpp MainWindow - addJSObject - -The ImageAnalyzer object is created and added to a JavaScript object on the web -page's mainFrame with \c addToJavaScriptWindowObject(). - - The start page is resources/index.html. - In one of its <div> regions, we have images, each - with an \c onClick() handler that calls \c addImage(). - - \snippet doc/src/snippets/webkit/imageanalyzer/resources/index.html sample images - -Clicking an image adds it to an images list. - - \snippet doc/src/snippets/webkit/imageanalyzer/resources/index.html addImage - -The \b {Analyze} button at the bottom of the image list is clicked when we -want to start the analysis: - - \snippet doc/src/snippets/webkit/imageanalyzer/resources/index.html images list - -When the user clicks the \b {Analyze} button, \c analyzeImages() is called, -another regular JavaScript method, shown below. -Notice it assumes the \c imageAnalyzer object is already defined and initialized -in JavaScript space, but we guaranteed that by connecting our setup slot to the -appropriate signal, \l{QWebFrame::}{javaScriptWindowObjectCleared()}. - - \snippet doc/src/snippets/webkit/imageanalyzer/resources/index.html analyzeImages - -The only methods on \c ImageAnalyzer that we can or do call from JavaScript are -those which are exposed through \{The Meta-Object System}{Qt's MetaObject} -system: \l{The Property System}{property} getter/setter methods, -\c public \l {Signals & Slots}{signals and slots}, and other -\l{Q_INVOKABLE}{Q_INVOKABLE} functions. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.h ImageAnalyzer - public interface -\dots -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.h ImageAnalyzer - private members - -Most of the members are set up in the constructor: - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - Constructor - -Back on the JavaScript side, we want to connect signals from this object to -JavaScript functions on our web page, after the web page is loaded, but before -the images are analyzed. - -From \c connectSlots(), we can see how to connect signals from the imageAnalyzer -object to regular JavaScript functions, which can also behave like slots. We use -this to monitor and display progress from the C++ side. - - \snippet doc/src/snippets/webkit/imageanalyzer/resources/index.html connect slots - -The only public slot is \c startAnalysis(), called to place -a list of URLs into the image analyzer's QtConcurrent processing queue -from JavaScript space. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - startAnalysis - -The images need to be loaded again now, which is why fetchURLs first checks the -cache to see if we can save an extra network get. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - fetchURLs - -For the images that were not in the cache, \c handleReply() -will load them into a QImage when the data is ready. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - handleReply - -After the images are loaded, they are queued up in preparation to be -sent in a batch for analysis to a \l QFutureWatcher, which will distribute the -processing across multiple threads and cores, depending on how many are available. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - queueImage - -The function that gets performed on each image is \c averageRGB(), -as specified in argument 2 to the \l{QtConcurrent::mapped()} function. -Notice it repeats the same calculations 100 times on each pixel to keep the CPU -very busy. This is done only for the purposes of the demo so that the analysis -takes a noticeable time to complete. - -\snippet doc/src/snippets/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - averageRGB - -*/ - diff --git a/doc/src/examples/webkit-framecapture.qdoc b/doc/src/examples/webkit-framecapture.qdoc deleted file mode 100644 index dfa61841..00000000 --- a/doc/src/examples/webkit-framecapture.qdoc +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 webkit/framecapture - \title WebKit Frame Capture Example - - The Frame Capture example shows how to use the WebKit browser engine to - obtain images of frames in a Web page. - - This example is designed to be run from the command line. Run the - example without arguments to obtain usage information. -*/ diff --git a/doc/src/examples/wheel.qdoc b/doc/src/examples/wheel.qdoc deleted file mode 100644 index b967d254..00000000 --- a/doc/src/examples/wheel.qdoc +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 scroller/wheel - \title Wheel Scroller Example - - The Wheel Scroller Example shows how to use QScroller, QScrollEvent - and QScrollPrepareEvent to implement smooth scrolling for a - custom Widget. - - \section1 Basics - - The QScroller class is the main part of the smooth scrolling - mechanism in Qt. It keeps track of the current scroll position and - speed and updates the object through events. - QScroller will get touch events via the QFlickGesture. - It will query the target object through a QScrollPrepareEvent for - the scroll area and other information. - QScroller will send QScrollEvents to inform the target object about - the current scroll position. - The target object (usually a QWidget or a QGraphicsObject) will - then need to update it's graphical representation to reflect the - new scroll position. - - \section1 The Wheel Widget class - - To demonstrate how to use the QScroller we implement a QWidget that - looks and works like the wheel of a slot machine. - The wheel can be started via touch events and will continue getting - slower. - Additionally the wheel should appear as if no border exists (which - would seem unnatural) and the scrolling should snap to center one - item. - - In the widget we need to grab the QFlickGesture. The gesture itself - will setAcceptTouchEvents for us, so we don't need to do that here. - - \snippet examples/scroller/wheel/wheelwidget.cpp 0 - - The widget will get gesture events but in addition we also will - get the events from QScroller. - We will need to accept the QScrollPrepareEvent to indicate that - a scrolling should really be started from the given position. - - \snippet examples/scroller/wheel/wheelwidget.cpp 1 - - We should call all three set functions form QScrollPrepareEvent. - - \list - \li \c setViewportSize to indicate our viewport size. Actually the - given code could be improved by giving our size minus the borders. - \li \c setMaxContentPos to indicate the maximum values for the scroll - position. The minimum values are implicitely set to 0. - In our example we give a very high number here and hope that the user - is not patient enough to scroll until the very end. - \li \c setContentPos to indicate the current scroll position. - We give a position in the middle of the huge scroll area. - Actually we give this position every time a new scroll is started so - the user will only reach the end if he continuously scrolls in one - direction which is not very likely. - \endlist - - The handling of the QScrollEvent is a lengthly code not fully shown here. - \snippet examples/scroller/wheel/wheelwidget.cpp 2 - - In principle it does three steps. - \list - \li It calculates and updates the current scroll position as given by - QScroller. - \li It repaints the widget so that the new position is shown. - \li It centers the item as soon as the scrolling stopps. - \endlist - - The following code does the centering. - \snippet examples/scroller/wheel/wheelwidget.cpp 3 - - We check if the scrolling is finished which is indicated in the - QScrollEvent by the \c isLast flag. - We then check if the item is not already centered and if not start a new - scroll by calling QScroller::scrollTo. - - As you can see the QScroller can be used for other things besides simple - scroll areas. -*/ diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc index f00b294f..5eb6de89 100644 --- a/doc/src/getting-started/examples.qdoc +++ b/doc/src/getting-started/examples.qdoc @@ -388,57 +388,6 @@ */ /*! - \page examples-webkit.html - \ingroup all-examples - \title WebKit Examples - \brief Using WebKit in your Qt application. - - \image webkit-examples.png WebKit - - Qt provides an integrated Web browser component based on WebKit, the popular - open source browser engine. - - These examples and demonstrations show a range of different uses for WebKit, - from displaying Web pages within a Qt user interface to an implementation of - a basic function Web browser. - - \table - \header \li Example \li Description - \row \li \l{webkit/domtraversal}{DOM Traversal}\raisedaster - \li Shows how to use QWebElement to inspect the document structure of a Web page. - \row \li \l{webkit/browser}{Tab Browser} - \li A browser example, showing a browser with support for tabs. - \row \li \l{webkit/fancybrowser}{Fancy Browser} - \li A browser example, showing the use of JQuery to perform effects. - \row \li \l{webkit/formextractor}{Form Extractor} - \li How to use JavaScript and C++ together to read page content. - \row \li \l{webkit/framecapture}{Frame Capture} - \li How to use the WebKit browser engine to obtain images of Web pages. - \row \li \l{webkit/googlechat}{Google Chat} - \li A real-world example that shows how an existing Web-based service can be accessed - using QtWebKit. - \row \li \l{webkit/imageanalyzer}{Image Analyzer}\raisedaster - \li A \l{The QtWebKit Bridge}{QtWebKit bridge} application which contains a - web interface and client-side processing. - \row \li \l{webkit/previewer}{Previewer}\raisedaster - \li Shows how to make a simple Web page previewer by using Qt's text input widgets - together with a QWebView widget. - \row \li \l{webkit/simpleselector}{Simple Selector}\raisedaster - \li A basic demonstration, showing how to use QWebElement to select elements in a - Web page. - \row \li \l{webkit/simplewebplugin}{Simple Web Plugin}\raisedaster - \li Shows how to embed a widget into a Web page displayed using a QWebView - widget. - \row \li \l{webkit/webftpclient}{Web FTP Client}\raisedaster - \li Shows how to add support for a new protocol to QtWebKit-based applications. - \row \li \l{webkit/webplugin}{Web Plugin}\raisedaster - \li Shows how to communicate with a widget embedded into a Web page. - \endtable - - Examples marked with an asterisk (*) are fully documented. -*/ - -/*! \page examples-statemachine.html \ingroup all-examples \title State Machine Examples diff --git a/doc/src/images/browser-demo.png b/doc/src/images/browser-demo.png Binary files differdeleted file mode 100644 index 5e0c0bec..00000000 --- a/doc/src/images/browser-demo.png +++ /dev/null diff --git a/doc/src/images/qobjectxmlmodel-example.png b/doc/src/images/qobjectxmlmodel-example.png Binary files differdeleted file mode 100644 index e40ba15e..00000000 --- a/doc/src/images/qobjectxmlmodel-example.png +++ /dev/null diff --git a/doc/src/images/webkit-simpleselector.png b/doc/src/images/webkit-simpleselector.png Binary files differdeleted file mode 100644 index 2c888ca1..00000000 --- a/doc/src/images/webkit-simpleselector.png +++ /dev/null |