doc/src/examples/domtraversal.qdoc
changeset 7 f7bc934e204c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/src/examples/domtraversal.qdoc	Wed Mar 31 11:06:36 2010 +0300
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+    \example webkit/domtraversal
+    \title DOM Traversal Example
+
+    The DOM Traversal example shows how to use the QWebElement class to access
+    the structure of a Web page.
+
+    \image webkit-domtraversal.png
+
+    The QWebElement class provides an API that can be used to examine the structure
+    and content of a Web page via a Document Object Model (DOM) interface. It can be
+    used for basic traversal of the document structure, to search for particular
+    elements (see the \l{Simple Selector Example}), and to modify content in-place.
+
+    This example uses a QWebView widget to display the Web page, and a dock widget
+    holds the QTreeWidget that shows the document structure. These widgets are
+    placed in an instance of the \c Window class, which we describe below.
+
+    \section1 Window Class Definition
+
+    The \c Window class is derived from QMainWindow and its user interface is created
+    using \l{Qt Designer}. As a result, the class is also derived from the user
+    interface class created by \l uic:
+
+    \snippet examples/webkit/domtraversal/window.h Window class definition
+
+    Two important functions to note are the \c on_webView_loadFinished() slot and
+    the \c examineChildElements() function. The former is automatically called
+    when the QWebView widget finishes loading a page \mdash see the
+    \l{#Further Reading}{Further Reading} section for more information on this
+    mechanism.
+
+    The \c examineChildElements() function is used to traverse the document structure
+    and add items to the QTreeWidget.
+
+    \section1 Window Class Implementation
+
+    In the \c Window class constructor, we call the \l{QWidget::}{setupUi()} function
+    to set up the user interface described in the \c{window.ui} file:
+
+    \snippet examples/webkit/domtraversal/window.cpp Window constructor
+
+    When the Web page is loaded, the \c on_webView_loadFinished() slot is called. Here,
+    we clear the tree widget and begin inspection of the document by obtaining the
+    document element from the page's main frame:
+
+    \snippet examples/webkit/domtraversal/window.cpp begin document inspection
+
+    At this point, we call the \c examineChildElements() function to traverse the
+    document, starting with the child elements of the document element for which we
+    will create top level items in the tree widget.
+
+    The \c examineChildElements() function accepts a parent element and a parent item.
+    Starting with the first child element, which we obtain with the element's
+    \l{QWebElement::}{firstChild()} function, we examine each child element of the
+    parent item. For each valid (non-null) element, which we check by calling its
+    \l{QWebElement::}{isNull()} function, we create a new QTreeWidgetItem instance with
+    the element name and add it to the parent item.
+
+    \snippet examples/webkit/domtraversal/window.cpp traverse document
+
+    We recursively examine the child elements for each element by calling
+    \c examineChildElements() with the current child element and the newly-created item.
+    To obtain the next element at the same level in the document, we call its
+    \l{QWebElement::}{nextSibling()} function.
+
+    This recursive approach to reading the document makes it easy to create a simple
+    representation of the document structure in a tree widget.
+
+    For completeness, we show the \c setUrl() function, which is provided to allow the
+    document URL to be set from the example's \c main() function.
+
+    \snippet examples/webkit/domtraversal/window.cpp set URL
+
+    \section1 Starting the Example
+
+    We set up the application, create
+    a \c Window instance, set its URL, and show it:
+
+    \snippet examples/webkit/simpleselector/main.cpp main program
+
+    When the application's event loop is run, the Qt home page will load, and the
+    tree widget will be updated to show the document structure. Navigating to another
+    page will cause the tree widget to be updated to show the document structure of
+    the new page.
+
+    \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. The user interface
+    contains a QWebView widget called \c webView whose \l{QWebView::}{loadFinished()}
+    signal is automatically connected to the \c on_webView_loadFinished() slot when
+    we call \l{QWidget::}{setupUi()} in the \c Window constructor.
+*/