diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2023-01-25 11:56:21 +0100 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2023-02-14 17:48:09 +0100 |
commit | 21453410713650a97a074a8f3d78afbb4c70e6b3 (patch) | |
tree | 15ff591898219254a9de978c206fdcc9f0d2fc3b /examples/network/doc | |
parent | c20336fe03fe7f1fabe4d1515bb1b1039843f652 (diff) |
Delete googlesuggest
As a networking example it doesn't contribute much. But it has some
interesting uses of widget/events
Pick-to: 6.5
Change-Id: I194d32e6a304ae41819c20751e9f1ee1d9b5abdb
Reviewed-by: Konrad Kujawa <konrad.kujawa@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'examples/network/doc')
-rw-r--r-- | examples/network/doc/images/googlesuggest-example.png | bin | 21272 -> 0 bytes | |||
-rw-r--r-- | examples/network/doc/src/googlesuggest.qdoc | 153 |
2 files changed, 0 insertions, 153 deletions
diff --git a/examples/network/doc/images/googlesuggest-example.png b/examples/network/doc/images/googlesuggest-example.png Binary files differdeleted file mode 100644 index c704f5b2b4..0000000000 --- a/examples/network/doc/images/googlesuggest-example.png +++ /dev/null diff --git a/examples/network/doc/src/googlesuggest.qdoc b/examples/network/doc/src/googlesuggest.qdoc deleted file mode 100644 index 0cd1b6d868..0000000000 --- a/examples/network/doc/src/googlesuggest.qdoc +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \example googlesuggest - \title Google Suggest Example - \ingroup examples-network - \brief Obtains the list of search recommendations by the Google search engine. - - The example uses the QNetworkAccessManager to obtain the list of search - recommendations by Google as the user types into a QLineEdit. - - \image googlesuggest-example.png - - The application makes use of the \c get function in - QNetworkAccessManager to post a request and obtain the result of the search - query sent to the Google search engine. The results returned are listed as - clickable links appearing below the search box as a drop-down menu. - - The widget is built up by a QLineEdit as the search box, and a QTreeView - used as a popup menu below the search box. - - \section1 GSuggestCompletion Class Declaration - - This class implements an event filter and a number of functions to display - the search results and to determent when and how to perform the search. - - \snippet googlesuggest/googlesuggest.h 1 - - The class connects to a QLineEdit and uses a QTreeWidget to display the - results. A QTimer controls the start of the network requests that are - executed using a QNetworkAccessManager. - - \section1 GSuggestCompletion Class Implementation - - We start by defining a constant containing the URL to be used in the Google - queries. This is the basis for the query. The letters typed into the search - box will be added to the query to perform the search itself. - - \snippet googlesuggest/googlesuggest.cpp 1 - - In the constructor, we set the parent of this GSuggestCompletion instance - to be the QLineEdit passed in. For simplicity, the QLineEdit is also stored - in the explicit \c editor member variable. - - We then create a QTreeWidget as a toplevel widget and configure the various - properties to give it the look of a popup widget. The widget is populated - with the results by Google Suggest API request. - - Furthermore, we install the GSuggestCompletion instance as an event filter - on the QTreeWidget, and connect the \c itemClicked() signal with the \c - doneCompletion() slot. - - A single-shot QTimer is used to start the request when the user has stopped - typing for 500 ms. - - Finally, we connect the networkManagers \c finished() signal with the \c - handleNetworkData() slot to handle the incoming data. - - \snippet googlesuggest/googlesuggest.cpp 2 - - Since the QTreeWidget popup has been instantiated as a toplevel widget, the - destructor has to delete it explicitly from memory to avoid a memory leak. - - \snippet googlesuggest/googlesuggest.cpp 3 - - The event filter handles mouse press and key press events that are - delivered to the popup. For mouse press events we just hide the popup and - return focus to the editor widget, and then return true to prevent further - event processing. - - Key event handling is implemented so that Enter and Return execute the - selected link, while the Escape key hides the popup. Since we want to be - able to navigate the list of suggestions using the different navigation - keys on the keyboard we let Qt continue regular event processing for those - by returning false from the eventFilter reimplementation. - - For all other keys, the event will be passed on to the editor widget and the - popup is hidden. This way the user's typing will not be interrupted by the - popping up of the completion list. - - \snippet googlesuggest/googlesuggest.cpp 4 - - The \c showCompletion() function populates the QTreeWidget with the results - returned from the query. It takes a QStringList of the suggested search - terms. - - \snippet googlesuggest/googlesuggest.cpp 5 - - A QTreeWidgetItem is created for each index in the list and inserted into - the QTreeWidget. Finally, we adjust position and size of the popup to make - sure that it pops up in the correct position below the editor, and show it. - - The \c doneCompletion() function, which is called by the event filter when - either Enter or Return keys are pressed, stops the timer to prevent further - requests and passes the text of the selected item to the editor. We then - make the \c editor QLineEdit emit the returnPressed() signal, to which the - application can connect to open the respective web page. - - \snippet googlesuggest/googlesuggest.cpp 6 - - The \c autoSuggest() slot is called when the timer times out, and uses the - text in the editor to build the complete search query. The query is then - passed to the QNetworkAccessManager's \c get() function to start the - request. - - \snippet googlesuggest/googlesuggest.cpp 7 - - The function \c preventSuggest() stops the timer to prevent further - requests from being started. - - \snippet googlesuggest/googlesuggest.cpp 8 - - When the network request is finished, the QNetworkAccessManager delivers the - data received from the server through the networkReply object. - - \snippet googlesuggest/googlesuggest.cpp 9 - - To extract the data from the reply we use the \c readAll() function, which - is inherited from QIODevice and returns a QByteArray. Since this data is - encoded in XML we can use a QXmlStreamReader to traverse the data and - extract the search result as QStrings, which we can stream into two - QStringLists used to populate the popup. - - Finally, we schedule the QNetworkReply object for deletion using the \c - deleteLater function. - - \section1 SearchBox Class Declaration - - The SearchBox class inherits QLineEdit and adds the protected slot \c - doSearch(). - - A \c GSuggestCompletion member provides the SearchBox with the request - functionality and the suggestions returned from the Google search engine. - - \snippet googlesuggest/searchbox.h 1 - - \section1 SearchBox Class Implementation - - The search box constructor instantiates the GSuggestCompletion object and - connects the returnPressed() signal to the doSearch() slot. - - \snippet googlesuggest/searchbox.cpp 1 - - The function \c doSearch() stops the completer from sending any further - queries to the search engine. - - Further, the function extracts the selected search phrase and opens it - in the default web browser using QDesktopServices. - - \snippet googlesuggest/searchbox.cpp 2 - -*/ |