From d1f74b8ddf7a6f26f8b2a689cc728282bc68125c Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Wed, 19 Sep 2012 09:15:38 +0200 Subject: Move examples to proper location. Change-Id: Ib808f5d99cb8217f8786411b531fa5bc7fa5250a Reviewed-by: Martin Smith --- doc/src/examples/completer.qdoc | 249 ---------- doc/src/examples/contiguouscache.qdoc | 83 ---- doc/src/examples/dropsite.qdoc | 249 ---------- doc/src/examples/echoplugin.qdoc | 208 -------- doc/src/examples/i18n.qdoc | 37 -- doc/src/examples/orientation.qdoc | 143 ------ doc/src/examples/plugandpaint.qdoc | 540 --------------------- doc/src/examples/regexp.qdoc | 37 -- doc/src/examples/settingseditor.qdoc | 37 -- doc/src/examples/styleplugin.qdoc | 133 ----- doc/src/examples/textfinder.qdoc | 159 ------ doc/src/examples/treemodelcompleter.qdoc | 171 ------- doc/src/examples/undo.qdoc | 43 -- doc/src/examples/undoframework.qdoc | 291 ----------- doc/src/examples/widgets/mousebuttons.qdoc | 94 ---- doc/src/images/completer-example-country.png | Bin 12387 -> 0 bytes doc/src/images/completer-example-word.png | Bin 11702 -> 0 bytes doc/src/images/completer-example.png | Bin 10486 -> 0 bytes doc/src/images/dropsite-example.png | Bin 118905 -> 0 bytes doc/src/images/echopluginexample.png | Bin 5921 -> 0 bytes doc/src/images/orientation-landscape-ui.png | Bin 18077 -> 0 bytes doc/src/images/orientation-landscape.png | Bin 46496 -> 0 bytes doc/src/images/orientation-portrait-ui.png | Bin 9785 -> 0 bytes doc/src/images/orientation-portrait.png | Bin 17377 -> 0 bytes doc/src/images/plugandpaint-plugindialog.png | Bin 8706 -> 0 bytes doc/src/images/plugandpaint.png | Bin 7540 -> 0 bytes doc/src/images/regexp-example.png | Bin 16250 -> 0 bytes doc/src/images/settingseditor-example.png | Bin 19473 -> 0 bytes doc/src/images/stylepluginexample.png | Bin 5259 -> 0 bytes .../images/textfinder-example-userinterface.png | Bin 7900 -> 0 bytes doc/src/images/treemodelcompleter-example.png | Bin 25235 -> 0 bytes doc/src/images/undodemo.png | Bin 84941 -> 0 bytes doc/src/images/undoframeworkexample.png | Bin 18026 -> 0 bytes .../images/widgets/mousebutton-buttontester.png | Bin 14492 -> 0 bytes .../snippets/code/doc_src_examples_dropsite.qdoc | 43 -- 35 files changed, 2517 deletions(-) delete mode 100644 doc/src/examples/completer.qdoc delete mode 100644 doc/src/examples/contiguouscache.qdoc delete mode 100644 doc/src/examples/dropsite.qdoc delete mode 100644 doc/src/examples/echoplugin.qdoc delete mode 100644 doc/src/examples/i18n.qdoc delete mode 100644 doc/src/examples/orientation.qdoc delete mode 100644 doc/src/examples/plugandpaint.qdoc delete mode 100644 doc/src/examples/regexp.qdoc delete mode 100644 doc/src/examples/settingseditor.qdoc delete mode 100644 doc/src/examples/styleplugin.qdoc delete mode 100644 doc/src/examples/textfinder.qdoc delete mode 100644 doc/src/examples/treemodelcompleter.qdoc delete mode 100644 doc/src/examples/undo.qdoc delete mode 100644 doc/src/examples/undoframework.qdoc delete mode 100644 doc/src/examples/widgets/mousebuttons.qdoc delete mode 100644 doc/src/images/completer-example-country.png delete mode 100644 doc/src/images/completer-example-word.png delete mode 100644 doc/src/images/completer-example.png delete mode 100644 doc/src/images/dropsite-example.png delete mode 100644 doc/src/images/echopluginexample.png delete mode 100644 doc/src/images/orientation-landscape-ui.png delete mode 100644 doc/src/images/orientation-landscape.png delete mode 100644 doc/src/images/orientation-portrait-ui.png delete mode 100644 doc/src/images/orientation-portrait.png delete mode 100644 doc/src/images/plugandpaint-plugindialog.png delete mode 100644 doc/src/images/plugandpaint.png delete mode 100644 doc/src/images/regexp-example.png delete mode 100644 doc/src/images/settingseditor-example.png delete mode 100644 doc/src/images/stylepluginexample.png delete mode 100644 doc/src/images/textfinder-example-userinterface.png delete mode 100644 doc/src/images/treemodelcompleter-example.png delete mode 100644 doc/src/images/undodemo.png delete mode 100644 doc/src/images/undoframeworkexample.png delete mode 100644 doc/src/images/widgets/mousebutton-buttontester.png delete mode 100644 doc/src/snippets/code/doc_src_examples_dropsite.qdoc (limited to 'doc') diff --git a/doc/src/examples/completer.qdoc b/doc/src/examples/completer.qdoc deleted file mode 100644 index 0e635e3fb0..0000000000 --- a/doc/src/examples/completer.qdoc +++ /dev/null @@ -1,249 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example completer - \title Completer Example - - The Completer example shows how to provide string-completion facilities - for an input widget based on data provided by a model. - - \image completer-example.png - - This example uses a custom item model, \c FileSystemModel, and a QCompleter object. - QCompleter is a class that provides completions based on an item model. The - type of model, the completion mode, and the case sensitivity can be - selected using combo boxes. - - \section1 The Resource File - - The Completer example requires a resource file in order to store the - \e{countries.txt} and \e{words.txt}. The resource file contains the - following code: - - \quotefile examples/tools/completer/completer.qrc - - \section1 FileSystemModel Class Definition - - The \c FileSystemModel class is a subclass of QFileSystemModel, which provides a data - model for the local filesystem. - - \snippet examples/tools/completer/fsmodel.h 0 - - This class only has a constructor and a \c data() function as it is only - created to enable \c data() to return the entire file path for the - display role, unlike \l{QFileSystemModel}'s \c data() function that only returns - the folder and not the drive label. This is further explained in - \c FileSystemModel's implementation. - - \section1 FileSystemModel Class Implementation - - The constructor for the \c FileSystemModel class is used to pass \a parent to - QFileSystemModel. - - \snippet examples/tools/completer/fsmodel.cpp 0 - - As mentioned earlier, the \c data() function is reimplemented in order to - get it to return the entire file parth for the display role. For example, - with a QFileSystemModel, you will see "Program Files" in the view. However, with - \c FileSystemModel, you will see "C:\\Program Files". - - \snippet examples/tools/completer/fsmodel.cpp 1 - - The screenshots below illustrate this difference: - - \table - \row \li \inlineimage completer-example-qdirmodel.png - \li \inlineimage completer-example-dirmodel.png - \endtable - - The Qt::EditRole, which QCompleter uses to look for matches, is left - unchanged. - - \section1 MainWindow Class Definition - - The \c MainWindow class is a subclass of QMainWindow and implements five - private slots - \c about(), \c changeCase(), \c changeMode(), \c changeModel(), - and \c changeMaxVisible(). - - \snippet examples/tools/completer/mainwindow.h 0 - - Within the \c MainWindow class, we have two private functions: - \c createMenu() and \c modelFromFile(). We also declare the private widgets - needed - three QComboBox objects, a QCheckBox, a QCompleter, a QLabel, and - a QLineEdit. - - \snippet examples/tools/completer/mainwindow.h 1 - - \section1 MainWindow Class Implementation - - The constructor of \c MainWindow constructs a \c MainWindow with a parent - widget and initializes the private members. The \c createMenu() function - is then invoked. - - We set up three QComboBox objects, \c modelComb, \c modeCombo and - \c caseCombo. By default, the \c modelCombo is set to QFileSystemModel, - the \c modeCombo is set to "Filtered Popup" and the \c caseCombo is set - to "Case Insensitive". - - \snippet examples/tools/completer/mainwindow.cpp 0 - - The \c maxVisibleSpinBox is created and determines the number of visible - item in the completer - - The \c wrapCheckBox is then set up. This \c checkBox determines if the - \c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()} property - is enabled or disabled. - - \snippet examples/tools/completer/mainwindow.cpp 1 - - We instantiate \c contentsLabel and set its size policy to - \l{QSizePolicy::Fixed}{fixed}. The combo boxes' \l{QComboBox::activated()} - {activated()} signals are then connected to their respective slots. - - \snippet examples/tools/completer/mainwindow.cpp 2 - - The \c lineEdit is set up and then we arrange all the widgets using a - QGridLayout. The \c changeModel() function is called, to initialize the - \c completer. - - \snippet examples/tools/completer/mainwindow.cpp 3 - - The \c createMenu() function is used to instantiate the QAction objects - needed to fill the \c fileMenu and \c helpMenu. The actions' - \l{QAction::triggered()}{triggered()} signals are connected to their - respective slots. - - \snippet examples/tools/completer/mainwindow.cpp 4 - - The \c modelFromFile() function accepts the \a fileName of a file and - processes it depending on its contents. - - We first validate the \c file to ensure that it can be opened in - QFile::ReadOnly mode. If this is unsuccessful, the function returns an - empty QStringListModel. - - \snippet examples/tools/completer/mainwindow.cpp 5 - - The mouse cursor is then overridden with Qt::WaitCursor before we fill - a QStringList object, \c words, with the contents of \c file. Once this - is done, we restore the mouse cursor. - - \snippet examples/tools/completer/mainwindow.cpp 6 - - As mentioned earlier, the resources file contains two files - - \e{countries.txt} and \e{words.txt}. If the \c file read is \e{words.txt}, - we return a QStringListModel with \c words as its QStringList and - \c completer as its parent. - - \snippet examples/tools/completer/mainwindow.cpp 7 - - If the \c file read is \e{countries.txt}, then we require a - QStandardItemModel with \c words.count() rows, 2 columns, and \c completer - as its parent. - - \snippet examples/tools/completer/mainwindow.cpp 8 - - A standard line in \e{countries.txt} is: - \quotation - Norway NO - \endquotation - - Hence, to populate the QStandardItemModel object, \c m, we have to - split the country name and its symbol. Once this is done, we return - \c m. - - \snippet examples/tools/completer/mainwindow.cpp 9 - - The \c changeMode() function sets the \c{completer}'s mode, depending on - the value of \c index. - - \snippet examples/tools/completer/mainwindow.cpp 10 - - The \c changeModel() function changes the item model used based on the - model selected by the user. - - A \c switch statement is used to change the item model based on the index - of \c modelCombo. If \c case is 0, we use an unsorted QFileSystemModel, providing - us with a file path excluding the drive label. - - \snippet examples/tools/completer/mainwindow.cpp 11 - - Note that we create the model with \c completer as the parent as this - allows us to replace the model with a new model. The \c completer will - ensure that the old one is deleted the moment a new model is assigned - to it. - - If \c case is 1, we use the \c DirModel we defined earlier, resulting in - full paths for the files. - - \snippet examples/tools/completer/mainwindow.cpp 12 - - When \c case is 2, we attempt to complete names of countries. This requires - a QTreeView object, \c treeView. The country names are extracted from - \e{countries.txt} and set the popup used to display completions to - \c treeView. - - \snippet examples/tools/completer/mainwindow.cpp 13 - - The screenshot below shows the Completer with the country list model. - - \image completer-example-country.png - - If \c case is 3, we attempt to complete words. This is done using a - QStringListModel that contains data extracted from \e{words.txt}. The - model is sorted \l{QCompleter::CaseInsensitivelySortedModel} - {case insensitively}. - - The screenshot below shows the Completer with the word list model. - - \image completer-example-word.png - - Once the model type is selected, we call the \c changeMode() function and - the \c changeCase() function and set the wrap option accordingly. The - \c{wrapCheckBox}'s \l{QCheckBox::clicked()}{clicked()} signal is connected - to the \c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()} - slot. - - \snippet examples/tools/completer/mainwindow.cpp 14 - - The \c changeMaxVisible() update the maximum number of visible items in - the completer. - - \snippet examples/tools/completer/mainwindow.cpp 15 - - The \c about() function provides a brief description about the example. - - \snippet examples/tools/completer/mainwindow.cpp 16 - - \section1 \c main() Function - - The \c main() function instantiates QApplication and \c MainWindow and - invokes the \l{QWidget::show()}{show()} function. - - \snippet examples/tools/completer/main.cpp 0 - */ diff --git a/doc/src/examples/contiguouscache.qdoc b/doc/src/examples/contiguouscache.qdoc deleted file mode 100644 index b187997bf0..0000000000 --- a/doc/src/examples/contiguouscache.qdoc +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example contiguouscache - \title Contiguous Cache Example - - The Contiguous Cache example shows how to use QContiguousCache to manage memory usage for - very large models. In some environments memory is limited and, even when it - isn't, users still dislike an application using excessive memory. - Using QContiguousCache to manage a list, rather than loading - the entire list into memory, allows the application to limit the amount - of memory it uses, regardless of the size of the data set it accesses - - The simplest way to use QContiguousCache is to cache as items are requested. When - a view requests an item at row N it is also likely to ask for items at rows near - to N. - - \snippet examples/tools/contiguouscache/randomlistmodel.cpp 0 - - After getting the row, the class determines if the row is in the bounds - of the contiguous cache's current range. It would have been equally valid to - simply have the following code instead. - - \code - while (row > m_rows.lastIndex()) - m_rows.append(fetchWord(m_rows.lastIndex()+1); - while (row < m_rows.firstIndex()) - m_rows.prepend(fetchWord(m_rows.firstIndex()-1); - \endcode - - However a list will often jump rows if the scroll bar is used directly, resulting in - the code above causing every row between the old and new rows to be fetched. - - Using QContiguousCache::lastIndex() and QContiguousCache::firstIndex() allows - the example to determine what part of the list the cache is currently caching. - These values don't represent the indexes into the cache's own memory, but rather - a virtual infinite array that the cache represents. - - By using QContiguousCache::append() and QContiguousCache::prepend() the code ensures - that items that may be still on the screen are not lost when the requested row - has not moved far from the current cache range. QContiguousCache::insert() can - potentially remove more than one item from the cache as QContiguousCache does not - allow for gaps. If your cache needs to quickly jump back and forth between - rows with significant gaps between them consider using QCache instead. - - And thats it. A perfectly reasonable cache, using minimal memory for a very large - list. In this case the accessor for getting the words into the cache - generates random information rather than fixed information. This allows you - to see how the cache range is kept for a local number of rows when running the - example. - - \snippet examples/tools/contiguouscache/randomlistmodel.cpp 1 - - It is also worth considering pre-fetching items into the cache outside of the - application's paint routine. This can be done either with a separate thread - or using a QTimer to incrementally expand the range of the cache prior to - rows being requested out of the current cache range. -*/ diff --git a/doc/src/examples/dropsite.qdoc b/doc/src/examples/dropsite.qdoc deleted file mode 100644 index 77b40986aa..0000000000 --- a/doc/src/examples/dropsite.qdoc +++ /dev/null @@ -1,249 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example draganddrop/dropsite - \title Drop Site Example - - The example shows how to distinguish the various MIME formats available - in a drag and drop operation. - - \image dropsite-example.png Screenshot of the Drop Site example - - The Drop Site example accepts drops from other applications, and displays - the MIME formats provided by the drag object. - - There are two classes, \c DropArea and \c DropSiteWindow, and a \c main() - function in this example. A \c DropArea object is instantiated in - \c DropSiteWindow; a \c DropSiteWindow object is then invoked in the - \c main() function. - - \section1 DropArea Class Definition - - The \c DropArea class is a subclass of QLabel with a public slot, - \c clear(), and a \c changed() signal. - - \snippet draganddrop/dropsite/droparea.h DropArea header part1 - - In addition, \c DropArea also contains a private instance of QLabel and - reimplementations of four \l{QWidget} event handlers: - - \list 1 - \li \l{QWidget::dragEnterEvent()}{dragEnterEvent()} - \li \l{QWidget::dragMoveEvent()}{dragMoveEvent()} - \li \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()} - \li \l{QWidget::dropEvent()}{dropEvent()} - \endlist - - These event handlers are further explained in the implementation of the - \c DropArea class. - - \snippet draganddrop/dropsite/droparea.h DropArea header part2 - - \section1 DropArea Class Implementation - - In the \c DropArea constructor, we set the \l{QWidget::setMinimumSize()} - {minimum size} to 200x200 pixels, the \l{QFrame::setFrameStyle()} - {frame style} to both QFrame::Sunken and QFrame::StyledPanel, and we align - its contents to the center. - - \snippet draganddrop/dropsite/droparea.cpp DropArea constructor - - Also, we enable drop events in \c DropArea by setting the - \l{QWidget::acceptDrops()}{acceptDrops} property to \c true. Then, - we enable the \l{QWidget::autoFillBackground()}{autoFillBackground} - property and invoke the \c clear() function. - - The \l{QWidget::dragEnterEvent()}{dragEnterEvent()} event handler is - called when a drag is in progress and the mouse enters the \c DropArea - object. For the \c DropSite example, when the mouse enters \c DropArea, - we set its text to "" and highlight its background. - - \snippet draganddrop/dropsite/droparea.cpp dragEnterEvent() function - - Then, we invoke \l{QDropEvent::acceptProposedAction()} - {acceptProposedAction()} on \a event, setting the drop action to the one - proposed. Lastly, we emit the \c changed() signal, with the data that was - dropped and its MIME type information as a parameter. - - For \l{QWidget::dragMoveEvent()}{dragMoveEvent()}, we just accept the - proposed QDragMoveEvent object, \a event, with - \l{QDropEvent::acceptProposedAction()}{acceptProposedAction()}. - - \snippet draganddrop/dropsite/droparea.cpp dragMoveEvent() function - - The \c DropArea class's implementation of \l{QWidget::dropEvent()} - {dropEvent()} extracts the \a{event}'s mime data and displays it - accordingly. - - \snippet draganddrop/dropsite/droparea.cpp dropEvent() function part1 - - The \c mimeData object can contain one of the following objects: an image, - HTML text, plain text, or a list of URLs. - - \snippet draganddrop/dropsite/droparea.cpp dropEvent() function part2 - - \list - \li If \c mimeData contains an image, we display it in \c DropArea with - \l{QLabel::setPixmap()}{setPixmap()}. - \li If \c mimeData contains HTML, we display it with - \l{QLabel::setText()}{setText()} and set \c{DropArea}'s text format - as Qt::RichText. - \li If \c mimeData contains plain text, we display it with - \l{QLabel::setText()}{setText()} and set \c{DropArea}'s text format - as Qt::PlainText. In the event that \c mimeData contains URLs, we - iterate through the list of URLs to display them on individual - lines. - \li If \c mimeData contains other types of objects, we set - \c{DropArea}'s text, with \l{QLabel::setText()}{setText()} to - "Cannot display data" to inform the user. - \endlist - - We then set \c{DropArea}'s \l{QWidget::backgroundRole()}{backgroundRole} to - QPalette::Dark and we accept \c{event}'s proposed action. - - \snippet draganddrop/dropsite/droparea.cpp dropEvent() function part3 - - The \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()} event handler is - called when a drag is in progress and the mouse leaves the widget. - - \snippet draganddrop/dropsite/droparea.cpp dragLeaveEvent() function - - For \c{DropArea}'s implementation, we clear invoke \c clear() and then - accept the proposed event. - - The \c clear() function sets the text in \c DropArea to "" - and sets the \l{QWidget::backgroundRole()}{backgroundRole} to - QPalette::Dark. Lastly, it emits the \c changed() signal. - - \snippet draganddrop/dropsite/droparea.cpp clear() function - - \section1 DropSiteWindow Class Definition - - The \c DropSiteWindow class contains a constructor and a public slot, - \c updateFormatsTable(). - - \snippet draganddrop/dropsite/dropsitewindow.h DropSiteWindow header - - The class also contains a private instance of \c DropArea, \c dropArea, - QLabel, \c abstractLabel, QTableWidget, \c formatsTable, QDialogButtonBox, - \c buttonBox, and two QPushButton objects, \c clearButton and - \c quitButton. - - \section1 DropSiteWindow Class Implementation - - In the constructor of \c DropSiteWindow, we instantiate \c abstractLabel - and set its \l{QLabel::setWordWrap()}{wordWrap} property to \c true. We - also call the \l{QLabel::adjustSize()}{adjustSize()} function to adjust - \c{abstractLabel}'s size according to its contents. - - \snippet draganddrop/dropsite/dropsitewindow.cpp constructor part1 - - Then we instantiate \c dropArea and connect its \c changed() signal to - \c{DropSiteWindow}'s \c updateFormatsTable() slot. - - \snippet draganddrop/dropsite/dropsitewindow.cpp constructor part2 - - We now set up the QTableWidget object, \c formatsTable. Its - horizontal header is set using a QStringList object, \c labels. The number - of columms are set to two and the table is not editable. Also, the - \c{formatTable}'s horizontal header is formatted to ensure that its second - column stretches to occupy additional space available. - - \snippet draganddrop/dropsite/dropsitewindow.cpp constructor part3 - - Two QPushButton objects, \c clearButton and \c quitButton, are instantiated - and added to \c buttonBox - a QDialogButtonBox object. We use - QDialogButtonBox here to ensure that the push buttons are presented in a - layout that conforms to the platform's style. - - \snippet draganddrop/dropsite/dropsitewindow.cpp constructor part4 - - The \l{QPushButton::clicked()}{clicked()} signals for \c quitButton and - \c clearButton are connected to \l{QWidget::close()}{close()} and - \c clear(), respectively. - - For the layout, we use a QVBoxLayout, \c mainLayout, to arrange our widgets - vertically. We also set the window title to "Drop Site" and the minimum - size to 350x500 pixels. - - \snippet draganddrop/dropsite/dropsitewindow.cpp constructor part5 - - We move on to the \c updateFormatsTable() function. This function updates - the \c formatsTable, displaying the MIME formats of the object dropped onto - the \c DropArea object. First, we set \l{QTableWidget}'s - \l{QTableWidget::setRowCount()}{rowCount} property to 0. Then, we validate - to ensure that the QMimeData object passed in is a valid object. - - \snippet draganddrop/dropsite/dropsitewindow.cpp updateFormatsTable() part1 - - Once we are sure that \c mimeData is valid, we iterate through its - supported formats using the \l{The foreach Keyword}{foreach keyword}. - This keyword has the following format: - - \snippet doc/src/snippets/code/doc_src_examples_dropsite.qdoc 0 - - In our example, \c format is the \a variable and the \a container is a - QStringList, obtained from \c mimeData->formats(). - - \note The \l{QMimeData::formats()}{formats()} function returns a - QStringList object, containing all the formats supported by the - \c mimeData. - - \snippet draganddrop/dropsite/dropsitewindow.cpp updateFormatsTable() part2 - - Within each iteration, we create a QTableWidgetItem, \c formatItem and we - set its \l{QTableWidgetItem::setFlags()}{flags} to Qt::ItemIsEnabled, and - its \l{QTableWidgetItem::setTextAlignment()}{text alignment} to Qt::AlignTop - and Qt::AlignLeft. - - A QString object, \c text, is customized to display data according to the - contents of \c format. We invoke {QString}'s \l{QString::simplified()} - {simplified()} function on \c text, to obtain a string that has no - additional space before, after or in between words. - - \snippet draganddrop/dropsite/dropsitewindow.cpp updateFormatsTable() part3 - - If \c format contains a list of URLs, we iterate through them, using spaces - to separate them. On the other hand, if \c format contains an image, we - display the data by converting the text to hexadecimal. - - \snippet draganddrop/dropsite/dropsitewindow.cpp updateFormatsTable() part4 - - Once \c text has been customized to contain the appropriate data, we insert - both \c format and \c text into \c formatsTable with - \l{QTableWidget::setItem()}{setItem()}. Lastly, we invoke - \l{QTableView::resizeColumnToContents()}{resizeColumnToContents()} on - \c{formatsTable}'s first column. - - \section1 The main() Function - - Within the \c main() function, we instantiate \c DropSiteWindow and invoke - its \l{QWidget::show()}{show()} function. - - \snippet draganddrop/dropsite/main.cpp main() function -*/ diff --git a/doc/src/examples/echoplugin.qdoc b/doc/src/examples/echoplugin.qdoc deleted file mode 100644 index 8481754e98..0000000000 --- a/doc/src/examples/echoplugin.qdoc +++ /dev/null @@ -1,208 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/echoplugin - \title Echo Plugin Example - - This example shows how to create a Qt plugin. - - \image echopluginexample.png - - There are two kinds of plugins in Qt: plugins that extend Qt - itself and plugins that extend applications written in Qt. In this - example, we show the procedure of implementing plugins that extend - applications. When you create a plugin you declare an interface, - which is a class with only pure virtual functions. This interface - is inherited by the class that implements the plugin. The class is - stored in a shared library and can therefore be loaded by - applications at run-time. When loaded, the plugin is dynamically - cast to the interface using Qt's \l{Meta-Object - System}{meta-object system}. The plugin \l{How to Create Qt - Plugins}{overview document} gives a high-level introduction to - plugins. - - We have implemented a plugin, the \c EchoPlugin, which implements - the \c EchoInterface. The interface consists of \c echo(), which - takes a QString as argument. The \c EchoPlugin returns the string - unaltered (i.e., it works as the familiar echo command found in - both Unix and Windows). - - We test the plugin in \c EchoWindow: when you push the QPushButton - (as seen in the image above), the application sends the text in - the QLineEdit to the plugin, which echoes it back to the - application. The answer from the plugin is displayed in the - QLabel. - - - \section1 EchoWindow Class Definition - - The \c EchoWindow class lets us test the \c EchoPlugin through a - GUI. - - \snippet examples/tools/echoplugin/echowindow/echowindow.h 0 - - We load the plugin in \c loadPlugin() and cast it to \c - EchoInterface. When the user clicks the \c button we take the - text in \c lineEdit and call the interface's \c echo() with it. - - - \section1 EchoWindow Class Implementation - - We start with a look at the constructor: - - \snippet examples/tools/echoplugin/echowindow/echowindow.cpp 0 - - We create the widgets and set a title for the window. We then load - the plugin. \c loadPlugin() returns false if the plugin could not - be loaded, in which case we disable the widgets. If you wish a - more detailed error message, you can use - \l{QPluginLoader::}{errorString()}; we will look more closely at - QPluginLoader later. - - Here is the implementation of \c sendEcho(): - - \snippet examples/tools/echoplugin/echowindow/echowindow.cpp 1 - - This slot is called when the user pushes \c button or presses - enter in \c lineEdit. We call \c echo() of the echo interface. In - our example this is the \c EchoPlugin, but it could be any plugin - that inherit the \c EchoInterface. We take the QString returned - from \c echo() and display it in the \c label. - - Here is the implementation of \c createGUI(): - - \snippet examples/tools/echoplugin/echowindow/echowindow.cpp 2 - - We create the widgets and lay them out in a grid layout. We - connect the label and line edit to our \c sendEcho() slot. - - Here is the \c loadPlugin() function: - - \snippet examples/tools/echoplugin/echowindow/echowindow.cpp 3 - - Access to plugins at run-time is provided by QPluginLoader. You - supply it with the filename of the shared library the plugin is - stored in and call \l{QPluginLoader::}{instance()}, which loads - and returns the root component of the plugin (i.e., it resolves - the type of the plugin and creates a QObject instance of it). If - the plugin was not successfully loaded, it will be null, so we - return false. If it was loaded correctly, we can cast the plugin - to our \c EchoInterface and return true. In the case that the - plugin loaded does not implement the \c EchoInterface, \c - instance() will return null, but this cannot happen in our - example. Notice that the location of the plugin is not the same - for all platforms. - - - \section1 EchoInterface Class Definition - - The \c EchoInterface defines the functions that the plugin will - provide. An interface is a class that only consists of pure - virtual functions. If non virtual functions were present in the - class you would get misleading compile errors in the moc files. - - \snippet examples/tools/echoplugin/echowindow/echointerface.h 0 - - We declare \c echo(). In our \c EchoPlugin we use this method to - return, or echo, \a message. - - We use the Q_DECLARE_INTERFACE macro to let \l{Meta-Object - System}{Qt's meta object system} aware of the interface. We do - this so that it will be possible to identify plugins that - implements the interface at run-time. The second argument is a - string that must identify the interface in a unique way. - - - \section1 EchoPlugin Class Definition - - We inherit both QObject and \c EchoInterface to make this class a - plugin. The Q_INTERFACES macro tells Qt which interfaces the class - implements. In our case we only implement the \c EchoInterface. - If a class implements more than one interface, they are given as - a comma separated list. - - \snippet examples/tools/echoplugin/plugin/echoplugin.h 0 - - - \section1 EchoPlugin Class Implementation - - Here is the implementation of \c echo(): - - \snippet examples/tools/echoplugin/plugin/echoplugin.cpp 0 - - We simply return the functions parameter. - - \snippet examples/tools/echoplugin/plugin/echoplugin.cpp 1 - - We use the Q_EXPORT_PLUGIN2 macro to let Qt know that the \c - EchoPlugin class is a plugin. The first parameter is the name of - the plugin; it is usual to give the plugin and the library file it - is stored in the same name. - - \section1 The \c main() function - - \snippet examples/tools/echoplugin/echowindow/main.cpp 0 - - We create an \c EchoWindow and display it as a top-level window. - - \section1 The Profiles - - When creating plugins the profiles need to be adjusted. - We show here what changes need to be done. - - The profile in the echoplugin directory uses the \c subdirs - template and simply includes includes to directories in which - the echo window and echo plugin lives: - - \snippet examples/tools/echoplugin/echoplugin.pro 0 - - The profile for the echo window does not need any plugin specific - settings. We move on to the plugin profile: - - \snippet examples/tools/echoplugin/plugin/plugin.pro 0 - - We need to set the TEMPLATE as we now want to make a library - instead of an executable. We also need to tell qmake that we are - creating a plugin. The \c EchoInterface that the plugin implements - lives in the \c echowindow directory, so we need to add that - directory to the include path. We set the TARGET of the project, - which is the name of the library file in which the plugin will be - stored; qmake appends the appropriate file extension depending on - the platform. By convention the target should have the same name - as the plugin (set with Q_EXPORT_PLUGIN2) - - \section1 Further reading and examples - - You can find an overview of the macros needed to create plugins - \l{Macros for Defining Plugins}{here}. - - We give an example of a plugin that extend Qt in the \l{Style - Plugin Example}{style plugin} example. The \l{Plug & Paint - Example}{plug and paint} example shows how to create static - plugins. -*/ diff --git a/doc/src/examples/i18n.qdoc b/doc/src/examples/i18n.qdoc deleted file mode 100644 index 5f5d30b648..0000000000 --- a/doc/src/examples/i18n.qdoc +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/i18n - \title I18N Example - - The Internationalization (I18N) example demonstrates Qt's support for translated - text. Developers can write the initial application text in one language, and - translations can be provided later without any modifications to the code. - - \image i18n-example.png -*/ diff --git a/doc/src/examples/orientation.qdoc b/doc/src/examples/orientation.qdoc deleted file mode 100644 index 89d314c48a..0000000000 --- a/doc/src/examples/orientation.qdoc +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! \example widgets/orientation - \group all-examples - \title Orientation Example - - The example shows a simple way to use different UIs depending on the screen - orientation of a mobile device. - - \image orientation-landscape.png The UI in landscape mode - \image orientation-portrait.png The UI in portrait mode - - The screen on many mobile devices can be viewed in both portrait and - landscape orientation. The orientation can be swiched with the help of a - hardware or software trigger. Due to the often small physical screen size, - user interfaces has to be very simple and compact to stay usable, and - applications usually occupy the whole screen. Designing a user interface - that works equally well in both landscape and portrait mode is not always - possible, however, so making a different layout for each case usually pays - off. - - The example application makes use of two different UI widgets created with - the Qt Designer, one for portrait and one for landscape orientation. The - application has a widget that contains an image and the user is able to - select one of three images for it to show. In addition to the two UIs, the - application consists of a \c MainWindow class. - - \section1 Landscape UI - - If the screen is in landscape mode, the user probably holds the device with - both hands and is ready to give full attention to the application. The - landscape UI looks like this: - - \image orientation-landscape-ui.png The landscape UI - - To the left is a QWidget called \c choiceWidget, which will show the - current image, and to the right are three QRadioButton instances. The - active radio button specifies the image to show. - - \section1 Portrait UI - - When the device is in portrait mode, it usually means that the user holds - it with one hand, and can comfortably use the thumb for small amounts of - input. The layout is simpler, and is focused on consuming content. The - portrait UI looks like this: - - \image orientation-portrait-ui.png The portrait UI - - Similarly, it contains a QWidget, also called \c choiceWidget, that will - show the current image. In contrast to the landscape UI, this one doesn't - provide any controls to change the image. - - \section1 MainWindow Class Definition - - \c MainWindow inherits from QWidget and acts as the top level widget of the - application. - - \snippet examples/widgets/orientation/mainwindow.h 0 - - The \c resizeEvent() method is re-implemented, and used to check which - UI to show. The \c onRadioButtonClicked() slot is connected to the - landscape UI's radio button group and selects the current image. - - \c landscapeWidget and \c portraitWidget will contain the UI layouts. Only - one of them is visible at a time. - - \section1 MainWindow Class Implementation - - In the constructor, the widgets that will hold the UIs are created and set - up. - - \snippet examples/widgets/orientation/mainwindow.cpp 0 - - Since the exit buttons on the layouts are different from each other, both - of them have to have their \c clicked() signal connected to the \c close() - slot of the main widget. The first image is also made current with the call - to \c onRadioButtonClicked(). - - \snippet examples/widgets/orientation/mainwindow.cpp 1 - - On the Maemo platform, windows are stuck in landscape mode by default. The - application has to explicitly say that rotation is supported. - - \snippet examples/widgets/orientation/mainwindow.cpp 2 - - The \c resizeEvent() is called when the main window is first created, and - also whenever the window has been resized. If the window is shown in - full screen, this is an indication that the orientation of the screen has - changed. - - The dimensions of \c landscapeWidget is the transpose of the dimensions of - \c portraitWidget. When the orientation is known, both are set to the - (possibly transposed) size of the window. Depending on the orientation, one - widget is made visible and the other invisible. - - \snippet examples/widgets/orientation/mainwindow.cpp 3 - - When the user selects one of the radio buttons in the landscape UI, the - current image is changed. The image is displayed by specifying the - background style of the choice widget. Since both \c portrait and - \c landscape have a \c choiceWidget of their own, the change has to be - reflected in both instances. - - \snippet examples/widgets/orientation/mainwindow.cpp 4 - - Synchronizing both UIs like this might become unfeasible when there are - many things that can change. In that case it is better to make use of the - \l{Introduction to Model/View Programming}{Model-View-Controller pattern} - more extensively and share the content between both portrait and landscape - widgets. Then an interface for displaying and manipulating it can be tailor - made for both orientations. - - \section1 The \c main() Function - - The main function creates a \c MainWindow instance and shows it full - screen. - \snippet examples/widgets/orientation/main.cpp 0 -*/ diff --git a/doc/src/examples/plugandpaint.qdoc b/doc/src/examples/plugandpaint.qdoc deleted file mode 100644 index 4b3e6df509..0000000000 --- a/doc/src/examples/plugandpaint.qdoc +++ /dev/null @@ -1,540 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/plugandpaint - \title Plug & Paint Example - - The Plug & Paint example demonstrates how to write Qt - applications that can be extended through plugins. - - \image plugandpaint.png Screenshot of the Plug & Paint example - - A plugin is a dynamic library that can be loaded at run-time to - extend an application. Qt makes it possible to create custom - plugins and to load them using QPluginLoader. To ensure that - plugins don't get lost, it is also possible to link them - statically to the executable. The Plug & Paint example uses - plugins to support custom brushes, shapes, and image filters. A - single plugin can provide multiple brushes, shapes, and/or - filters. - - If you want to learn how to make your own application extensible - through plugins, we recommend that you start by reading this - overview, which explains how to make an application use plugins. - Afterward, you can read the - \l{tools/plugandpaintplugins/basictools}{Basic Tools} and - \l{tools/plugandpaintplugins/extrafilters}{Extra Filters} - overviews, which show how to implement static and dynamic - plugins, respectively. - - Plug & Paint consists of the following classes: - - \list - \li \c MainWindow is a QMainWindow subclass that provides the menu - system and that contains a \c PaintArea as the central widget. - \li \c PaintArea is a QWidget that allows the user to draw using a - brush and to insert shapes. - \li \c PluginDialog is a dialog that shows information about the - plugins detected by the application. - \li \c BrushInterface, \c ShapeInterface, and \c FilterInterface are - abstract base classes that can be implemented by plugins to - provide custom brushes, shapes, and image filters. - \endlist - - \section1 The Plugin Interfaces - - We will start by reviewing the interfaces defined in \c - interfaces.h. These interfaces are used by the Plug & Paint - application to access extra functionality. They are implemented - in the plugins. - - - \snippet examples/tools/plugandpaint/interfaces.h 0 - - The \c BrushInterface class declares four pure virtual functions. - The first pure virtual function, \c brushes(), returns a list of - strings that identify the brushes provided by the plugin. By - returning a QStringList instead of a QString, we make it possible - for a single plugin to provide multiple brushes. The other - functions have a \c brush parameter to identify which brush - (among those returned by \c brushes()) is used. - - \c mousePress(), \c mouseMove(), and \c mouseRelease() take a - QPainter and one or two \l{QPoint}s, and return a QRect - identifying which portion of the image was altered by the brush. - - The class also has a virtual destructor. Interface classes - usually don't need such a destructor (because it would make - little sense to \c delete the object that implements the - interface through a pointer to the interface), but some compilers - emit a warning for classes that declare virtual functions but no - virtual destructor. We provide the destructor to keep these - compilers happy. - - \snippet examples/tools/plugandpaint/interfaces.h 1 - - The \c ShapeInterface class declares a \c shapes() function that - works the same as \c{BrushInterface}'s \c brushes() function, and - a \c generateShape() function that has a \c shape parameter. - Shapes are represented by a QPainterPath, a data type that can - represent arbitrary 2D shapes or combinations of shapes. The \c - parent parameter can be used by the plugin to pop up a dialog - asking the user to specify more information. - - \snippet examples/tools/plugandpaint/interfaces.h 2 - - The \c FilterInterface class declares a \c filters() function - that returns a list of filter names, and a \c filterImage() - function that applies a filter to an image. - - \snippet examples/tools/plugandpaint/interfaces.h 4 - - To make it possible to query at run-time whether a plugin - implements a given interface, we must use the \c - Q_DECLARE_INTERFACE() macro. The first argument is the name of - the interface. The second argument is a string identifying the - interface in a unique way. By convention, we use a "Java package - name" syntax to identify interfaces. If we later change the - interfaces, we must use a different string to identify the new - interface; otherwise, the application might crash. It is therefore - a good idea to include a version number in the string, as we did - above. - - The \l{tools/plugandpaintplugins/basictools}{Basic Tools} plugin - and the \l{tools/plugandpaintplugins/extrafilters}{Extra Filters} - plugin shows how to derive from \c BrushInterface, \c - ShapeInterface, and \c FilterInterface. - - A note on naming: It might have been tempting to give the \c - brushes(), \c shapes(), and \c filters() functions a more generic - name, such as \c keys() or \c features(). However, that would - have made multiple inheritance impractical. When creating - interfaces, we should always try to give unique names to the pure - virtual functions. - - \section1 The MainWindow Class - - The \c MainWindow class is a standard QMainWindow subclass, as - found in many of the other examples (e.g., - \l{mainwindows/application}{Application}). Here, we'll - concentrate on the parts of the code that are related to plugins. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 4 - - The \c loadPlugins() function is called from the \c MainWindow - constructor to detect plugins and update the \uicontrol{Brush}, - \uicontrol{Shapes}, and \uicontrol{Filters} menus. We start by handling static - plugins (available through QPluginLoader::staticInstances()) - - To the application that uses the plugin, a Qt plugin is simply a - QObject. That QObject implements plugin interfaces using multiple - inheritance. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 5 - - The next step is to load dynamic plugins. We initialize the \c - pluginsDir member variable to refer to the \c plugins - subdirectory of the Plug & Paint example. On Unix, this is just a - matter of initializing the QDir variable with - QApplication::applicationDirPath(), the path of the executable - file, and to do a \l{QDir::cd()}{cd()}. On Windows and Mac OS X, - this file is usually located in a subdirectory, so we need to - take this into account. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 6 - \snippet examples/tools/plugandpaint/mainwindow.cpp 7 - \snippet examples/tools/plugandpaint/mainwindow.cpp 8 - - We use QDir::entryList() to get a list of all files in that - directory. Then we iterate over the result using \l foreach and - try to load the plugin using QPluginLoader. - - The QObject provided by the plugin is accessible through - QPluginLoader::instance(). If the dynamic library isn't a Qt - plugin, or if it was compiled against an incompatible version of - the Qt library, QPluginLoader::instance() returns a null pointer. - - If QPluginLoader::instance() is non-null, we add it to the menus. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 9 - - At the end, we enable or disable the \uicontrol{Brush}, \uicontrol{Shapes}, - and \uicontrol{Filters} menus based on whether they contain any items. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 10 - - For each plugin (static or dynamic), we check which interfaces it - implements using \l qobject_cast(). First, we try to cast the - plugin instance to a \c BrushInterface; if it works, we call the - private function \c addToMenu() with the list of brushes returned - by \c brushes(). Then we do the same with the \c ShapeInterface - and the \c FilterInterface. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 3 - - The \c aboutPlugins() slot is called on startup and can be - invoked at any time through the \uicontrol{About Plugins} action. It - pops up a \c PluginDialog, providing information about the loaded - plugins. - - \image plugandpaint-plugindialog.png Screenshot of the Plugin dialog - - - The \c addToMenu() function is called from \c loadPlugin() to - create \l{QAction}s for custom brushes, shapes, or filters and - add them to the relevant menu. The QAction is created with the - plugin from which it comes from as the parent; this makes it - convenient to get access to the plugin later. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 0 - - The \c changeBrush() slot is invoked when the user chooses one of - the brushes from the \uicontrol{Brush} menu. We start by finding out - which action invoked the slot using QObject::sender(). Then we - get the \c BrushInterface out of the plugin (which we - conveniently passed as the QAction's parent) and we call \c - PaintArea::setBrush() with the \c BrushInterface and the string - identifying the brush. Next time the user draws on the paint - area, \c PaintArea will use this brush. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 1 - - The \c insertShape() is invoked when the use chooses one of the - shapes from the \uicontrol{Shapes} menu. We retrieve the QAction that - invoked the slot, then the \c ShapeInterface associated with that - QAction, and finally we call \c ShapeInterface::generateShape() - to obtain a QPainterPath. - - \snippet examples/tools/plugandpaint/mainwindow.cpp 2 - - The \c applyFilter() slot is similar: We retrieve the QAction - that invoked the slot, then the \c FilterInterface associated to - that QAction, and finally we call \c - FilterInterface::filterImage() to apply the filter onto the - current image. - - \section1 The PaintArea Class - - The \c PaintArea class contains some code that deals with \c - BrushInterface, so we'll review it briefly. - - \snippet examples/tools/plugandpaint/paintarea.cpp 0 - - In \c setBrush(), we simply store the \c BrushInterface and the - brush that are given to us by \c MainWindow. - - \snippet examples/tools/plugandpaint/paintarea.cpp 1 - - In the \l{QWidget::mouseMoveEvent()}{mouse move event handler}, - we call the \c BrushInterface::mouseMove() function on the - current \c BrushInterface, with the current brush. The mouse - press and mouse release handlers are very similar. - - \section1 The PluginDialog Class - - The \c PluginDialog class provides information about the loaded - plugins to the user. Its constructor takes a path to the plugins - and a list of plugin file names. It calls \c findPlugins() - to fill the QTreeWdiget with information about the plugins: - - \snippet examples/tools/plugandpaint/plugindialog.cpp 0 - - The \c findPlugins() is very similar to \c - MainWindow::loadPlugins(). It uses QPluginLoader to access the - static and dynamic plugins. Its helper function \c - populateTreeWidget() uses \l qobject_cast() to find out which - interfaces are implemented by the plugins: - - \snippet examples/tools/plugandpaint/plugindialog.cpp 1 - - \section1 Importing Static Plugins - - The \l{tools/plugandpaintplugins/basictools}{Basic Tools} plugin - is built as a static plugin, to ensure that it is always - available to the application. This requires using the - Q_IMPORT_PLUGIN() macro somewhere in the application (in a \c - .cpp file) and specifying the plugin in the \c .pro file. - - For Plug & Paint, we have chosen to put Q_IMPORT_PLUGIN() in \c - main.cpp: - - \snippet examples/tools/plugandpaint/main.cpp 0 - - The argument to Q_IMPORT_PLUGIN() is the plugin's name, as - specified with Q_EXPORT_PLUGIN2() in the \l{Exporting the - Plugin}{plugin}. - - In the \c .pro file, we need to specify the static library. - Here's the project file for building Plug & Paint: - - \snippet examples/tools/plugandpaint/plugandpaint.pro 0 - - The \c LIBS line variable specifies the library \c pnp_basictools - located in the \c ../plugandpaintplugins/basictools directory. - (Although the \c LIBS syntax has a distinct Unix flavor, \c qmake - supports it on all platforms.) - - The \c CONFIG() code at the end is necessary for this example - because the example is part of the Qt distribution and Qt can be - configured to be built simultaneously in debug and in release - modes. You don't need to for your own plugin applications. - - This completes our review of the Plug & Paint application. At - this point, you might want to take a look at the - \l{tools/plugandpaintplugins/basictools}{Basic Tools} example - plugin. -*/ - -/*! - \example tools/plugandpaintplugins/basictools - \title Plug & Paint Basic Tools Example - - The Basic Tools example is a static plugin for the - \l{tools/plugandpaint}{Plug & Paint} example. It provides a set - of basic brushes, shapes, and filters. Through the Basic Tools - example, we will review the four steps involved in writing a Qt - plugin: - - \list 1 - \li Declare a plugin class. - \li Implement the interfaces provided by the plugin. - \li Export the plugin using the Q_EXPORT_PLUGIN2() macro. - \li Build the plugin using an adequate \c .pro file. - \endlist - - \section1 Declaration of the Plugin Class - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h 0 - - We start by including \c interfaces.h, which defines the plugin - interfaces for the \l{tools/plugandpaint}{Plug & Paint} - application. For the \c #include to work, we need to add an \c - INCLUDEPATH entry to the \c .pro file with the path to Qt's \c - examples/tools directory. - - The \c BasicToolsPlugin class is a QObject subclass that - implements the \c BrushInterface, the \c ShapeInterface, and the - \c FilterInterface. This is done through multiple inheritance. - The \c Q_INTERFACES() macro is necessary to tell \l{moc}, Qt's - meta-object compiler, that the base classes are plugin - interfaces. Without the \c Q_INTERFACES() macro, we couldn't use - \l qobject_cast() in the \l{tools/plugandpaint}{Plug & Paint} - application to detect interfaces. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h 2 - - In the \c public section of the class, we declare all the - functions from the three interfaces. - - \section1 Implementation of the Brush Interface - - Let's now review the implementation of the \c BasicToolsPlugin - member functions inherited from \c BrushInterface. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 0 - - The \c brushes() function returns a list of brushes provided by - this plugin. We provide three brushes: \uicontrol{Pencil}, \uicontrol{Air - Brush}, and \uicontrol{Random Letters}. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 1 - - On a mouse press event, we just call \c mouseMove() to draw the - spot where the event occurred. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 2 - - In \c mouseMove(), we start by saving the state of the QPainter - and we compute a few variables that we'll need later. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 3 - - Then comes the brush-dependent part of the code: - - \list - \li If the brush is \uicontrol{Pencil}, we just call - QPainter::drawLine() with the current QPen. - - \li If the brush is \uicontrol{Air Brush}, we start by setting the - painter's QBrush to Qt::Dense6Pattern to obtain a dotted - pattern. Then we draw a circle filled with that QBrush several - times, resulting in a thick line. - - \li If the brush is \uicontrol{Random Letters}, we draw a random letter - at the new cursor position. Most of the code is for setting - the font to be bold and larger than the default font and for - computing an appropriate bounding rect. - \endlist - - At the end, we restore the painter state to what it was upon - entering the function and we return the bounding rectangle. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 4 - - When the user releases the mouse, we do nothing and return an - empty QRect. - - \section1 Implementation of the Shape Interface - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 5 - - The plugin provides three shapes: \uicontrol{Circle}, \uicontrol{Star}, and - \uicontrol{Text...}. The three dots after \uicontrol{Text} are there because - the shape pops up a dialog asking for more information. We know - that the shape names will end up in a menu, so we include the - three dots in the shape name. - - A cleaner but more complicated design would have been to - distinguish between the internal shape name and the name used in - the user interface. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 6 - - The \c generateShape() creates a QPainterPath for the specified - shape. If the shape is \uicontrol{Text}, we pop up a QInputDialog to - let the user enter some text. - - \section1 Implementation of the Filter Interface - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 7 - - The plugin provides three filters: \uicontrol{Invert Pixels}, \uicontrol{Swap - RGB}, and \uicontrol{Grayscale}. - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 8 - - The \c filterImage() function takes a filter name and a QImage as - parameters and returns an altered QImage. The first thing we do - is to convert the image to a 32-bit RGB format, to ensure that - the algorithms will work as expected. For example, - QImage::invertPixels(), which is used to implement the - \uicontrol{Invert Pixels} filter, gives counterintuitive results for - 8-bit images, because they invert the indices into the color - table instead of inverting the color table's entries. - - \section1 Exporting the Plugin - - Whereas applications have a \c main() function as their entry - point, plugins need to contain exactly one occurrence of the - Q_EXPORT_PLUGIN2() macro to specify which class provides the - plugin: - - \snippet examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 9 - - This line may appear in any \c .cpp file that is part of the - plugin's source code. - - \section1 The .pro File - - Here's the project file for building the Basic Tools plugin: - - \snippet examples/tools/plugandpaintplugins/basictools/basictools.pro 0 - - The \c .pro file differs from typical \c .pro files in many - respects. First, it starts with a \c TEMPLATE entry specifying \c - lib. (The default template is \c app.) It also adds \c plugin to - the \c CONFIG variable. This is necessary on some platforms to - avoid generating symbolic links with version numbers in the file - name, which is appropriate for most dynamic libraries but not for - plugins. - - To make the plugin a static plugin, all that is required is to - specify \c static in addition to \c plugin. The - \l{tools/plugandpaintplugins/extrafilters}{Extra Filters} plugin, - which is compiled as a dynamic plugin, doesn't specify \c static - in its \c .pro file. - - The \c INCLUDEPATH variable sets the search paths for global - headers (i.e., header files included using \c{#include <...>}). - We add Qt's \c examples/tools directory (strictly speaking, - \c{examples/tools/plugandpaintplugins/basictools/../..}) to the - list, so that we can include \c . - - The \c TARGET variable specifies which name we want to give the - target library. We use \c pnp_ as the prefix to show that the - plugin is designed to work with Plug & Paint. On Unix, \c lib is - also prepended to that name. On all platforms, a - platform-specific suffix is appended (e.g., \c .dll on Windows, - \c .a on Linux). - - The \c CONFIG() code at the end is necessary for this example - because the example is part of the Qt distribution and Qt can be - configured to be built simultaneously in debug and in release - modes. You don't need to for your own plugins. -*/ - -/*! - \example tools/plugandpaintplugins/extrafilters - \title Plug & Paint Extra Filters Example - - The Extra Filters example is a plugin for the - \l{tools/plugandpaint}{Plug & Paint} example. It provides a set - of filters in addition to those provided by the - \l{tools/plugandpaintplugins/basictools}{Basic Tools} plugin. - - Since the approach is identical to - \l{tools/plugandpaintplugins/basictools}{Basic Tools}, we won't - review the code here. The only part of interest is the - \c .pro file, since Extra Filters is a dynamic plugin - (\l{tools/plugandpaintplugins/basictools}{Basic Tools} is - linked statically into the Plug & Paint executable). - - Here's the project file for building the Extra Filters plugin: - - \snippet examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro 0 - - The \c .pro file differs from typical \c .pro files in many - respects. First, it starts with a \c TEMPLATE entry specifying \c - lib. (The default template is \c app.) It also adds \c plugin to - the \c CONFIG variable. This is necessary on some platforms to - avoid generating symbolic links with version numbers in the file - name, which is appropriate for most dynamic libraries but not for - plugins. - - The \c INCLUDEPATH variable sets the search paths for global - headers (i.e., header files included using \c{#include <...>}). - We add Qt's \c examples/tools directory (strictly speaking, - \c{examples/tools/plugandpaintplugins/basictools/../..}) to the - list, so that we can include \c . - - The \c TARGET variable specifies which name we want to give the - target library. We use \c pnp_ as the prefix to show that the - plugin is designed to work with Plug & Paint. On Unix, \c lib is - also prepended to that name. On all platforms, a - platform-specific suffix is appended (e.g., \c .dll on Windows, - \c .so on Linux). - - The \c DESTDIR variable specifies where we want to install the - plugin. We put it in Plug & Paint's \c plugins subdirectory, - since that's where the application looks for dynamic plugins. - - The \c CONFIG() code at the end is necessary for this example - because the example is part of the Qt distribution and Qt can be - configured to be built simultaneously in debug and in release - modes. You don't need to for your own plugins. -*/ diff --git a/doc/src/examples/regexp.qdoc b/doc/src/examples/regexp.qdoc deleted file mode 100644 index 5635a6fe7e..0000000000 --- a/doc/src/examples/regexp.qdoc +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/regexp - \title Regular Expressions Example - - The Regular Expressions (RegExp) example shows how regular expressions in Qt are - applied to text by providing an environment in which new regular expressions can be - created and tested on custom text strings. - - \image regexp-example.png -*/ diff --git a/doc/src/examples/settingseditor.qdoc b/doc/src/examples/settingseditor.qdoc deleted file mode 100644 index e10df5e2ef..0000000000 --- a/doc/src/examples/settingseditor.qdoc +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/settingseditor - \title Settings Editor Example - - The Settings Editor example shows how Qt's standard settings support is used in an - application by providing an editor that enables the user to view the settings for - installed applications, and modify those that can be edited. - - \image settingseditor-example.png -*/ diff --git a/doc/src/examples/styleplugin.qdoc b/doc/src/examples/styleplugin.qdoc deleted file mode 100644 index d4c587fc42..0000000000 --- a/doc/src/examples/styleplugin.qdoc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/styleplugin - \title Style Plugin Example - - This example shows how to create a plugin that extends Qt with a new - GUI look and feel. - - \image stylepluginexample.png - - On some platforms, the native style will prevent the button - from having a red background. In this case, try to run the example - in another style (e.g., plastique). - - A plugin in Qt is a class stored in a shared library that can be - loaded by a QPluginLoader at run-time. When you create plugins in - Qt, they either extend a Qt application or Qt itself. Writing a - plugin that extends Qt itself is achieved by inheriting one of the - plugin \l{Plugin Classes}{base classes}, reimplementing functions - from that class, and adding a macro. In this example we extend Qt - by adding a new GUI look and feel (i.e., making a new QStyle - available). A high-level introduction to plugins is given in the - plugin \l{How to Create Qt Plugins}{overview document}. - - Plugins that provide new styles inherit the QStylePlugin base - class. Style plugins are loaded by Qt and made available through - QStyleFactory; we will look at this later. We have implemented \c - SimpleStylePlugin, which provides \c SimpleStyle. The new style - inherits QWindowsStyle and contributes to widget styling by - drawing button backgrounds in red - not a major contribution, but - it still makes a new style. We test the plugin with \c - StyleWindow, in which we display a QPushButton. - - The \c SimpleStyle and \c StyleWindow classes do not contain any - plugin specific functionality and their implementations are - trivial; we will therefore leap past them and head on to the \c - SimpleStylePlugin and the \c main() function. After we have looked - at that, we examine the plugin's profile. - - - \section1 SimpleStylePlugin Class Definition - - \c SimpleStylePlugin inherits QStylePlugin and is the plugin - class. - - \snippet examples/tools/styleplugin/plugin/simplestyleplugin.h 0 - - \c keys() returns a list of style names that this plugin can - create, while \c create() takes such a string and returns the - QStyle corresponding to the key. Both functions are pure virtual - functions reimplemented from QStylePlugin. When an application - requests an instance of the \c SimpleStyle style, which this - plugin creates, Qt will create it with this plugin. - - - \section1 SimpleStylePlugin Class Implementation - - Here is the implementation of \c keys(): - - \snippet examples/tools/styleplugin/plugin/simplestyleplugin.cpp 0 - - Since this plugin only supports one style, we return a QStringList - with the class name of that style. - - Here is the \c create() function: - - \snippet examples/tools/styleplugin/plugin/simplestyleplugin.cpp 1 - - Note that the key for style plugins are case insensitive. - The case sensitivity varies from plugin to plugin, so you need to - check this when implementing new plugins. - - \section1 The \c main() function - - \snippet examples/tools/styleplugin/stylewindow/main.cpp 0 - - Qt loads the available style plugins when the QApplication object - is initialized. The QStyleFactory class knows about all styles and - produces them with \l{QStyleFactory::}{create()} (it is a - wrapper around all the style plugins). - - \section1 The Simple Style Plugin Profile - - The \c SimpleStylePlugin lives in its own directory and have - its own profile: - - \snippet examples/tools/styleplugin/plugin/plugin.pro 0 - - In the plugin profile we need to set the lib template as we are - building a shared library instead of an executable. We must also - set the config to plugin. We set the library to be stored in the - styles folder under stylewindow because this is a path in which Qt - will search for style plugins. - - \section1 Related articles and examples - - In addition to the plugin \l{How to Create Qt Plugins}{overview - document}, we have other examples and articles that concern - plugins. - - In the \l{Echo Plugin Example}{echo plugin example} we show how to - implement plugins that extends Qt applications rather than Qt - itself, which is the case with the style plugin of this example. - The \l{Plug & Paint Example}{plug & paint} example shows how to - implement a static plugin as well as being a more involved example - on plugins that extend applications. -*/ diff --git a/doc/src/examples/textfinder.qdoc b/doc/src/examples/textfinder.qdoc deleted file mode 100644 index 2b83e86318..0000000000 --- a/doc/src/examples/textfinder.qdoc +++ /dev/null @@ -1,159 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example uitools/textfinder - \title Text Finder Example - - The Text Finder example demonstrates how to dynamically process forms - using the QtUiTools module. Dynamic form processing enables a form to - be processed at run-time only by changing the UI file for the project. - The program allows the user to look up a particular word within the - contents of a text file. This text file is included in the project's - resource and is loaded into the display at startup. - - \table - \row \li \inlineimage textfinder-example-find.png - \li \inlineimage textfinder-example-find2.png - \endtable - - \section1 Setting Up The Resource File - - The resources required for Text Finder are: - \list - \li \e{textfinder.ui} - the user interface file created in QtDesigner - \li \e{input.txt} - a text file containing some text to be displayed - in the QTextEdit - \endlist - - \e{textfinder.ui} contains all the necessary QWidget objects for the - Text Finder. A QLineEdit is used for the user input, a QTextEdit is - used to display the contents of \e{input.txt}, a QLabel is used to - display the text "Keyword", and a QPushButton is used for the "Find" - button. The screenshot below shows the preview obtained in QtDesigner. - - \image textfinder-example-userinterface.png - - A \e{textfinder.qrc} file is used to store both the \e{textfinder.ui} - and \e{input.txt} in the application's executable. The file contains - the following code: - - \quotefile examples/uitools/textfinder/textfinder.qrc - - For more information on resource files, see \l{The Qt Resource System}. - - To generate a form at run-time, the example is linked against the - QtUiTools module library. This is done in the \c{textfinder.pro} file - that contains the following lines: - - \snippet doc/src/snippets/code/doc_src_examples_textfinder.pro 0 - - \section1 TextFinder Class Definition - - The \c TextFinder class is a subclass of QWidget and it hosts the - \l{QWidget}s we need to access in the user interface. The QLabel in the - user interface is not declared here as we do not need to access it. - - \snippet examples/uitools/textfinder/textfinder.h 0 - - The slot \c{on_findButton_clicked()} is a slot named according to the - \l{Using a Designer UI File in Your Application#Automatic Connections} - {Automatic Connection} naming convention required - by \c uic. - - \section1 TextFinder Class Implementation - - The \c TextFinder class's constructor calls the \c loadUiFile() function - and then uses \c qFindChild() to access the user interface's - \l{QWidget}s. - - \snippet examples/uitools/textfinder/textfinder.cpp 0 - - We then use QMetaObject's system to enable signal and slot connections. - - \snippet examples/uitools/textfinder/textfinder.cpp 2 - - The loadTextFile() function is called to load \c{input.txt} into - QTextEdit to displays its contents. - - \snippet examples/uitools/textfinder/textfinder.cpp 3a - - The \c{TextFinder}'s layout is set with \l{QWidget::}{setLayout()}. - - \snippet examples/uitools/textfinder/textfinder.cpp 3b - - Finally, the window title is set to \e {Text Finder} and \c isFirstTime is - set to true. - - \c isFirstTime is used as a flag to indicate whether the search operation - has been performed more than once. This is further explained with the - \c{on_findButton_clicked()} function. - - The \c{loadUiFile()} function is used to load the user interface file - previously created in QtDesigner. The QUiLoader class is instantiated - and its \c load() function is used to load the form into \c{formWidget} - that acts as a place holder for the user interface. The function then - returns \c{formWidget} to its caller. - - \snippet examples/uitools/textfinder/textfinder.cpp 4 - - As mentioned earlier, the loadTextFile() function loads \e{input.txt} - into QTextEdit to display its contents. Data is read using QTextStream - into a QString object, \c line with the QTextStream::readAll() function. - The contents of \c line are then appended to \c{ui_textEdit}. - - \snippet examples/uitools/textfinder/textfinder.cpp 5 - - The \c{on_findButton_clicked()} function is a slot that is connected to - \c{ui_findButton}'s \c clicked() signal. The \c searchString is extracted - from the \c ui_lineEdit and the \c document is extracted from \c textEdit. - In event there is an empty \c searchString, a QMessageBox is used, - requesting the user to enter a word. Otherwise, we traverse through the - words in \c ui_textEdit, and highlight all ocurrences of the - \c searchString . Two QTextCursor objects are used: One to traverse through - the words in \c line and another to keep track of the edit blocks. - - \snippet examples/uitools/textfinder/textfinder.cpp 7 - - The \c isFirstTime flag is set to false the moment \c findButton is - clicked. This is necessary to undo the previous text highlight before - highlighting the user's next search string. Also, the \c found flag - is used to indicate if the \c searchString was found within the contents - of \c ui_textEdit. If it was not found, a QMessageBox is used - to inform the user. - - \snippet examples/uitools/textfinder/textfinder.cpp 9 - - \section1 \c main() Function - - \snippet examples/uitools/textfinder/main.cpp 0 - - The \c main() function initialises the \e{textfinder.qrc} resource file - and instantiates as well as displays \c TextFinder. - - \sa {Calculator Builder Example}, {World Time Clock Builder Example} - */ diff --git a/doc/src/examples/treemodelcompleter.qdoc b/doc/src/examples/treemodelcompleter.qdoc deleted file mode 100644 index 027f60d65e..0000000000 --- a/doc/src/examples/treemodelcompleter.qdoc +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/treemodelcompleter - \title Tree Model Completer Example - - The Tree Model Completer example shows how to provide completion - facilities for a hierarchical model, using a period as the separator - to access Child, GrandChild and GrandGrandChild level objects. - - \image treemodelcompleter-example.png - - Similar to the \l{Completer Example}, we provide QComboBox objects to - enable selection for completion mode and case sensitivity, as well as - a QCheckBox for wrap completions. - - \section1 The Resource File - - The contents of the TreeModelCompleter is read from \e treemodel.txt. - This file is embedded within the \e treemodelcompleter.qrc resource file, - which contains the following: - - \quotefile examples/tools/treemodelcompleter/treemodelcompleter.qrc - - \section1 TreeModelCompleter Class Definition - - The \c TreeModelCompleter is a subclass of QCompleter with two - constructors - one with \a parent as an argument and another with - \a parent and \a model as arguments. - - \snippet examples/tools/treemodelcompleter/treemodelcompleter.h 0 - - The class reimplements the protected functions - \l{QCompleter::splitPath()}{splitPath()} and - \l{QCompleter::pathFromIndex()}{pathFromIndex()} to suit a tree model. - For more information on customizing QCompleter to suit tree models, refer - to \l{QCompleter#Handling Tree Models}{Handling Tree Models}. - - \c TreeModelCompleter also has a separator property which is declared - using the Q_PROPERTY() macro. The separator has READ and WRITE attributes - and the corresponding functions \c separator() and \c setSeparator(). For - more information on Q_PROPERTY(), refer to \l{Qt's Property System}. - - \section1 TreeModelCompleter Class Implementation - - The first constructor constructs a \c TreeModelCompleter object with a - parent while the second constructor constructs an object with a parent - and a QAbstractItemModel, \a model. - - \snippet examples/tools/treemodelcompleter/treemodelcompleter.cpp 0 - \codeline - \snippet examples/tools/treemodelcompleter/treemodelcompleter.cpp 1 - - The \c separator() function is a getter function that returns the - separator string. - - \snippet examples/tools/treemodelcompleter/treemodelcompleter.cpp 2 - - As mentioned earlier, the \c splitPath() function is reimplemented because - the default implementation is more suited to QDirModel or list models. In - order for QCompleter to split the path into a list of strings that are - matched at each level, we split it using QString::split() with \c sep as its - separator. - - \snippet examples/tools/treemodelcompleter/treemodelcompleter.cpp 3 - - The \c pathFromIndex() function returns data for the completionRole() for a - tree model. This function is reimplemented as its default implementation is - more suitable for list models. If there is no separator, we use - \l{QCompleter}'s default implementation, otherwise we use the - \l{QStringList::prepend()}{prepend()} function to navigate upwards and - accumulate the data. The function then returns a QStringList, \c dataList, - using a separator to join objects of different levels. - - \snippet examples/tools/treemodelcompleter/treemodelcompleter.cpp 4 - - \section1 MainWindow Class Definition - - The \c MainWindow class is a subclass of QMainWindow and implements five - custom slots: \c about(), \c changeCase(), \c changeMode(), - \c highlight(), and \c updateContentsLabel(). - - \snippet examples/tools/treemodelcompleter/mainwindow.h 0 - - In addition, the class has two private functions, \c createMenu() and - \c modelFromFile(), as well as private instances of QTreeView, QComboBox, - QLabel, \c TreeModelCompleter and QLineEdit. - - \snippet examples/tools/treemodelcompleter/mainwindow.h 1 - - \section1 MainWindow Class Implementation - - The \c{MainWindow}'s constructor creates a \c MainWindow object with a - parent and initializes the \c completer and \c lineEdit. The - \c createMenu() function is invoked to set up the "File" menu and "Help" - menu. The \c{completer}'s model is set to the QAbstractItemModel obtained - from \c modelFromFile(), and the \l{QCompleter::highlighted()} - {highlighted()} signal is connected to \c{MainWindow}'s \c highlight() - slot. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 0 - - The QLabel objects \c modelLabel, \c modeLabel and \c caseLabel are - instantiated. Also, the QComboBox objects, \c modeCombo and \c caseCombo, - are instantiated and populated. By default, the \c{completer}'s mode is - "Filtered Popup" and the case is insensitive. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 1 - \codeline - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 2 - - We use a QGridLayout to place all the objects in the \c MainWindow. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 3 - - The \c createMenu() function sets up the QAction objects required and - adds them to the "File" menu and "Help" menu. The - \l{QAction::triggered()}{triggered()} signals from these actions are - connected to their respective slots. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 4 - - The \c changeMode() function accepts an \a index corresponding to the - user's choice of completion mode and changes the \c{completer}'s mode - accordingly. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 5 - - The \c about() function provides a brief description on the Tree Model - Completer example. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 6 - - The \c changeCase() function alternates between \l{Qt::CaseSensitive} - {Case Sensitive} and \l{Qt::CaseInsensitive}{Case Insensitive} modes, - depending on the value of \a cs. - - \snippet examples/tools/treemodelcompleter/mainwindow.cpp 7 - - \section1 \c main() Function - - The \c main() function instantiates \c MainWindow and invokes the - \l{QWidget::show()}{show()} function to display it. - - \snippet examples/tools/treemodelcompleter/main.cpp 0 -*/ diff --git a/doc/src/examples/undo.qdoc b/doc/src/examples/undo.qdoc deleted file mode 100644 index 7afa011077..0000000000 --- a/doc/src/examples/undo.qdoc +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/undo - \title Undo Framework - - This example shows Qt's undo framework in action. - - \image undodemo.png - - Qt's undo framework is an implementation of the Command - pattern, which provides advanced undo/redo functionality. - - To show the abilities of the framework, we have implemented a - small diagram application in which the diagram items are geometric - primitives. You can edit the diagram in the following ways: add, - move, change the color of, and delete the items. -*/ diff --git a/doc/src/examples/undoframework.qdoc b/doc/src/examples/undoframework.qdoc deleted file mode 100644 index 0bc2efd025..0000000000 --- a/doc/src/examples/undoframework.qdoc +++ /dev/null @@ -1,291 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example tools/undoframework - \title Undo Framework Example - - This example shows how to implement undo/redo functionality - with the Qt undo framework. - - \image undoframeworkexample.png The Undo Diagram Example - - In the Qt undo framework, all actions that the user performs are - implemented in classes that inherit QUndoCommand. An undo command - class knows how to both \l{QUndoCommand::}{redo()} - or just do - the first time - and \l{QUndoCommand::}{undo()} an action. For - each action the user performs, a command is placed on a - QUndoStack. Since the stack contains all commands executed - (stacked in chronological order) on the document, it can roll the - state of the document backwards and forwards by undoing and redoing - its commands. See the \l{Overview of Qt's Undo Framework}{overview - document} for a high-level introduction to the undo framework. - - The undo example implements a simple diagram application. It is - possible to add and delete items, which are either box or - rectangular shaped, and move the items by dragging them with the - mouse. The undo stack is shown in a QUndoView, which is a list in - which the commands are shown as list items. Undo and redo are - available through the edit menu. The user can also select a command - from the undo view. - - We use the \l{Graphics View Framework}{graphics view - framework} to implement the diagram. We only treat the related - code briefly as the framework has examples of its own (e.g., the - \l{Diagram Scene Example}). - - The example consists of the following classes: - - \list - \li \c MainWindow is the main window and arranges the - example's widgets. It creates the commands based - on user input and keeps them on the command stack. - \li \c AddCommand adds an item to the scene. - \li \c DeleteCommand deletes an item from the scene. - \li \c MoveCommand when an item is moved the MoveCommand keeps record - of the start and stop positions of the move, and it - moves the item according to these when \c redo() and \c undo() - is called. - \li \c DiagramScene inherits QGraphicsScene and - emits signals for the \c MoveComands when an item is moved. - \li \c DiagramItem inherits QGraphicsPolygonItem and represents - an item in the diagram. - \endlist - - \section1 MainWindow Class Definition - - \snippet examples/tools/undoframework/mainwindow.h 0 - - The \c MainWindow class maintains the undo stack, i.e., it creates - \l{QUndoCommand}s and pushes and pops them from the stack when it - receives the \c triggered() signal from \c undoAction and \c - redoAction. - - \section1 MainWindow Class Implementation - - We will start with a look at the constructor: - - \snippet examples/tools/undoframework/mainwindow.cpp 0 - - In the constructor, we set up the DiagramScene and QGraphicsView. - - Here is the \c createUndoView() function: - - \snippet examples/tools/undoframework/mainwindow.cpp 1 - - The QUndoView is a widget that display the text, which is set with - the \l{QUndoCommand::}{setText()} function, for each QUndoCommand - in the undo stack in a list. - - Here is the \c createActions() function: - - \snippet examples/tools/undoframework/mainwindow.cpp 2 - \codeline - \snippet examples/tools/undoframework/mainwindow.cpp 3 - \dots - \snippet examples/tools/undoframework/mainwindow.cpp 5 - - The \c createActions() function sets up all the examples actions - in the manner shown above. The - \l{QUndoStack::}{createUndoAction()} and - \l{QUndoStack::}{createRedoAction()} helps us crate actions that - are disabled and enabled based on the state of the stack. Also, - the text of the action will be updated automatically based on the - \l{QUndoCommand::}{text()} of the undo commands. For the other - actions we have implemented slots in the \c MainWindow class. - - Here is the \c createMenus() function: - - \snippet examples/tools/undoframework/mainwindow.cpp 6 - - \dots - \snippet examples/tools/undoframework/mainwindow.cpp 7 - \dots - \snippet examples/tools/undoframework/mainwindow.cpp 8 - - We have to use the QMenu \c aboutToShow() and \c aboutToHide() - signals since we only want \c deleteAction to be enabled when we - have selected an item. - - Here is the \c itemMoved() slot: - - \snippet examples/tools/undoframework/mainwindow.cpp 9 - - We simply push a MoveCommand on the stack, which calls \c redo() - on it. - - Here is the \c deleteItem() slot: - - \snippet examples/tools/undoframework/mainwindow.cpp 10 - - An item must be selected to be deleted. We need to check if it is - selected as the \c deleteAction may be enabled even if an item is - not selected. This can happen as we do not catch a signal or event - when an item is selected. - - Here is the \c itemMenuAboutToShow() and itemMenuAboutToHide() slots: - - \snippet examples/tools/undoframework/mainwindow.cpp 11 - \codeline - \snippet examples/tools/undoframework/mainwindow.cpp 12 - - We implement \c itemMenuAboutToShow() and \c itemMenuAboutToHide() - to get a dynamic item menu. These slots are connected to the - \l{QMenu::}{aboutToShow()} and \l{QMenu::}{aboutToHide()} signals. - We need this to disable or enable the \c deleteAction. - - Here is the \c addBox() slot: - - \snippet examples/tools/undoframework/mainwindow.cpp 13 - - The \c addBox() function creates an AddCommand and pushes it on - the undo stack. - - Here is the \c addTriangle() sot: - - \snippet examples/tools/undoframework/mainwindow.cpp 14 - - The \c addTriangle() function creates an AddCommand and pushes it - on the undo stack. - - Here is the implementation of \c about(): - - \snippet examples/tools/undoframework/mainwindow.cpp 15 - - The about slot is triggered by the \c aboutAction and displays an - about box for the example. - - \section1 AddCommand Class Definition - - \snippet examples/tools/undoframework/commands.h 2 - - The \c AddCommand class adds DiagramItem graphics items to the - DiagramScene. - - \section1 AddCommand Class Implementation - - We start with the constructor: - - \snippet examples/tools/undoframework/commands.cpp 7 - - We first create the DiagramItem to add to the DiagramScene. The - \l{QUndoCommand::}{setText()} function let us set a QString that - describes the command. We use this to get custom messages in the - QUndoView and in the menu of the main window. - - \snippet examples/tools/undoframework/commands.cpp 8 - - \c undo() removes the item from the scene. - - \snippet examples/tools/undoframework/commands.cpp 9 - - We set the position of the item as we do not do this in the - constructor. - - \section1 DeleteCommand Class Definition - - \snippet examples/tools/undoframework/commands.h 1 - - The DeleteCommand class implements the functionality to remove an - item from the scene. - - \section1 DeleteCommand Class Implementation - - \snippet examples/tools/undoframework/commands.cpp 4 - - We know that there must be one selected item as it is not possible - to create a DeleteCommand unless the item to be deleted is - selected and that only one item can be selected at any time. - The item must be unselected if it is inserted back into the - scene. - - \snippet examples/tools/undoframework/commands.cpp 5 - - The item is simply reinserted into the scene. - - \snippet examples/tools/undoframework/commands.cpp 6 - - The item is removed from the scene. - - \section1 MoveCommand Class Definition - - \snippet examples/tools/undoframework/commands.h 0 - - The \l{QUndoCommand::}{mergeWith()} is reimplemented to make - consecutive moves of an item one MoveCommand, i.e, the item will - be moved back to the start position of the first move. - - \section1 MoveCommand Class Implementation - - - The constructor of MoveCommand looks like this: - - \snippet examples/tools/undoframework/commands.cpp 0 - - We save both the old and new positions for undo and redo - respectively. - - \snippet examples/tools/undoframework/commands.cpp 2 - - We simply set the items old position and update the scene. - - \snippet examples/tools/undoframework/commands.cpp 3 - - We set the item to its new position. - - \snippet examples/tools/undoframework/commands.cpp 1 - - Whenever a MoveCommand is created, this function is called to - check if it should be merged with the previous command. It is the - previous command object that is kept on the stack. The function - returns true if the command is merged; otherwise false. - - We first check whether it is the same item that has been moved - twice, in which case we merge the commands. We update the position - of the item so that it will take the last position in the move - sequence when undone. - - \section1 DiagramScene Class Definition - - \snippet examples/tools/undoframework/diagramscene.h 0 - - The DiagramScene implements the functionality to move a - DiagramItem with the mouse. It emits a signal when a move is - completed. This is caught by the \c MainWindow, which makes - MoveCommands. We do not examine the implementation of DiagramScene - as it only deals with graphics framework issues. - - \section1 The \c main() Function - - The \c main() function of the program looks like this: - - \snippet examples/tools/undoframework/main.cpp 0 - - We draw a grid in the background of the DiagramScene, so we use a - resource file. The rest of the function creates the \c MainWindow and - shows it as a top level window. -*/ diff --git a/doc/src/examples/widgets/mousebuttons.qdoc b/doc/src/examples/widgets/mousebuttons.qdoc deleted file mode 100644 index c495698a29..0000000000 --- a/doc/src/examples/widgets/mousebuttons.qdoc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Copyright (C) 2012 Rick Stockton -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example widgets/mousebuttons/buttontester - \title Mouse Button Tester - - \brief The 'Mouse Button Tester' example demonstrates how to reimplement - mouse events within a custom class. You can also use this program to - verify that Qt is actually receiving mouse events from your mouse. - - Many 'gamer' mouse devices are configured with high-numbered "buttons" - sending text shortcuts for certain games. With such a mouse, no mouse - button events occur: The "mouse" sends keystrokes, and the - 'Mouse Button Tester' Window will not see the event. Receiving no event, - it will not repaint the Window with new text describing a \button event. - - And so, in addition to it's use as Qt example code, the program may be - useful s a mouse device tester. Note that there is another example - muouse buttons example which provides the same function, written in QML. - - This program (the Widget-based example) consists of three classes, - in addition to the main() parent program: - - \list - \o \c A QPushButton, "Quit". - \o \c ButtonTester. This is derived from Qt's TextArea class, for - purpose of customizing/re-implementing the mouse and wheel event - member functions. - \o \c A simple QVBoxLayout layout. - \endlist - - First we will review the main program, with it's layout and "Quit" - QPushButton. Then we will take a look at the \c ButtonTester class. - - \section1 The Main Program - - Note that the QPushButton, "Quit", is defined directly within the main() - program, rather than another class. This is a correct way of defining a - "Quit" QPushButton: A "Quit" Button defined inside another - class would result in the destructor of that second class being - called twice. This "Quit" Button uses the traditional Signal/Slot - connection to invoke termination of the QApp, which will properly destroy - its child classes \before terminating itself. - - The remainder of the main() program is concerned with defining the layout, - and applying a minimum size to the customized ButtonTester. - - \section1 ButtonTester Class Definition - - The \c ButtonTester class inherits from QTextEdit, and listens for - mouse events on all possible Qt::MouseButton values. It also listens for - wheel events from the mouse, and indicates the direction of wheel motion - ("up", down", "left", or "right"). It prints short debug messages into - the Window, and also on the console QDebug() stream, when mouse button - and wheel events occur. Our reimplementation of mousePressEvent(), - mouseReleaseEvent(), mouseDoubleClickEvent(), and wheelEvent() "drive" - the program; the other functions simply convert the Qt::MouseButton - values into text strings. - - You should call the ignore() function on any mouse event (or other event) - which your widget-based classes do not use and consume. This function - assures that Qt will propagate the event through each parent widget, - until it is used or propagated to the Window Manager. (Qt attempts to do - this automatically, but it is better programming practice to explicitly - invoke the function.) - - \image widgets/mousebutton-buttontester.png -*/ diff --git a/doc/src/images/completer-example-country.png b/doc/src/images/completer-example-country.png deleted file mode 100644 index fa7c8a9938..0000000000 Binary files a/doc/src/images/completer-example-country.png and /dev/null differ diff --git a/doc/src/images/completer-example-word.png b/doc/src/images/completer-example-word.png deleted file mode 100644 index aa3fb9c333..0000000000 Binary files a/doc/src/images/completer-example-word.png and /dev/null differ diff --git a/doc/src/images/completer-example.png b/doc/src/images/completer-example.png deleted file mode 100644 index dcaa253bd8..0000000000 Binary files a/doc/src/images/completer-example.png and /dev/null differ diff --git a/doc/src/images/dropsite-example.png b/doc/src/images/dropsite-example.png deleted file mode 100644 index 42b988d733..0000000000 Binary files a/doc/src/images/dropsite-example.png and /dev/null differ diff --git a/doc/src/images/echopluginexample.png b/doc/src/images/echopluginexample.png deleted file mode 100644 index 7cb1e4d63b..0000000000 Binary files a/doc/src/images/echopluginexample.png and /dev/null differ diff --git a/doc/src/images/orientation-landscape-ui.png b/doc/src/images/orientation-landscape-ui.png deleted file mode 100644 index c591ff14d2..0000000000 Binary files a/doc/src/images/orientation-landscape-ui.png and /dev/null differ diff --git a/doc/src/images/orientation-landscape.png b/doc/src/images/orientation-landscape.png deleted file mode 100644 index e606804d21..0000000000 Binary files a/doc/src/images/orientation-landscape.png and /dev/null differ diff --git a/doc/src/images/orientation-portrait-ui.png b/doc/src/images/orientation-portrait-ui.png deleted file mode 100644 index 304835b93e..0000000000 Binary files a/doc/src/images/orientation-portrait-ui.png and /dev/null differ diff --git a/doc/src/images/orientation-portrait.png b/doc/src/images/orientation-portrait.png deleted file mode 100644 index 3d778e8d90..0000000000 Binary files a/doc/src/images/orientation-portrait.png and /dev/null differ diff --git a/doc/src/images/plugandpaint-plugindialog.png b/doc/src/images/plugandpaint-plugindialog.png deleted file mode 100644 index 4b601bd58b..0000000000 Binary files a/doc/src/images/plugandpaint-plugindialog.png and /dev/null differ diff --git a/doc/src/images/plugandpaint.png b/doc/src/images/plugandpaint.png deleted file mode 100644 index bd5d001f91..0000000000 Binary files a/doc/src/images/plugandpaint.png and /dev/null differ diff --git a/doc/src/images/regexp-example.png b/doc/src/images/regexp-example.png deleted file mode 100644 index 0f31a2f93f..0000000000 Binary files a/doc/src/images/regexp-example.png and /dev/null differ diff --git a/doc/src/images/settingseditor-example.png b/doc/src/images/settingseditor-example.png deleted file mode 100644 index 7a5be05fd0..0000000000 Binary files a/doc/src/images/settingseditor-example.png and /dev/null differ diff --git a/doc/src/images/stylepluginexample.png b/doc/src/images/stylepluginexample.png deleted file mode 100644 index 05d8c6b5cf..0000000000 Binary files a/doc/src/images/stylepluginexample.png and /dev/null differ diff --git a/doc/src/images/textfinder-example-userinterface.png b/doc/src/images/textfinder-example-userinterface.png deleted file mode 100644 index 2bebe2e9dd..0000000000 Binary files a/doc/src/images/textfinder-example-userinterface.png and /dev/null differ diff --git a/doc/src/images/treemodelcompleter-example.png b/doc/src/images/treemodelcompleter-example.png deleted file mode 100644 index 000405fe39..0000000000 Binary files a/doc/src/images/treemodelcompleter-example.png and /dev/null differ diff --git a/doc/src/images/undodemo.png b/doc/src/images/undodemo.png deleted file mode 100644 index 85c3622738..0000000000 Binary files a/doc/src/images/undodemo.png and /dev/null differ diff --git a/doc/src/images/undoframeworkexample.png b/doc/src/images/undoframeworkexample.png deleted file mode 100644 index 7e0a1df260..0000000000 Binary files a/doc/src/images/undoframeworkexample.png and /dev/null differ diff --git a/doc/src/images/widgets/mousebutton-buttontester.png b/doc/src/images/widgets/mousebutton-buttontester.png deleted file mode 100644 index 82fcb7617f..0000000000 Binary files a/doc/src/images/widgets/mousebutton-buttontester.png and /dev/null differ diff --git a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc b/doc/src/snippets/code/doc_src_examples_dropsite.qdoc deleted file mode 100644 index ee9e44e564..0000000000 --- a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [0] -foreach(variable, container) -//! [0] -- cgit v1.2.3