diff options
Diffstat (limited to 'doc/src')
240 files changed, 0 insertions, 17678 deletions
diff --git a/doc/src/corelib/containers.qdoc b/doc/src/corelib/containers.qdoc deleted file mode 100644 index b63cc9df28..0000000000 --- a/doc/src/corelib/containers.qdoc +++ /dev/null @@ -1,803 +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$ -** -****************************************************************************/ - -/*! - \group tools - \title Non-GUI Classes - \ingroup groups - - \brief Collection classes such as list, queue, stack and string, along - with other classes that can be used without needing QApplication. - - The non-GUI classes are general-purpose collection and string classes - that may be used independently of the GUI classes. - - In particular, these classes do not depend on QApplication at all, - and so can be used in non-GUI programs. - -*/ - -/*! - \page containers.html - \title Container Classes - \ingroup technology-apis - \ingroup groups - \ingroup qt-basic-concepts - \keyword container class - \keyword container classes - - \brief Qt's template-based container classes. - - \tableofcontents - - \section1 Introduction - - The Qt library provides a set of general purpose template-based - container classes. These classes can be used to store items of a - specified type. For example, if you need a resizable array of - \l{QString}s, use QVector<QString>. - - These container classes are designed to be lighter, safer, and - easier to use than the STL containers. If you are unfamiliar with - the STL, or prefer to do things the "Qt way", you can use these - classes instead of the STL classes. - - The container classes are \l{implicitly shared}, they are - \l{reentrant}, and they are optimized for speed, low memory - consumption, and minimal inline code expansion, resulting in - smaller executables. In addition, they are \l{thread-safe} - in situations where they are used as read-only containers - by all threads used to access them. - - For traversing the items stored in a container, you can use one - of two types of iterators: \l{Java-style iterators} and - \l{STL-style iterators}. The Java-style iterators are easier to - use and provide high-level functionality, whereas the STL-style - iterators are slightly more efficient and can be used together - with Qt's and STL's \l{generic algorithms}. - - Qt also offers a \l{foreach} keyword that make it very - easy to iterate over all the items stored in a container. - - \section1 The Container Classes - - Qt provides the following sequential containers: QList, - QLinkedList, QVector, QStack, and QQueue. For most - applications, QList is the best type to use. Although it is - implemented as an array-list, it provides very fast prepends and - appends. If you really need a linked-list, use QLinkedList; if you - want your items to occupy consecutive memory locations, use QVector. - QStack and QQueue are convenience classes that provide LIFO and - FIFO semantics. - - Qt also provides these associative containers: QMap, - QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers - conveniently support multiple values associated with a single - key. The "Hash" containers provide faster lookup by using a hash - function instead of a binary search on a sorted set. - - As special cases, the QCache and QContiguousCache classes provide - efficient hash-lookup of objects in a limited cache storage. - - \table - \header \li Class \li Summary - - \row \li \l{QList}<T> - \li This is by far the most commonly used container class. It - stores a list of values of a given type (T) that can be accessed - by index. Internally, the QList is implemented using an array, - ensuring that index-based access is very fast. - - Items can be added at either end of the list using - QList::append() and QList::prepend(), or they can be inserted in - the middle using QList::insert(). More than any other container - class, QList is highly optimized to expand to as little code as - possible in the executable. QStringList inherits from - QList<QString>. - - \row \li \l{QLinkedList}<T> - \li This is similar to QList, except that it uses - iterators rather than integer indexes to access items. It also - provides better performance than QList when inserting in the - middle of a huge list, and it has nicer iterator semantics. - (Iterators pointing to an item in a QLinkedList remain valid as - long as the item exists, whereas iterators to a QList can become - invalid after any insertion or removal.) - - \row \li \l{QVector}<T> - \li This stores an array of values of a given type at adjacent - positions in memory. Inserting at the front or in the middle of - a vector can be quite slow, because it can lead to large numbers - of items having to be moved by one position in memory. - - \row \li \l{QStack}<T> - \li This is a convenience subclass of QVector that provides - "last in, first out" (LIFO) semantics. It adds the following - functions to those already present in QVector: - \l{QStack::push()}{push()}, \l{QStack::pop()}{pop()}, - and \l{QStack::top()}{top()}. - - \row \li \l{QQueue}<T> - \li This is a convenience subclass of QList that provides - "first in, first out" (FIFO) semantics. It adds the following - functions to those already present in QList: - \l{QQueue::enqueue()}{enqueue()}, - \l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}. - - \row \li \l{QSet}<T> - \li This provides a single-valued mathematical set with fast - lookups. - - \row \li \l{QMap}<Key, T> - \li This provides a dictionary (associative array) that maps keys - of type Key to values of type T. Normally each key is associated - with a single value. QMap stores its data in Key order; if order - doesn't matter QHash is a faster alternative. - - \row \li \l{QMultiMap}<Key, T> - \li This is a convenience subclass of QMap that provides a nice - interface for multi-valued maps, i.e. maps where one key can be - associated with multiple values. - - \row \li \l{QHash}<Key, T> - \li This has almost the same API as QMap, but provides - significantly faster lookups. QHash stores its data in an - arbitrary order. - - \row \li \l{QMultiHash}<Key, T> - \li This is a convenience subclass of QHash that - provides a nice interface for multi-valued hashes. - - \endtable - - Containers can be nested. For example, it is perfectly possible - to use a QMap<QString, QList<int> >, where the key type is - QString and the value type QList<int>. The only pitfall is that - you must insert a space between the closing angle brackets (>); - otherwise the C++ compiler will misinterpret the two >'s as a - right-shift operator (>>) and report a syntax error. - - The containers are defined in individual header files with the - same name as the container (e.g., \c <QLinkedList>). For - convenience, the containers are forward declared in \c - <QtContainerFwd>. - - \keyword assignable data type - \keyword assignable data types - - The values stored in the various containers can be of any - \e{assignable data type}. To qualify, a type must provide a - default constructor, a copy constructor, and an assignment - operator. This covers most data types you are likely to want to - store in a container, including basic types such as \c int and \c - double, pointer types, and Qt data types such as QString, QDate, - and QTime, but it doesn't cover QObject or any QObject subclass - (QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a - QList<QWidget>, the compiler will complain that QWidget's copy - constructor and assignment operators are disabled. If you want to - store these kinds of objects in a container, store them as - pointers, for example as QList<QWidget *>. - - Here's an example custom data type that meets the requirement of - an assignable data type: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 0 - - If we don't provide a copy constructor or an assignment operator, - C++ provides a default implementation that performs a - member-by-member copy. In the example above, that would have been - sufficient. Also, if you don't provide any constructors, C++ - provides a default constructor that initializes its member using - default constructors. Although it doesn't provide any - explicit constructors or assignment operator, the following data - type can be stored in a container: - - \snippet doc/src/snippets/streaming/main.cpp 0 - - Some containers have additional requirements for the data types - they can store. For example, the Key type of a QMap<Key, T> must - provide \c operator<(). Such special requirements are documented - in a class's detailed description. In some cases, specific - functions have special requirements; these are described on a - per-function basis. The compiler will always emit an error if a - requirement isn't met. - - Qt's containers provide operator<<() and operator>>() so that they - can easily be read and written using a QDataStream. This means - that the data types stored in the container must also support - operator<<() and operator>>(). Providing such support is - straightforward; here's how we could do it for the Movie struct - above: - - \snippet doc/src/snippets/streaming/main.cpp 1 - \codeline - \snippet doc/src/snippets/streaming/main.cpp 2 - - \keyword default-constructed values - - The documentation of certain container class functions refer to - \e{default-constructed values}; for example, QVector - automatically initializes its items with default-constructed - values, and QMap::value() returns a default-constructed value if - the specified key isn't in the map. For most value types, this - simply means that a value is created using the default - constructor (e.g. an empty string for QString). But for primitive - types like \c{int} and \c{double}, as well as for pointer types, - the C++ language doesn't specify any initialization; in those - cases, Qt's containers automatically initialize the value to 0. - - \section1 The Iterator Classes - - Iterators provide a uniform means to access items in a container. - Qt's container classes provide two types of iterators: Java-style - iterators and STL-style iterators. Iterators of both types are - invalidated when the data in the container is modified or detached - from \l{Implicit Sharing}{implicitly shared copies} due to a call - to a non-const member function. - - \section2 Java-Style Iterators - - The Java-style iterators are new in Qt 4 and are the standard - ones used in Qt applications. They are more convenient to use than - the STL-style iterators, at the price of being slightly less - efficient. Their API is modelled on Java's iterator classes. - - For each container class, there are two Java-style iterator data - types: one that provides read-only access and one that provides - read-write access. - - \table - \header \li Containers \li Read-only iterator - \li Read-write iterator - \row \li QList<T>, QQueue<T> \li QListIterator<T> - \li QMutableListIterator<T> - \row \li QLinkedList<T> \li QLinkedListIterator<T> - \li QMutableLinkedListIterator<T> - \row \li QVector<T>, QStack<T> \li QVectorIterator<T> - \li QMutableVectorIterator<T> - \row \li QSet<T> \li QSetIterator<T> - \li QMutableSetIterator<T> - \row \li QMap<Key, T>, QMultiMap<Key, T> \li QMapIterator<Key, T> - \li QMutableMapIterator<Key, T> - \row \li QHash<Key, T>, QMultiHash<Key, T> \li QHashIterator<Key, T> - \li QMutableHashIterator<Key, T> - \endtable - - In this discussion, we will concentrate on QList and QMap. The - iterator types for QLinkedList, QVector, and QSet have exactly - the same interface as QList's iterators; similarly, the iterator - types for QHash have the same interface as QMap's iterators. - - Unlike STL-style iterators (covered \l{STL-style - iterators}{below}), Java-style iterators point \e between items - rather than directly \e at items. For this reason, they are - either pointing to the very beginning of the container (before - the first item), at the very end of the container (after the last - item), or between two items. The diagram below shows the valid - iterator positions as red arrows for a list containing four - items: - - \img javaiterators1.png - - Here's a typical loop for iterating through all the elements of a - QList<QString> in order and printing them to the console: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 1 - - It works as follows: The QList to iterate over is passed to the - QListIterator constructor. At that point, the iterator is located - just in front of the first item in the list (before item "A"). - Then we call \l{QListIterator::hasNext()}{hasNext()} to - check whether there is an item after the iterator. If there is, we - call \l{QListIterator::next()}{next()} to jump over that - item. The next() function returns the item that it jumps over. For - a QList<QString>, that item is of type QString. - - Here's how to iterate backward in a QList: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 2 - - The code is symmetric with iterating forward, except that we - start by calling \l{QListIterator::toBack()}{toBack()} - to move the iterator after the last item in the list. - - The diagram below illustrates the effect of calling - \l{QListIterator::next()}{next()} and - \l{QListIterator::previous()}{previous()} on an iterator: - - \img javaiterators2.png - - The following table summarizes the QListIterator API: - - \table - \header \li Function \li Behavior - \row \li \l{QListIterator::toFront()}{toFront()} - \li Moves the iterator to the front of the list (before the first item) - \row \li \l{QListIterator::toBack()}{toBack()} - \li Moves the iterator to the back of the list (after the last item) - \row \li \l{QListIterator::hasNext()}{hasNext()} - \li Returns true if the iterator isn't at the back of the list - \row \li \l{QListIterator::next()}{next()} - \li Returns the next item and advances the iterator by one position - \row \li \l{QListIterator::peekNext()}{peekNext()} - \li Returns the next item without moving the iterator - \row \li \l{QListIterator::hasPrevious()}{hasPrevious()} - \li Returns true if the iterator isn't at the front of the list - \row \li \l{QListIterator::previous()}{previous()} - \li Returns the previous item and moves the iterator back by one position - \row \li \l{QListIterator::peekPrevious()}{peekPrevious()} - \li Returns the previous item without moving the iterator - \endtable - - QListIterator provides no functions to insert or remove items - from the list as we iterate. To accomplish this, you must use - QMutableListIterator. Here's an example where we remove all - odd numbers from a QList<int> using QMutableListIterator: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 3 - - The next() call in the loop is made every time. It jumps over the - next item in the list. The - \l{QMutableListIterator::remove()}{remove()} function removes the - last item that we jumped over from the list. The call to - \l{QMutableListIterator::remove()}{remove()} does not invalidate - the iterator, so it is safe to continue using it. This works just - as well when iterating backward: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 4 - - If we just want to modify the value of an existing item, we can - use \l{QMutableListIterator::setValue()}{setValue()}. In the code - below, we replace any value larger than 128 with 128: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 5 - - Just like \l{QMutableListIterator::remove()}{remove()}, - \l{QMutableListIterator::setValue()}{setValue()} operates on the - last item that we jumped over. If we iterate forward, this is the - item just before the iterator; if we iterate backward, this is - the item just after the iterator. - - The \l{QMutableListIterator::next()}{next()} function returns a - non-const reference to the item in the list. For simple - operations, we don't even need - \l{QMutableListIterator::setValue()}{setValue()}: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 6 - - As mentioned above, QLinkedList's, QVector's, and QSet's iterator - classes have exactly the same API as QList's. We will now turn to - QMapIterator, which is somewhat different because it iterates on - (key, value) pairs. - - Like QListIterator, QMapIterator provides - \l{QMapIterator::toFront()}{toFront()}, - \l{QMapIterator::toBack()}{toBack()}, - \l{QMapIterator::hasNext()}{hasNext()}, - \l{QMapIterator::next()}{next()}, - \l{QMapIterator::peekNext()}{peekNext()}, - \l{QMapIterator::hasPrevious()}{hasPrevious()}, - \l{QMapIterator::previous()}{previous()}, and - \l{QMapIterator::peekPrevious()}{peekPrevious()}. The key and - value components are extracted by calling key() and value() on - the object returned by next(), peekNext(), previous(), or - peekPrevious(). - - The following example removes all (capital, country) pairs where - the capital's name ends with "City": - - \snippet doc/src/snippets/code/doc_src_containers.cpp 7 - - QMapIterator also provides a key() and a value() function that - operate directly on the iterator and that return the key and - value of the last item that the iterator jumped above. For - example, the following code copies the contents of a QMap into a - QHash: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 8 - - If we want to iterate through all the items with the same - value, we can use \l{QMapIterator::findNext()}{findNext()} - or \l{QMapIterator::findPrevious()}{findPrevious()}. - Here's an example where we remove all the items with a particular - value: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 9 - - \section2 STL-Style Iterators - - STL-style iterators have been available since the release of Qt - 2.0. They are compatible with Qt's and STL's \l{generic - algorithms} and are optimized for speed. - - For each container class, there are two STL-style iterator types: - one that provides read-only access and one that provides - read-write access. Read-only iterators should be used wherever - possible because they are faster than read-write iterators. - - \table - \header \li Containers \li Read-only iterator - \li Read-write iterator - \row \li QList<T>, QQueue<T> \li QList<T>::const_iterator - \li QList<T>::iterator - \row \li QLinkedList<T> \li QLinkedList<T>::const_iterator - \li QLinkedList<T>::iterator - \row \li QVector<T>, QStack<T> \li QVector<T>::const_iterator - \li QVector<T>::iterator - \row \li QSet<T> \li QSet<T>::const_iterator - \li QSet<T>::iterator - \row \li QMap<Key, T>, QMultiMap<Key, T> \li QMap<Key, T>::const_iterator - \li QMap<Key, T>::iterator - \row \li QHash<Key, T>, QMultiHash<Key, T> \li QHash<Key, T>::const_iterator - \li QHash<Key, T>::iterator - \endtable - - The API of the STL iterators is modelled on pointers in an array. - For example, the \c ++ operator advances the iterator to the next - item, and the \c * operator returns the item that the iterator - points to. In fact, for QVector and QStack, which store their - items at adjacent memory positions, the - \l{QVector::iterator}{iterator} type is just a typedef for \c{T *}, - and the \l{QVector::iterator}{const_iterator} type is - just a typedef for \c{const T *}. - - In this discussion, we will concentrate on QList and QMap. The - iterator types for QLinkedList, QVector, and QSet have exactly - the same interface as QList's iterators; similarly, the iterator - types for QHash have the same interface as QMap's iterators. - - Here's a typical loop for iterating through all the elements of a - QList<QString> in order and converting them to lowercase: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 10 - - Unlike \l{Java-style iterators}, STL-style iterators point - directly at items. The begin() function of a container returns an - iterator that points to the first item in the container. The - end() function of a container returns an iterator to the - imaginary item one position past the last item in the container. - end() marks an invalid position; it must never be dereferenced. - It is typically used in a loop's break condition. If the list is - empty, begin() equals end(), so we never execute the loop. - - The diagram below shows the valid iterator positions as red - arrows for a vector containing four items: - - \img stliterators1.png - - Iterating backward with an STL-style iterator requires us to - decrement the iterator \e before we access the item. This - requires a \c while loop: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 11 - - In the code snippets so far, we used the unary \c * operator to - retrieve the item (of type QString) stored at a certain iterator - position, and we then called QString::toLower() on it. Most C++ - compilers also allow us to write \c{i->toLower()}, but some - don't. - - For read-only access, you can use const_iterator, constBegin(), - and constEnd(). For example: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 12 - - The following table summarizes the STL-style iterators' API: - - \table - \header \li Expression \li Behavior - \row \li \c{*i} \li Returns the current item - \row \li \c{++i} \li Advances the iterator to the next item - \row \li \c{i += n} \li Advances the iterator by \c n items - \row \li \c{--i} \li Moves the iterator back by one item - \row \li \c{i -= n} \li Moves the iterator back by \c n items - \row \li \c{i - j} \li Returns the number of items between iterators \c i and \c j - \endtable - - The \c{++} and \c{--} operators are available both as prefix - (\c{++i}, \c{--i}) and postfix (\c{i++}, \c{i--}) operators. The - prefix versions modify the iterators and return a reference to - the modified iterator; the postfix versions take a copy of the - iterator before they modify it, and return that copy. In - expressions where the return value is ignored, we recommend that - you use the prefix operators (\c{++i}, \c{--i}), as these are - slightly faster. - - For non-const iterator types, the return value of the unary \c{*} - operator can be used on the left side of the assignment operator. - - For QMap and QHash, the \c{*} operator returns the value - component of an item. If you want to retrieve the key, call key() - on the iterator. For symmetry, the iterator types also provide a - value() function to retrieve the value. For example, here's how - we would print all items in a QMap to the console: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 13 - - Thanks to \l{implicit sharing}, it is very inexpensive for a - function to return a container per value. The Qt API contains - dozens of functions that return a QList or QStringList per value - (e.g., QSplitter::sizes()). If you want to iterate over these - using an STL iterator, you should always take a copy of the - container and iterate over the copy. For example: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 14 - - This problem doesn't occur with functions that return a const or - non-const reference to a container. - - \l{Implicit sharing} has another consequence on STL-style - iterators: You must not take a copy of a container while - non-const iterators are active on that container. Java-style - iterators don't suffer from that limitation. - - \keyword foreach - \section1 The foreach Keyword - - If you just want to iterate over all the items in a container - in order, you can use Qt's \c foreach keyword. The keyword is a - Qt-specific addition to the C++ language, and is implemented - using the preprocessor. - - Its syntax is: \c foreach (\e variable, \e container) \e - statement. For example, here's how to use \c foreach to iterate - over a QLinkedList<QString>: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 15 - - The \c foreach code is significantly shorter than the equivalent - code that uses iterators: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 16 - - Unless the data type contains a comma (e.g., \c{QPair<int, - int>}), the variable used for iteration can be defined within the - \c foreach statement: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 17 - - And like any other C++ loop construct, you can use braces around - the body of a \c foreach loop, and you can use \c break to leave - the loop: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 18 - - With QMap and QHash, \c foreach accesses the value component of - the (key, value) pairs. If you want to iterate over both the keys - and the values, you can use iterators (which are fastest), or you - can write code like this: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 19 - - For a multi-valued map: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 20 - - Qt automatically takes a copy of the container when it enters a - \c foreach loop. If you modify the container as you are - iterating, that won't affect the loop. (If you do not modify the - container, the copy still takes place, but thanks to \l{implicit - sharing} copying a container is very fast.) - - Since foreach creates a copy of the container, using a non-const - reference for the variable does not allow you to modify the original - container. It only affects the copy, which is probably not what you - want. - - In addition to \c foreach, Qt also provides a \c forever - pseudo-keyword for infinite loops: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 21 - - If you're worried about namespace pollution, you can disable - these macros by adding the following line to your \c .pro file: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 22 - - \section1 Other Container-Like Classes - - Qt includes three template classes that resemble containers in - some respects. These classes don't provide iterators and cannot - be used with the \c foreach keyword. - - \list - \li QVarLengthArray<T, Prealloc> provides a low-level - variable-length array. It can be used instead of QVector in - places where speed is particularly important. - - \li QCache<Key, T> provides a cache to store objects of a certain - type T associated with keys of type Key. - - \li QContiguousCache<T> provides an efficient way of caching data - that is typically accessed in a contiguous way. - - \li QPair<T1, T2> stores a pair of elements. - \endlist - - Additional non-template types that compete with Qt's template - containers are QBitArray, QByteArray, QString, and QStringList. - - \section1 Algorithmic Complexity - - Algorithmic complexity is concerned about how fast (or slow) each - function is as the number of items in the container grow. For - example, inserting an item in the middle of a QLinkedList is an - extremely fast operation, irrespective of the number of items - stored in the QLinkedList. On the other hand, inserting an item - in the middle of a QVector is potentially very expensive if the - QVector contains many items, since half of the items must be - moved one position in memory. - - To describe algorithmic complexity, we use the following - terminology, based on the "big Oh" notation: - - \keyword constant time - \keyword logarithmic time - \keyword linear time - \keyword linear-logarithmic time - \keyword quadratic time - - \list - \li \b{Constant time:} O(1). A function is said to run in constant - time if it requires the same amount of time no matter how many - items are present in the container. One example is - QLinkedList::insert(). - - \li \b{Logarithmic time:} O(log \e n). A function that runs in - logarithmic time is a function whose running time is - proportional to the logarithm of the number of items in the - container. One example is qBinaryFind(). - - \li \b{Linear time:} O(\e n). A function that runs in linear time - will execute in a time directly proportional to the number of - items stored in the container. One example is - QVector::insert(). - - \li \b{Linear-logarithmic time:} O(\e{n} log \e n). A function - that runs in linear-logarithmic time is asymptotically slower - than a linear-time function, but faster than a quadratic-time - function. - - \li \b{Quadratic time:} O(\e{n}\unicode{178}). A quadratic-time function - executes in a time that is proportional to the square of the - number of items stored in the container. - \endlist - - The following table summarizes the algorithmic complexity of Qt's - sequential container classes: - - \table - \header \li \li Index lookup \li Insertion \li Prepending \li Appending - \row \li QLinkedList<T> \li O(\e n) \li O(1) \li O(1) \li O(1) - \row \li QList<T> \li O(1) \li O(n) \li Amort. O(1) \li Amort. O(1) - \row \li QVector<T> \li O(1) \li O(n) \li O(n) \li Amort. O(1) - \endtable - - In the table, "Amort." stands for "amortized behavior". For - example, "Amort. O(1)" means that if you call the function - only once, you might get O(\e n) behavior, but if you call it - multiple times (e.g., \e n times), the average behavior will be - O(1). - - The following table summarizes the algorithmic complexity of Qt's - associative containers and sets: - - \table - \header \li{1,2} \li{2,1} Key lookup \li{2,1} Insertion - \header \li Average \li Worst case \li Average \li Worst case - \row \li QMap<Key, T> \li O(log \e n) \li O(log \e n) \li O(log \e n) \li O(log \e n) - \row \li QMultiMap<Key, T> \li O(log \e n) \li O(log \e n) \li O(log \e n) \li O(log \e n) - \row \li QHash<Key, T> \li Amort. O(1) \li O(\e n) \li Amort. O(1) \li O(\e n) - \row \li QSet<Key> \li Amort. O(1) \li O(\e n) \li Amort. O(1) \li O(\e n) - \endtable - - With QVector, QHash, and QSet, the performance of appending items - is amortized O(log \e n). It can be brought down to O(1) by - calling QVector::reserve(), QHash::reserve(), or QSet::reserve() - with the expected number of items before you insert the items. - The next section discusses this topic in more depth. - - \section1 Growth Strategies - - QVector<T>, QString, and QByteArray store their items - contiguously in memory; QList<T> maintains an array of pointers - to the items it stores to provide fast index-based access (unless - T is a pointer type or a basic type of the size of a pointer, in - which case the value itself is stored in the array); QHash<Key, - T> keeps a hash table whose size is proportional to the number - of items in the hash. To avoid reallocating the data every single - time an item is added at the end of the container, these classes - typically allocate more memory than necessary. - - Consider the following code, which builds a QString from another - QString: - - \snippet doc/src/snippets/code/doc_src_containers.cpp 23 - - We build the string \c out dynamically by appending one character - to it at a time. Let's assume that we append 15000 characters to - the QString string. Then the following 18 reallocations (out of a - possible 15000) occur when QString runs out of space: 4, 8, 12, - 16, 20, 52, 116, 244, 500, 1012, 2036, 4084, 6132, 8180, 10228, - 12276, 14324, 16372. At the end, the QString has 16372 Unicode - characters allocated, 15000 of which are occupied. - - The values above may seem a bit strange, but here are the guiding - principles: - \list - \li QString allocates 4 characters at a time until it reaches size 20. - \li From 20 to 4084, it advances by doubling the size each time. - More precisely, it advances to the next power of two, minus - 12. (Some memory allocators perform worst when requested exact - powers of two, because they use a few bytes per block for - book-keeping.) - \li From 4084 on, it advances by blocks of 2048 characters (4096 - bytes). This makes sense because modern operating systems - don't copy the entire data when reallocating a buffer; the - physical memory pages are simply reordered, and only the data - on the first and last pages actually needs to be copied. - \endlist - - QByteArray and QList<T> use more or less the same algorithm as - QString. - - QVector<T> also uses that algorithm for data types that can be - moved around in memory using memcpy() (including the basic C++ - types, the pointer types, and Qt's \l{shared classes}) but uses a - different algorithm for data types that can only be moved by - calling the copy constructor and a destructor. Since the cost of - reallocating is higher in that case, QVector<T> reduces the - number of reallocations by always doubling the memory when - running out of space. - - QHash<Key, T> is a totally different case. QHash's internal hash - table grows by powers of two, and each time it grows, the items - are relocated in a new bucket, computed as qHash(\e key) % - QHash::capacity() (the number of buckets). This remark applies to - QSet<T> and QCache<Key, T> as well. - - For most applications, the default growing algorithm provided by - Qt does the trick. If you need more control, QVector<T>, - QHash<Key, T>, QSet<T>, QString, and QByteArray provide a trio of - functions that allow you to check and specify how much memory to - use to store the items: - - \list - \li \l{QString::capacity()}{capacity()} returns the - number of items for which memory is allocated (for QHash and - QSet, the number of buckets in the hash table). - \li \l{QString::reserve()}{reserve}(\e size) explicitly - preallocates memory for \e size items. - \li \l{QString::squeeze()}{squeeze()} frees any memory - not required to store the items. - \endlist - - If you know approximately how many items you will store in a - container, you can start by calling reserve(), and when you are - done populating the container, you can call squeeze() to release - the extra preallocated memory. -*/ diff --git a/doc/src/corelib/implicit-sharing.qdoc b/doc/src/corelib/implicit-sharing.qdoc deleted file mode 100644 index e652e21253..0000000000 --- a/doc/src/corelib/implicit-sharing.qdoc +++ /dev/null @@ -1,138 +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$ -** -****************************************************************************/ - -/* TODO: Move some of the documentation from QSharedDataPointer into this - document. */ - -/*! - \group shared - \title Implicitly Shared Classes -*/ - -/*! - \page implicit-sharing.html - \title Implicit Sharing - \ingroup qt-basic-concepts - - \brief Reference counting for fast copying. - - \keyword implicit data sharing - \keyword implicit sharing - \keyword implicitly shared - \keyword reference counting - \keyword shared implicitly - \keyword shared classes - - Many C++ classes in Qt use implicit data sharing to maximize - resource usage and minimize copying. Implicitly shared classes are - both safe and efficient when passed as arguments, because only a - pointer to the data is passed around, and the data is copied only - if and when a function writes to it, i.e., \e {copy-on-write}. - - \tableofcontents - - \section1 Overview - - A shared class consists of a pointer to a shared data block that - contains a reference count and the data. - - When a shared object is created, it sets the reference count to 1. The - reference count is incremented whenever a new object references the - shared data, and decremented when the object dereferences the shared - data. The shared data is deleted when the reference count becomes - zero. - - \keyword deep copy - \keyword shallow copy - - When dealing with shared objects, there are two ways of copying an - object. We usually speak about \e deep and \e shallow copies. A deep - copy implies duplicating an object. A shallow copy is a reference - copy, i.e. just a pointer to a shared data block. Making a deep copy - can be expensive in terms of memory and CPU. Making a shallow copy is - very fast, because it only involves setting a pointer and incrementing - the reference count. - - Object assignment (with operator=()) for implicitly shared objects is - implemented using shallow copies. - - The benefit of sharing is that a program does not need to duplicate - data unnecessarily, which results in lower memory use and less copying - of data. Objects can easily be assigned, sent as function arguments, - and returned from functions. - - Implicit sharing takes place behind the scenes; the programmer - does not need to worry about it. Even in multithreaded - applications, implicit sharing takes place, as explained in - \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes} - {Threads and Implicitly Shared Classes}. - - When implementing your own implicitly shared classes, use the - QSharedData and QSharedDataPointer classes. - - \section1 Implicit Sharing in Detail - - Implicit sharing automatically detaches the object from a shared - block if the object is about to change and the reference count is - greater than one. (This is often called \e {copy-on-write} or - \e {value semantics}.) - - An implicitly shared class has total control of its internal data. In - any member functions that modify its data, it automatically detaches - before modifying the data. - - The QPen class, which uses implicit sharing, detaches from the shared - data in all member functions that change the internal data. - - Code fragment: - \snippet doc/src/snippets/code/doc_src_groups.cpp 0 - - - \section1 List of Classes - - The classes listed below automatically detach from common data if - an object is about to be changed. The programmer will not even - notice that the objects are shared. Thus you should treat - separate instances of them as separate objects. They will always - behave as separate objects but with the added benefit of sharing - data whenever possible. For this reason, you can pass instances - of these classes as arguments to functions by value without - concern for the copying overhead. - - Example: - \snippet doc/src/snippets/code/doc_src_groups.cpp 1 - - In this example, \c p1 and \c p2 share data until QPainter::begin() - is called for \c p2, because painting a pixmap will modify it. - - \warning Do not copy an implicitly shared container (QMap, - QVector, etc.) while you are iterating over it using an non-const - \l{STL-style iterator}. - - \keyword implicitly shared classes - \annotatedlist shared -*/ diff --git a/doc/src/corelib/json.qdoc b/doc/src/corelib/json.qdoc deleted file mode 100644 index 88b5377074..0000000000 --- a/doc/src/corelib/json.qdoc +++ /dev/null @@ -1,118 +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$ -** -****************************************************************************/ - -/*! - \group json - \title JSON Classes -*/ - -/*! - \page json.html - \title JSON Support in Qt - \ingroup qt-basic-concepts - \brief An overview over the JSON support in Qt. - - \ingroup frameworks-technologies - - \keyword JSON - - Qt provides support for dealing with JSON data. JSON is a - format to encode object data derived from Javascript, but - now widely used as a data exchange format on the internet. - - The JSON support in Qt provides an easy to use C++ API to parse, - modify and save JSON data. It also contains support for saving this - data in a binary format that is directly mmap'able and very fast to - access. - - More details about the JSON data format can be found at \link json.org - and in \l{http://tools.ietf.org/html/rfc4627}{RFC-4627}. - - \tableofcontents - - \section1 Overview - - JSON is a format to store structured data. It has 6 basic data types: - - \list - \li bool - \li double - \li string - \li array - \li object - \li null - \endlist - - Any value can be any of the above type. A boolean value is represented by the - strings true or false in JSON. JSON doesn't explicitly specify the valid range - for numbers, but the support in Qt is limited to the valid range and precision of - doubles. A string can be any valid unicode string. An array is a list of values, and an - object is a dictionary of key/value pairs. All keys in an object are strings, and - an object cannot contain any duplicated keys. - - The text representation, of JSON encloses arrays in square brackets ([ ... ]) and - objects in curly brackets ({ ... }). The different entries in arrays and objects - are separated by commas. The separator between keys and values in an object is a - colon (:). - - A simple JSON document encoding a person, its age, address and phone numbers could - look like: - - \code - { - "FirstName": "John", - "LastName": "Doe", - "Age": 43, - "Address": { - "Street": "Downing Street 10", - "City": "London", - "Country": "Great Britain" - }, - "Phone numbers": [ - "+44 1234567", - "+44 2345678" - ] - } - \endcode - - The above example consists of an object with 5 key/value pairs. Two of the values are strings, - one is a number, one is another object and the last one an array. - - A valid JSON document is either an array or an object, so a document always starts - with a square or curly bracket. - - The JSON support in Qt consists of a set of 4 classes. - - - \section1 The JSON Classes - - The JSON support in Qt consists of these classes: - - \annotatedlist json - - All JSON classes are value based, implicitly shared classes. -*/ diff --git a/doc/src/corelib/objectmodel/metaobjects.qdoc b/doc/src/corelib/objectmodel/metaobjects.qdoc deleted file mode 100644 index c92f6f2f09..0000000000 --- a/doc/src/corelib/objectmodel/metaobjects.qdoc +++ /dev/null @@ -1,137 +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$ -** -****************************************************************************/ - -/*! - \page metaobjects.html - \title The Meta-Object System - \brief An overview of Qt's meta-object system and introspection capabilities. - - \ingroup qt-basic-concepts - \keyword meta-object - \target Meta-Object System - - Qt's meta-object system provides the signals and slots mechanism for - inter-object communication, run-time type information, and the dynamic - property system. - - The meta-object system is based on three things: - - \list 1 - \li The \l QObject class provides a base class for objects that can - take advantage of the meta-object system. - \li The Q_OBJECT macro inside the private section of the class - declaration is used to enable meta-object features, such as - dynamic properties, signals, and slots. - \li The \l{moc}{Meta-Object Compiler} (\c moc) supplies each - QObject subclass with the necessary code to implement - meta-object features. - \endlist - - The \c moc tool reads a C++ source file. If it finds one or more - class declarations that contain the Q_OBJECT macro, it - produces another C++ source file which contains the meta-object - code for each of those classes. This generated source file is - either \c{#include}'d into the class's source file or, more - usually, compiled and linked with the class's implementation. - - In addition to providing the \l{signals and slots} mechanism for - communication between objects (the main reason for introducing - the system), the meta-object code provides the following - additional features: - - \list - \li QObject::metaObject() returns the associated - \l{QMetaObject}{meta-object} for the class. - \li QMetaObject::className() returns the class name as a - string at run-time, without requiring native run-time type information - (RTTI) support through the C++ compiler. - \li QObject::inherits() function returns whether an object is an - instance of a class that inherits a specified class within the - QObject inheritance tree. - \li QObject::tr() and QObject::trUtf8() translate strings for - \l{Internationalization with Qt}{internationalization}. - \li QObject::setProperty() and QObject::property() - dynamically set and get properties by name. - \li QMetaObject::newInstance() constructs a new instance of the class. - \endlist - - \target qobjectcast - It is also possible to perform dynamic casts using qobject_cast() - on QObject classes. The qobject_cast() function behaves similarly - to the standard C++ \c dynamic_cast(), with the advantages - that it doesn't require RTTI support and it works across dynamic - library boundaries. It attempts to cast its argument to the pointer - type specified in angle-brackets, returning a non-zero pointer if the - object is of the correct type (determined at run-time), or 0 - if the object's type is incompatible. - - For example, let's assume \c MyWidget inherits from QWidget and - is declared with the Q_OBJECT macro: - - \snippet doc/src/snippets/qtcast/qtcast.cpp 0 - - The \c obj variable, of type \c{QObject *}, actually refers to a - \c MyWidget object, so we can cast it appropriately: - - \snippet doc/src/snippets/qtcast/qtcast.cpp 1 - - The cast from QObject to QWidget is successful, because the - object is actually a \c MyWidget, which is a subclass of QWidget. - Since we know that \c obj is a \c MyWidget, we can also cast it to - \c{MyWidget *}: - - \snippet doc/src/snippets/qtcast/qtcast.cpp 2 - - The cast to \c MyWidget is successful because qobject_cast() - makes no distinction between built-in Qt types and custom types. - - \snippet doc/src/snippets/qtcast/qtcast.cpp 3 - \snippet doc/src/snippets/qtcast/qtcast.cpp 4 - - The cast to QLabel, on the other hand, fails. The pointer is then - set to 0. This makes it possible to handle objects of different - types differently at run-time, based on the type: - - \snippet doc/src/snippets/qtcast/qtcast.cpp 5 - \snippet doc/src/snippets/qtcast/qtcast.cpp 6 - - While it is possible to use QObject as a base class without the - Q_OBJECT macro and without meta-object code, neither signals - and slots nor the other features described here will be available - if the Q_OBJECT macro is not used. From the meta-object - system's point of view, a QObject subclass without meta code is - equivalent to its closest ancestor with meta-object code. This - means for example, that QMetaObject::className() will not return - the actual name of your class, but the class name of this - ancestor. - - Therefore, we strongly recommend that all subclasses of QObject - use the Q_OBJECT macro regardless of whether or not they - actually use signals, slots, and properties. - - \sa QMetaObject, {Qt's Property System}, {Signals and Slots} -*/ diff --git a/doc/src/corelib/objectmodel/object.qdoc b/doc/src/corelib/objectmodel/object.qdoc deleted file mode 100644 index 4e212b37dd..0000000000 --- a/doc/src/corelib/objectmodel/object.qdoc +++ /dev/null @@ -1,124 +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$ -** -****************************************************************************/ - -/*! - \page object.html - \title Object Model - \ingroup qt-basic-concepts - \brief A description of the powerful features made possible by Qt's dynamic object model. - - The standard C++ object model provides very efficient runtime - support for the object paradigm. But its static nature is - inflexibile in certain problem domains. Graphical user interface - programming is a domain that requires both runtime efficiency and - a high level of flexibility. Qt provides this, by combining the - speed of C++ with the flexibility of the Qt Object Model. - - Qt adds these features to C++: - - \list - \li a very powerful mechanism for seamless object - communication called \l{signals and slots} - \li queryable and designable \l{Qt's Property System}{object - properties} - \li powerful \l{The Event System}{events and event filters} - \li contextual \l{i18n}{string translation for internationalization} - \li sophisticated interval driven \l timers that make it possible - to elegantly integrate many tasks in an event-driven GUI - \li hierarchical and queryable \l{Object Trees & Ownership}{object - trees} that organize object ownership in a natural way - \li guarded pointers (QPointer) that are automatically - set to 0 when the referenced object is destroyed, unlike normal C++ - pointers which become dangling pointers when their objects are destroyed - \li a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across - library boundaries. - \endlist - - Many of these Qt features are implemented with standard C++ - techniques, based on inheritance from QObject. Others, like the - object communication mechanism and the dynamic property system, - require the \l{Meta-Object System} provided - by Qt's own \l{moc}{Meta-Object Compiler (moc)}. - - The meta-object system is a C++ extension that makes the language - better suited to true component GUI programming. Although - templates can be used to extend C++, the meta-object system - provides benefits using standard C++ that cannot be achieved with - templates; see \l{Why Doesn't Qt Use Templates for Signals and - Slots?} - - \section1 Important Classes - - These classes form the basis of the Qt Object Model. - - \annotatedlist objectmodel - - \target Identity vs Value - \section1 Qt Objects: Identity vs Value - - Some of the added features listed above for the Qt Object Model, - require that we think of Qt Objects as identities, not values. - Values are copied or assigned; identities are cloned. Cloning - means to create a new identity, not an exact copy of the old - one. For example, twins have different identities. They may look - identical, but they have different names, different locations, and - may have completely different social networks. - - Then cloning an identity is a more complex operation than copying - or assigning a value. We can see what this means in the Qt Object - Model. - - \b{A Qt Object...} - - \list - - \li might have a unique \l{QObject::objectName()}. If we copy a Qt - Object, what name should we give the copy? - - \li has a location in an \l{Object Trees & Ownership} - {object hierarchy}. If we copy a Qt Object, where should the copy - be located? - - \li can be connected to other Qt Objects to emit signals to them or - to receive signals emitted by them. If we copy a Qt Object, how - should we transfer these connections to the copy? - - \li can have \l{Qt's Property System} {new properties} added to it - at runtime that are not declared in the C++ class. If we copy a Qt - Object, should the copy include the properties that were added to - the original? - - \endlist - - For these reasons, Qt Objects should be treated as identities, not - as values. Identities are cloned, not copied or assigned, and - cloning an identity is a more complex operation than copying or - assigning a value. Therefore, QObject and all subclasses of - QObject (direct or indirect) have their \l{No copy constructor} - {copy constructor and assignment operator} disabled. - - */ diff --git a/doc/src/corelib/objectmodel/objecttrees.qdoc b/doc/src/corelib/objectmodel/objecttrees.qdoc deleted file mode 100644 index 3e51eeba83..0000000000 --- a/doc/src/corelib/objectmodel/objecttrees.qdoc +++ /dev/null @@ -1,102 +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$ -** -****************************************************************************/ - -/*! - \page objecttrees.html - \title Object Trees & Ownership - \ingroup qt-basic-concepts - \brief Information about the parent-child pattern used to describe - object ownership in Qt. - - \section1 Overview - - \link QObject QObjects\endlink organize themselves in object trees. - When you create a QObject with another object as parent, it's added to - the parent's \link QObject::children() children() \endlink list, and - is deleted when the parent is. It turns out that this approach fits - the needs of GUI objects very well. For example, a \l QShortcut - (keyboard shortcut) is a child of the relevant window, so when the - user closes that window, the shorcut is deleted too. - - \l QWidget, the base class of everything that appears on the screen, - extends the parent-child relationship. A child normally also becomes a - child widget, i.e. it is displayed in its parent's coordinate system - and is graphically clipped by its parent's boundaries. For example, - when the application deletes a message box after it has been - closed, the message box's buttons and label are also deleted, just as - we'd want, because the buttons and label are children of the message - box. - - You can also delete child objects yourself, and they will remove - themselves from their parents. For example, when the user removes a - toolbar it may lead to the application deleting one of its \l QToolBar - objects, in which case the tool bar's \l QMainWindow parent would - detect the change and reconfigure its screen space accordingly. - - The debugging functions \l QObject::dumpObjectTree() and \l - QObject::dumpObjectInfo() are often useful when an application looks or - acts strangely. - - \target note on the order of construction/destruction of QObjects - \section1 Construction/Destruction Order of QObjects - - When \l {QObject} {QObjects} are created on the heap (i.e., created - with \e new), a tree can be constructed from them in any order, and - later, the objects in the tree can be destroyed in any order. When any - QObject in the tree is deleted, if the object has a parent, the - destructor automatically removes the object from its parent. If the - object has children, the destructor automatically deletes each - child. No QObject is deleted twice, regardless of the order of - destruction. - - When \l {QObject} {QObjects} are created on the stack, the same - behavior applies. Normally, the order of destruction still doesn't - present a problem. Consider the following snippet: - - \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 0 - - The parent, \c window, and the child, \c quit, are both \l {QObject} - {QObjects} because QPushButton inherits QWidget, and QWidget inherits - QObject. This code is correct: the destructor of \c quit is \e not - called twice because the C++ language standard \e {(ISO/IEC 14882:2003)} - specifies that destructors of local objects are called in the reverse - order of their constructors. Therefore, the destructor of - the child, \c quit, is called first, and it removes itself from its - parent, \c window, before the destructor of \c window is called. - - But now consider what happens if we swap the order of construction, as - shown in this second snippet: - - \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 1 - - In this case, the order of destruction causes a problem. The parent's - destructor is called first because it was created last. It then calls - the destructor of its child, \c quit, which is incorrect because \c - quit is a local variable. When \c quit subsequently goes out of scope, - its destructor is called again, this time correctly, but the damage has - already been done. -*/ diff --git a/doc/src/corelib/objectmodel/properties.qdoc b/doc/src/corelib/objectmodel/properties.qdoc deleted file mode 100644 index 4d090af8fc..0000000000 --- a/doc/src/corelib/objectmodel/properties.qdoc +++ /dev/null @@ -1,273 +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$ -** -****************************************************************************/ - -/*! - \page properties.html - \title The Property System - \brief An overview of Qt's property system. - - \ingroup qt-basic-concepts - \target Qt's Property System - - Qt provides a sophisticated property system similar to the ones - supplied by some compiler vendors. However, as a compiler- and - platform-independent library, Qt does not rely on non-standard - compiler features like \c __property or \c [property]. The Qt - solution works with \e any standard C++ compiler on every platform - Qt supports. It is based on the \l {Meta-Object System} that also - provides inter-object communication via \l{signals and slots}. - - \section1 Requirements for Declaring Properties - - To declare a property, use the \l {Q_PROPERTY()} {Q_PROPERTY()} - macro in a class that inherits QObject. - - \snippet doc/src/snippets/code/doc_src_properties.cpp 0 - - Here are some typical examples of property declarations taken from - class QWidget. - - \snippet doc/src/snippets/code/doc_src_properties.cpp 1 - - A property behaves like a class data member, but it has additional - features accessible through the \l {Meta-Object System}. - - \list - - \li A \c READ accessor function is required. It is for reading the - property value. Ideally, a const function is used for this purpose, - and it must return either the property's type or a pointer or - reference to that type. e.g., QWidget::focus is a read-only property - with \c READ function, QWidget::hasFocus(). - - \li A \c WRITE accessor function is optional. It is for setting the - property value. It must return void and must take exactly one - argument, either of the property's type or a pointer or reference - to that type. e.g., QWidget::enabled has the \c WRITE function - QWidget::setEnabled(). Read-only properties do not need \c WRITE - functions. e.g., QWidget::focus has no \c WRITE function. - - \li A \c RESET function is optional. It is for setting the property - back to its context specific default value. e.g., QWidget::cursor - has the typical \c READ and \c WRITE functions, QWidget::cursor() - and QWidget::setCursor(), and it also has a \c RESET function, - QWidget::unsetCursor(), since no call to QWidget::setCursor() can - mean \e {reset to the context specific cursor}. The \c RESET - function must return void and take no parameters. - - \li A \c NOTIFY signal is optional. If defined, it should specify one - existing signal in that class that is emitted whenever the value - of the property changes. - - \li A \c REVISION number is optional. If included, it defines the - the property and its notifier signal to be used in a particular - revision of the API that is exposed to QML. - - \li The \c DESIGNABLE attribute indicates whether the property - should be visible in the property editor of GUI design tool (e.g., - \l {Qt Designer}). Most properties are \c DESIGNABLE (default - true). Instead of true or false, you can specify a boolean - member function. - - \li The \c SCRIPTABLE attribute indicates whether this property - should be accessible by a scripting engine (default true). - Instead of true or false, you can specify a boolean member - function. - - \li The \c STORED attribute indicates whether the property should - be thought of as existing on its own or as depending on other - values. It also indicates whether the property value must be saved - when storing the object's state. Most properties are \c STORED - (default true), but e.g., QWidget::minimumWidth() has \c STORED - false, because its value is just taken from the width component - of property QWidget::minimumSize(), which is a QSize. - - \li The \c USER attribute indicates whether the property is - designated as the user-facing or user-editable property for the - class. Normally, there is only one \c USER property per class - (default false). e.g., QAbstractButton::checked is the user - editable property for (checkable) buttons. Note that QItemDelegate - gets and sets a widget's \c USER property. - - \li The presence of the \c CONSTANT attibute indicates that the property - value is constant. For a given object instance, the READ method of a - constant property must return the same value every time it is called. This - constant value may be different for different instances of the object. A - constant property cannot have a WRITE method or a NOTIFY signal. - - \li The presence of the \c FINAL attribute indicates that the property - will not be overridden by a derived class. This can be used for performance - optimizations in some cases, but is not enforced by moc. Care must be taken - never to override a \c FINAL property. - - \endlist - - The \c READ, \c WRITE, and \c RESET functions can be inherited. - They can also be virtual. When they are inherited in classes where - multiple inheritance is used, they must come from the first - inherited class. - - The property type can be any type supported by QVariant, or it can - be a user-defined type. In this example, class QDate is considered - to be a user-defined type. - - \snippet doc/src/snippets/code/doc_src_properties.cpp 2 - - Because QDate is user-defined, you must include the \c{<QDate>} - header file with the property declaration. - - For QMap, QList, and QValueList properties, the property value is - a QVariant whose value is the entire list or map. Note that the - Q_PROPERTY string cannot contain commas, because commas separate - macro arguments. Therefore, you must use \c QMap as the property - type instead of \c QMap<QString,QVariant>. For consistency, also - use \c QList and \c QValueList instead of \c QList<QVariant> and - \c QValueList<QVariant>. - - \section1 Reading and Writing Properties with the Meta-Object System - - A property can be read and written using the generic functions - QObject::property() and QObject::setProperty(), without knowing - anything about the owning class except the property's name. In - the code snippet below, the call to QAbstractButton::setDown() and - the call to QObject::setProperty() both set property "down". - - \snippet doc/src/snippets/code/doc_src_properties.cpp 3 - - Accessing a property through its \c WRITE accessor is the better - of the two, because it is faster and gives better diagnostics at - compile time, but setting the property this way requires that you - know about the class at compile time. Accessing properties by name - lets you access classes you don't know about at compile time. You - can \e discover a class's properties at run time by querying its - QObject, QMetaObject, and \l {QMetaProperty} {QMetaProperties}. - - \snippet doc/src/snippets/code/doc_src_properties.cpp 4 - - In the above snippet, QMetaObject::property() is used to get \l - {QMetaProperty} {metadata} about each property defined in some - unknown class. The property name is fetched from the metadata and - passed to QObject::property() to get the \l {QVariant} {value} of - the property in the current \l {QObject}{object}. - - \section1 A Simple Example - - Suppose we have a class MyClass, which is derived from QObject and - which uses the Q_OBJECT macro in its private section. We want to - declare a property in MyClass to keep track of a priorty - value. The name of the property will be \e priority, and its type - will be an enumeration type named \e Priority, which is defined in - MyClass. - - We declare the property with the Q_PROPERTY() macro in the private - section of the class. The required \c READ function is named \c - priority, and we include a \c WRITE function named \c setPriority. - The enumeration type must be registered with the \l {Meta-Object - System} using the Q_ENUMS() macro. Registering an enumeration type - makes the enumerator names available for use in calls to - QObject::setProperty(). We must also provide our own declarations - for the \c READ and \c WRITE functions. The declaration of MyClass - then might look like this: - - \snippet doc/src/snippets/code/doc_src_properties.cpp 5 - - The \c READ function is const and returns the property type. The - \c WRITE function returns void and has exactly one parameter of - the property type. The meta-object compiler enforces these - requirements. - - Given a pointer to an instance of MyClass or a pointer to a - QObject that is an instance of MyClass, we have two ways to set - its priority property: - - \snippet doc/src/snippets/code/doc_src_properties.cpp 6 - - In the example, the enumeration type that is the property type is - declared in MyClass and registered with the \l{Meta-Object System} - using the Q_ENUMS() macro. This makes the enumeration values - available as strings for use as in the call to setProperty(). Had - the enumeration type been declared in another class, its fully - qualified name (i.e., OtherClass::Priority) would be required, and - that other class would also have to inherit QObject and register - the enumeration type there using the Q_ENUMS() macro. - - A similar macro, Q_FLAGS(), is also available. Like Q_ENUMS(), it - registers an enumeration type, but it marks the type as being a - set of \e flags, i.e. values that can be OR'd together. An I/O - class might have enumeration values \c Read and \c Write and then - QObject::setProperty() could accept \c{Read | Write}. Q_FLAGS() - should be used to register this enumeration type. - - \section1 Dynamic Properties - - QObject::setProperty() can also be used to add \e new properties - to an instance of a class at runtime. When it is called with a - name and a value, if a property with the given name exists in the - QObject, and if the given value is compatible with the property's - type, the value is stored in the property, and true is returned. - If the value is \e not compatible with the property's type, the - property is \e not changed, and false is returned. But if the - property with the given name doesn't exist in the QObject (i.e., - if it wasn't declared with Q_PROPERTY(), a new property with the - given name and value is automatically added to the QObject, but - false is still returned. This means that a return of false can't - be used to determine whether a particular property was actually - set, unless you know in advance that the property already exists - in the QObject. - - Note that \e dynamic properties are added on a per instance basis, - i.e., they are added to QObject, not QMetaObject. A property can - be removed from an instance by passing the property name and an - invalid QVariant value to QObject::setProperty(). The default - constructor for QVariant constructs an invalid QVariant. - - Dynamic properties can be queried with QObject::property(), just - like properties declared at compile time with Q_PROPERTY(). - - \sa {Meta-Object System}, {Signals and Slots} - - \section1 Properties and Custom Types - - Custom types used by properties need to be registered using the - Q_DECLARE_METATYPE() macro so that their values can be stored in - QVariant objects. This makes them suitable for use with both - static properties declared using the Q_PROPERTY() macro in class - definitions and dynamic properties created at run-time. - - \sa Q_DECLARE_METATYPE(), QMetaType, QVariant - - \section1 Adding Additional Information to a Class - - Connected to the property system is an additional macro, - Q_CLASSINFO(), that can be used to attach additional - \e{name}--\e{value} pairs to a class's meta-object, for example: - - \snippet doc/src/snippets/code/doc_src_properties.cpp 7 - - Like other meta-data, class information is accessible at run-time - through the meta-object; see QMetaObject::classInfo() for details. -*/ diff --git a/doc/src/corelib/objectmodel/signalsandslots.qdoc b/doc/src/corelib/objectmodel/signalsandslots.qdoc deleted file mode 100644 index 9100980121..0000000000 --- a/doc/src/corelib/objectmodel/signalsandslots.qdoc +++ /dev/null @@ -1,468 +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$ -** -****************************************************************************/ - -/*! - \page signalsandslots.html - \title Signals & Slots - \ingroup qt-basic-concepts - \brief An overview of Qt's signals and slots inter-object - communication mechanism. - - Signals and slots are used for communication between objects. The - signals and slots mechanism is a central feature of Qt and - probably the part that differs most from the features provided by - other frameworks. - - \tableofcontents - - \section1 Introduction - - In GUI programming, when we change one widget, we often want - another widget to be notified. More generally, we want objects of - any kind to be able to communicate with one another. For example, - if a user clicks a \gui{Close} button, we probably want the - window's \l{QWidget::close()}{close()} function to be called. - - Older toolkits achieve this kind of communication using - callbacks. A callback is a pointer to a function, so if you want - a processing function to notify you about some event you pass a - pointer to another function (the callback) to the processing - function. The processing function then calls the callback when - appropriate. Callbacks have two fundamental flaws: Firstly, they - are not type-safe. We can never be certain that the processing - function will call the callback with the correct arguments. - Secondly, the callback is strongly coupled to the processing - function since the processing function must know which callback - to call. - - \section1 Signals and Slots - - In Qt, we have an alternative to the callback technique: We use - signals and slots. A signal is emitted when a particular event - occurs. Qt's widgets have many predefined signals, but we can - always subclass widgets to add our own signals to them. A slot - is a function that is called in response to a particular signal. - Qt's widgets have many pre-defined slots, but it is common - practice to subclass widgets and add your own slots so that you - can handle the signals that you are interested in. - - \img abstract-connections.png - \omit - \caption An abstract view of some signals and slots connections - \endomit - - The signals and slots mechanism is type safe: The signature of a - signal must match the signature of the receiving slot. (In fact a - slot may have a shorter signature than the signal it receives - because it can ignore extra arguments.) Since the signatures are - compatible, the compiler can help us detect type mismatches. - Signals and slots are loosely coupled: A class which emits a - signal neither knows nor cares which slots receive the signal. - Qt's signals and slots mechanism ensures that if you connect a - signal to a slot, the slot will be called with the signal's - parameters at the right time. Signals and slots can take any - number of arguments of any type. They are completely type safe. - - All classes that inherit from QObject or one of its subclasses - (e.g., QWidget) can contain signals and slots. Signals are emitted by - objects when they change their state in a way that may be interesting - to other objects. This is all the object does to communicate. It - does not know or care whether anything is receiving the signals it - emits. This is true information encapsulation, and ensures that the - object can be used as a software component. - - Slots can be used for receiving signals, but they are also normal - member functions. Just as an object does not know if anything receives - its signals, a slot does not know if it has any signals connected to - it. This ensures that truly independent components can be created with - Qt. - - You can connect as many signals as you want to a single slot, and a - signal can be connected to as many slots as you need. It is even - possible to connect a signal directly to another signal. (This will - emit the second signal immediately whenever the first is emitted.) - - Together, signals and slots make up a powerful component programming - mechanism. - - \section1 A Small Example - - A minimal C++ class declaration might read: - - \snippet doc/src/snippets/signalsandslots/signalsandslots.h 0 - - A small QObject-based class might read: - - \snippet doc/src/snippets/signalsandslots/signalsandslots.h 1 - \codeline - \snippet doc/src/snippets/signalsandslots/signalsandslots.h 2 - \snippet doc/src/snippets/signalsandslots/signalsandslots.h 3 - - The QObject-based version has the same internal state, and provides - public methods to access the state, but in addition it has support - for component programming using signals and slots. This class can - tell the outside world that its state has changed by emitting a - signal, \c{valueChanged()}, and it has a slot which other objects - can send signals to. - - All classes that contain signals or slots must mention - Q_OBJECT at the top of their declaration. They must also derive - (directly or indirectly) from QObject. - - Slots are implemented by the application programmer. - Here is a possible implementation of the \c{Counter::setValue()} - slot: - - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 0 - - The \c{emit} line emits the signal \c valueChanged() from the - object, with the new value as argument. - - In the following code snippet, we create two \c Counter objects - and connect the first object's \c valueChanged() signal to the - second object's \c setValue() slot using QObject::connect(): - - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 1 - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 2 - \codeline - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 3 - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 4 - - Calling \c{a.setValue(12)} makes \c{a} emit a - \c{valueChanged(12)} signal, which \c{b} will receive in its - \c{setValue()} slot, i.e. \c{b.setValue(12)} is called. Then - \c{b} emits the same \c{valueChanged()} signal, but since no slot - has been connected to \c{b}'s \c{valueChanged()} signal, the - signal is ignored. - - Note that the \c{setValue()} function sets the value and emits - the signal only if \c{value != m_value}. This prevents infinite - looping in the case of cyclic connections (e.g., if - \c{b.valueChanged()} were connected to \c{a.setValue()}). - - By default, for every connection you make, a signal is emitted; - two signals are emitted for duplicate connections. You can break - all of these connections with a single disconnect() call. - If you pass the Qt::UniqueConnection \a type, the connection will only - be made if it is not a duplicate. If there is already a duplicate - (exact same signal to the exact same slot on the same objects), - the connection will fail and connect will return false - - This example illustrates that objects can work together without needing to - know any information about each other. To enable this, the objects only - need to be connected together, and this can be achieved with some simple - QObject::connect() function calls, or with \c{uic}'s - \l{Using a Designer UI File in Your Application#Automatic Connections} - {automatic connections} feature. - - \section1 Building the Example - - The C++ preprocessor changes or removes the \c{signals}, - \c{slots}, and \c{emit} keywords so that the compiler is - presented with standard C++. - - By running the \l moc on class definitions that contain signals - or slots, a C++ source file is produced which should be compiled - and linked with the other object files for the application. If - you use \l qmake, the makefile rules to automatically invoke \c - moc will be added to your project's makefile. - - \section1 Signals - - Signals are emitted by an object when its internal state has changed - in some way that might be interesting to the object's client or owner. - Signals are public access functions and can be emitted from anywhere, - but we recommend to only emit them from the class that defines the - signal and its subclasses. - - When a signal is emitted, the slots connected to it are usually - executed immediately, just like a normal function call. When this - happens, the signals and slots mechanism is totally independent of - any GUI event loop. Execution of the code following the \c emit - statement will occur once all slots have returned. The situation is - slightly different when using \l{Qt::ConnectionType}{queued - connections}; in such a case, the code following the \c emit keyword - will continue immediately, and the slots will be executed later. - - If several slots are connected to one signal, the slots will be - executed one after the other, in the order they have been connected, - when the signal is emitted. - - Signals are automatically generated by the \l moc and must not be - implemented in the \c .cpp file. They can never have return types - (i.e. use \c void). - - A note about arguments: Our experience shows that signals and slots - are more reusable if they do not use special types. If - QScrollBar::valueChanged() were to use a special type such as the - hypothetical QScrollBar::Range, it could only be connected to - slots designed specifically for QScrollBar. Connecting different - input widgets together would be impossible. - - \section1 Slots - - A slot is called when a signal connected to it is emitted. Slots are - normal C++ functions and can be called normally; their only special - feature is that signals can be connected to them. - - Since slots are normal member functions, they follow the normal C++ - rules when called directly. However, as slots, they can be invoked - by any component, regardless of its access level, via a signal-slot - connection. This means that a signal emitted from an instance of an - arbitrary class can cause a private slot to be invoked in an instance - of an unrelated class. - - You can also define slots to be virtual, which we have found quite - useful in practice. - - Compared to callbacks, signals and slots are slightly slower - because of the increased flexibility they provide, although the - difference for real applications is insignificant. In general, - emitting a signal that is connected to some slots, is - approximately ten times slower than calling the receivers - directly, with non-virtual function calls. This is the overhead - required to locate the connection object, to safely iterate over - all connections (i.e. checking that subsequent receivers have not - been destroyed during the emission), and to marshall any - parameters in a generic fashion. While ten non-virtual function - calls may sound like a lot, it's much less overhead than any \c - new or \c delete operation, for example. As soon as you perform a - string, vector or list operation that behind the scene requires - \c new or \c delete, the signals and slots overhead is only - responsible for a very small proportion of the complete function - call costs. The same is true whenever you do a system call in a slot; - or indirectly call more than ten functions. - The simplicity and flexibility of the signals and slots mechanism is - well worth the overhead, which your users won't even notice. - - Note that other libraries that define variables called \c signals - or \c slots may cause compiler warnings and errors when compiled - alongside a Qt-based application. To solve this problem, \c - #undef the offending preprocessor symbol. - - \section1 Meta-Object Information - - The meta-object compiler (\l moc) parses the class declaration in - a C++ file and generates C++ code that initializes the - meta-object. The meta-object contains the names of all the signal - and slot members, as well as pointers to these functions. - - The meta-object contains additional information such as the - object's \link QObject::className() class name\endlink. You can - also check if an object \link QObject::inherits() - inherits\endlink a specific class, for example: - - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 5 - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 6 - - The meta-object information is also used by qobject_cast<T>(), which - is similar to QObject::inherits() but is less error-prone: - - \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 7 - - See \l{Meta-Object System} for more information. - - \section1 A Real Example - - Here is a simple commented example of a widget. - - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 0 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 1 - \codeline - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 2 - \codeline - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 3 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 4 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 5 - - \c LcdNumber inherits QObject, which has most of the signal-slot - knowledge, via QFrame and QWidget. It is somewhat similar to the - built-in QLCDNumber widget. - - The Q_OBJECT macro is expanded by the preprocessor to declare - several member functions that are implemented by the \c{moc}; if - you get compiler errors along the lines of "undefined reference - to vtable for \c{LcdNumber}", you have probably forgotten to - \l{moc}{run the moc} or to include the moc output in the link - command. - - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 6 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 7 - - It's not obviously relevant to the moc, but if you inherit - QWidget you almost certainly want to have the \c parent argument - in your constructor and pass it to the base class's constructor. - - Some destructors and member functions are omitted here; the \c - moc ignores member functions. - - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 8 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 9 - - \c LcdNumber emits a signal when it is asked to show an impossible - value. - - If you don't care about overflow, or you know that overflow - cannot occur, you can ignore the \c overflow() signal, i.e. don't - connect it to any slot. - - If on the other hand you want to call two different error - functions when the number overflows, simply connect the signal to - two different slots. Qt will call both (in the order they were connected). - - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 10 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 11 - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 12 - \codeline - \snippet doc/src/snippets/signalsandslots/lcdnumber.h 13 - - A slot is a receiving function used to get information about - state changes in other widgets. \c LcdNumber uses it, as the code - above indicates, to set the displayed number. Since \c{display()} - is part of the class's interface with the rest of the program, - the slot is public. - - Several of the example programs connect the - \l{QScrollBar::valueChanged()}{valueChanged()} signal of a - QScrollBar to the \c display() slot, so the LCD number - continuously shows the value of the scroll bar. - - Note that \c display() is overloaded; Qt will select the - appropriate version when you connect a signal to the slot. With - callbacks, you'd have to find five different names and keep track - of the types yourself. - - Some irrelevant member functions have been omitted from this - example. - - \section1 Signals And Slots With Default Arguments - - The signatures of signals and slots may contain arguments, and the - arguments can have default values. Consider QObject::destroyed(): - - \code - void destroyed(QObject* = 0); - \endcode - - When a QObject is deleted, it emits this QObject::destroyed() - signal. We want to catch this signal, wherever we might have a - dangling reference to the deleted QObject, so we can clean it up. - A suitable slot signature might be: - - \code - void objectDestroyed(QObject* obj = 0); - \endcode - - To connect the signal to the slot, we use QObject::connect(). - There are several ways to connect signal and slots. The first is to use - function pointers: - \code - connect(sender, &QObject::destroyed, this, &MyObject::objectDestroyed); - \endcode - - There are several advantages to using connect() with function pointers. - First, it allows the compiler to check that the signal's arguments are - compatible with the slot's arguments. Arguments can also be implicitly - converted by the compiler, if needed. - - You can also connect to functors or C++11 lamdas: - - \code - connect(sender, &QObject::destroyed, [=](){ this->m_objects.remove(sender); }); - \endcode - - Note that if your compiler does not support C++11 variadic templates, - this syntax only works if the signal and slot have 6 arguments or less. - - The other way to connect a signal to a slot is to use QObject::connect() - and the \c{SIGNAL} and \c{SLOT} macros. - The rule about whether to - include arguments or not in the \c{SIGNAL()} and \c{SLOT()} - macros, if the arguments have default values, is that the - signature passed to the \c{SIGNAL()} macro must \e not have fewer - arguments than the signature passed to the \c{SLOT()} macro. - - All of these would work: - \code - connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*))); - connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed())); - connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed())); - \endcode - But this one won't work: - \code - connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*))); - \endcode - - ...because the slot will be expecting a QObject that the signal - will not send. This connection will report a runtime error. - - Note that signal and slot arguments are not checked by the compiler when - using this QObject::connect() overload. - - \section1 Advanced Signals and Slots Usage - - For cases where you may require information on the sender of the - signal, Qt provides the QObject::sender() function, which returns - a pointer to the object that sent the signal. - - The QSignalMapper class is provided for situations where many - signals are connected to the same slot and the slot needs to - handle each signal differently. - - Suppose you have three push buttons that determine which file you - will open: "Tax File", "Accounts File", or "Report File". - - In order to open the correct file, you use QSignalMapper::setMapping() to - map all the clicked() signals to a QSignalMapper object. Then you connect - the file's QPushButton::clicked() signal to the QSignalMapper::map() slot. - - \snippet doc/src/snippets/signalmapper/filereader.cpp 0 - - Then, you connect the \l{QSignalMapper::}{mapped()} signal to - \c{readFile()} where a different file will be opened, depending on - which push button is pressed. - - \snippet doc/src/snippets/signalmapper/filereader.cpp 1 - - \sa {Meta-Object System}, {Qt's Property System} - - \target 3rd Party Signals and Slots - \section2 Using Qt with 3rd Party Signals and Slots - - It is possible to use Qt with a 3rd party signal/slot mechanism. - You can even use both mechanisms in the same project. Just add the - following line to your qmake project (.pro) file. - - \snippet doc/src/snippets/code/doc_src_containers.cpp 22 - - It tells Qt not to define the moc keywords \c{signals}, \c{slots}, - and \c{emit}, because these names will be used by a 3rd party - library, e.g. Boost. Then to continue using Qt signals and slots - with the \c{no_keywords} flag, simply replace all uses of the Qt - moc keywords in your sources with the corresponding Qt macros - Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT. -*/ diff --git a/doc/src/corelib/qtcore.qdoc b/doc/src/corelib/qtcore.qdoc deleted file mode 100644 index 36d128e3df..0000000000 --- a/doc/src/corelib/qtcore.qdoc +++ /dev/null @@ -1,42 +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$ -** -****************************************************************************/ - -/*! - \module QtCore - \title QtCore Module - \ingroup modules - - \keyword QtCore - - \brief The QtCore module contains core non-GUI functionality. - - All other Qt modules rely on this module. To include the - definitions of the module's classes, use the following directive: - - \snippet doc/src/snippets/code/doc_src_qtcore.cpp 0 -*/ - diff --git a/doc/src/corelib/threads-basics.qdoc b/doc/src/corelib/threads-basics.qdoc deleted file mode 100644 index e54f8a7ccb..0000000000 --- a/doc/src/corelib/threads-basics.qdoc +++ /dev/null @@ -1,572 +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$ -** -****************************************************************************/ - -/*! - \page thread-basics.html - \ingroup tutorials - \startpage {index.html}{Qt Reference Documentation} - - \title Threading Basics - \brief An introduction to threads - - \section1 What Are Threads? - - Threads are about doing things in parallel, just like processes. So how do - threads differ from processes? While you are making calculations on a - spreadsheet, there may also be a media player running on the same desktop - playing your favorite song. Here is an example of two processes working in - parallel: one running the spreadsheet program; one running a media player. - Multitasking is a well known term for this. A closer look at the media - player reveals that there are again things going on in parallel within one - single process. While the media player is sending music to the audio driver, - the user interface with all its bells and whistles is being constantly - updated. This is what threads are for \mdash concurrency within one single - process. - - So how is concurrency implemented? Parallel work on single core CPUs is an - illusion which is somewhat similar to the illusion of moving images in - cinema. - For processes, the illusion is produced by interrupting the processor's - work on one process after a very short time. Then the processor moves on to - the next process. In order to switch between processes, the current program - counter is saved and the next processor's program counter is loaded. This - is not sufficient because the same needs to be done with registers and - certain architecture and OS specific data. - - Just as one CPU can power two or more processes, it is also possible to let - the CPU run on two different code segments of one single process. When a - process starts, it always executes one code segment and therefore the - process is said to have one thread. However, the program may decide to - start a second thread. Then, two different code sequences are processed - simultaneously inside one process. Concurrency is achieved on single core - CPUs by repeatedly saving program counters and registers then loading the - next thread's program counters and registers. No cooperation from the - program is required to cycle between the active threads. A thread may be in - any state when the switch to the next thread occurs. - - The current trend in CPU design is to have several cores. A typical - single-threaded application can make use of only one core. However, a - program with multiple threads can be assigned to multiple cores, making - things happen in a truly concurrent way. As a result, distributing work - to more than one thread can make a program run much faster on multicore - CPUs because additional cores can be used. - - \section2 GUI Thread and Worker Thread - - As mentioned, each program has one thread when it is started. This thread - is called the "main thread" (also known as the "GUI thread" in Qt - applications). The Qt GUI must run in this thread. All widgets and several - related classes, for example QPixmap, don't work in secondary threads. - A secondary thread is commonly referred to as a "worker thread" because it - is used to offload processing work from the main thread. - - \section2 Simultaneous Access to Data - - Each thread has its own stack, which means each thread has its own call - history and local variables. Unlike processes, threads share the same - address space. The following diagram shows how the building blocks of - threads are located in memory. Program counter and registers of inactive - threads are typically kept in kernel space. There is a shared copy of the - code and a separate stack for each thread. - - \image threadvisual-example.png "Thread visualization" - - If two threads have a pointer to the same object, it is possible that both - threads will access that object at the same time and this can potentially - destroy the object's integrity. It's easy to imagine the many things that - can go wrong when two methods of the same object are executed - simultaneously. - - Sometimes it is necessary to access one object from different threads; - for example, when objects living in different threads need to communicate. - Since threads use the same address space, it is easier and faster for - threads to exchange data than it is for processes. Data does not have to be - serialized and copied. Passing pointers is possible, but there must be a - strict coordination of what thread touches which object. Simultaneous - execution of operations on one object must be prevented. There are several - ways of achieving this and some of them are described below. - - So what can be done safely? All objects created in a thread can be used - safely within that thread provided that other threads don't have references - to them and objects don't have implicit coupling with other threads. Such - implicit coupling may happen when data is shared between instances as with - static members, singletons or global data. Familiarize yourself with the - concept of \l{Reentrancy and Thread-Safety}{thread safe and reentrant} - classes and functions. - - \section1 Using Threads - - There are basically two use cases for threads: - - \list - \li Make processing faster by making use of multicore processors. - \li Keep the GUI thread or other time critical threads responsive by - offloading long lasting processing or blocking calls to other threads. - \endlist - - \section2 When to Use Alternatives to Threads - - Developers need to be very careful with threads. It is easy to start other - threads, but very hard to ensure that all shared data remains consistent. - Problems are often hard to find because they may only show up once in a - while or only on specific hardware configurations. Before creating threads - to solve certain problems, possible alternatives should be considered. - - \table - \header - \li Alternative - \li Comment - \row - \li QEventLoop::processEvents() - \li Calling QEventLoop::processEvents() repeatedly during a - time-consuming calculation prevents GUI blocking. However, this - solution doesn't scale well because the call to processEvents() may - occur too often, or not often enough, depending on hardware. - \row - \li QTimer - \li Background processing can sometimes be done conveniently using a - timer to schedule execution of a slot at some point in the future. - A timer with an interval of 0 will time out as soon as there are no - more events to process. - \row - \li QSocketNotifier QNetworkAccessManager QIODevice::readyRead() - \li This is an alternative to having one or multiple threads, each with - a blocking read on a slow network connection. As long as the - calculation in response to a chunk of network data can be executed - quickly, this reactive design is better than synchronous waiting in - threads. Reactive design is less error prone and energy efficient - than threading. In many cases there are also performance benefits. - \endtable - - In general, it is recommended to only use safe and tested paths and to - avoid introducing ad-hoc threading concepts. QtConcurrent provides an easy - interface for distributing work to all of the processor's cores. The - threading code is completely hidden in the QtConcurrent framework, so you - don't have to take care of the details. However, QtConcurrent can't be used - when communication with the running thread is needed, and it shouldn't be - used to handle blocking operations. - - \section2 Which Qt Thread Technology Should You Use? - - Sometimes you want to do more than just running a method in the context of - another thread. You may want to have an object which lives in another - thread that provides a service to the GUI thread. Maybe you want another - thread to stay alive forever to poll hardware ports and send a signal to - the GUI thread when something noteworthy has happened. Qt provides - different solutions for developing threaded applications. The right - solution depends on the purpose of the new thread as well as on the - thread's lifetime. - - \table - \header - \li Lifetime of thread - \li Development task - \li Solution - \row - \li One call - \li Run one method within another thread and quit the thread when the - method is finished. - \li Qt provides different solutions: - \list - \li Write a function and run it with QtConcurrent::run() - \li Derive a class from QRunnable and run it in the global thread - pool with QThreadPool::globalInstance()->start() - \li Derive a class from QThread, reimplement the QThread::run() - method and use QThread::start() to run it. - \endlist - - \row - \li One call - \li Operations are to be performed on all items of a container. - Processing should be performed using all available cores. A common - example is to produce thumbnails from a list of images. - \li QtConcurrent provides the \l{QtConcurrent::}{map()} function for - applying operations on every container element, - \l{QtConcurrent::}{filter()} for selecting container elements, and - the option of specifying a reduce function for combining the - remaining elements. - \row - \li One call - \li A long running operation has to be put in another thread. During the - course of processing, status information should be sent to the GUI - thread. - \li Use QThread, reimplement run and emit signals as needed. Connect the - signals to the GUI thread's slots using queued signal/slot - connections. - - \row - \li Permanent - \li Have an object living in another thread and let it perform different - tasks upon request. - This means communication to and from the worker thread is required. - \li Derive a class from QObject and implement the necessary slots and - signals, move the object to a thread with a running event loop and - communicate with the object over queued signal/slot connections. - \row - \li Permanent - \li Have an object living in another thread, let the object perform - repeated tasks such as polling a port and enable communication with - the GUI thread. - \li Same as above but also use a timer in the worker thread to implement - polling. However, the best solution for polling is to avoid it - completely. Sometimes using QSocketNotifier is an alternative. - \endtable - - - \section1 Qt Thread Basics - - QThread is a very convenient cross platform abstraction of native platform - threads. Starting a thread is very simple. Let us look at a short piece of - code that generates another thread which says hello in that thread and then - exits. - - \snippet examples/tutorials/threads/hellothread/hellothread.h 1 - - We derive a class from QThread and reimplement the \l{QThread::}{run()} - method. - - \snippet examples/tutorials/threads/hellothread/hellothread.cpp 1 - - The run method contains the code that will be run in a separate thread. In - this example, a message containing the thread ID will be printed. - QThread::start() will call the method in another thread. - - \snippet examples/tutorials/threads/hellothread/main.cpp 1 - - To start the thread, our thread object needs to be instantiated. The - \l{QThread::}{start()} method creates a new thread and calls the - reimplemented \l{QThread::}{run()} method in this new thread. Right after - \l{QThread::}{start()} is called, two program counters walk through the - program code. The main function starts with only the GUI thread running and - it should terminate with only the GUI thread running. Exiting the program - when another thread is still busy is a programming error, and therefore, - wait is called which blocks the calling thread until the - \l{QThread::}{run()} method has completed. - - This is the result of running the code: - - \badcode - hello from GUI thread 3079423696 - hello from worker thread 3076111216 - \endcode - - - \section2 QObject and Threads - - A QObject is said to have a \e{thread affinity} or, in other words, that it - lives in a certain thread. This means that, at creation time, QObject saves - a pointer to the current thread. This information becomes relevant when an - event is posted with \l{QCoreApplication::}{postEvent()}. The event will be - put in the corresponding thread's event loop. If the thread where the - QObject lives doesn't have an event loop, the event will never be delivered. - - To start an event loop, \l{QThread::}{exec()} must be called inside - \l{QThread::}{run()}. Thread affinity can be changed using - \l{QObject::}{moveToThread()}. - - As mentioned above, developers must always be careful when calling objects' - methods from other threads. Thread affinity does not change this situation. - Qt documentation marks several methods as thread-safe. - \l{QCoreApplication::}{postEvent()} is a noteworthy example. A thread-safe - method may be called from different threads simultaneously. - - In cases where there is usually no concurrent access to methods, calling - non-thread-safe methods of objects in other threads may work thousands - of times before a concurrent access occurs, causing unexpected behavior. - Writing test code does not entirely ensure thread correctness, but it is - still important. - On Linux, Valgrind and Helgrind can help detect threading errors. - - The anatomy of QThread is quite interesting: - - \list - \li QThread does not live in the new thread where \l{QThread::}{run()} is - executed. It lives in the old thread. - \li Most QThread methods are the thread's control interface and are meant to - be called from the old thread. Do not move this interface to the newly - created thread using \l{QObject::}{moveToThread()}; i.e., calling - \l{QObject::moveToThread()}{moveToThread(this)} is regarded as bad - practice. - \li \l{QThread::}{exec()} and the static methods - \l{QThread::}{usleep()}, \l{QThread::}{msleep()}, - \l{QThread::}{sleep()} are meant to be called from the newly created - thread. - \li Additional members defined in the QThread subclass are - accessible by both threads. The developer is responsible for - coordinating access. A typical strategy is to set the members before - \l{QThread::}{start()} is called. Once the worker thread is running, - the main thread should not touch the additional members anymore. After - the worker has terminated, the main thread can access the additional - members again. This is a convenient strategy for passing parameters to a - thread before it is started as well as for collecting the result once it - has terminated. - \endlist - - A QObject's parent must always be in the same thread. This has a surprising - consequence for objects generated within the \l{QThread::}{run()} method: - - \code - void HelloThread::run() - { - QObject *object1 = new QObject(this); //error, parent must be in the same thread - QObject object2; // OK - QSharedPointer <QObject> object3(new QObject); // OK - } - \endcode - - \section2 Using a Mutex to Protect the Integrity of Data - - A mutex is an object that has \l{QMutex::}{lock()} and \l{QMutex::}{unlock()} - methods and remembers if it is already locked. A mutex is designed to be - called from multiple threads. \l{QMutex::}{lock()} returns immediately if - the mutex is not locked. The next call from another thread will find the - mutex in a locked state and then \l{QMutex::}{lock()} will block the thread - until the other thread calls \l{QMutex::}{unlock()}. This functionality can - make sure that a code section will be executed by only one thread at a time. - - The following line sketches how a mutex can be used to make a method - thread-safe: - - \code - void Worker::work() - { - this->mutex.lock(); // first thread can pass, other threads will be blocked here - doWork(); - this->mutex.unlock(); - } - \endcode - - What happens if one thread does not unlock a mutex? The result can be a - frozen application. In the example above, an exception might be thrown and - \c{mutex.unlock()} will never be reached. To prevent problems like this, - QMutexLocker should be used. - - \code - void Worker::work() - { - QMutexLocker locker(&mutex); // Locks the mutex and unlocks when locker exits the scope - doWork(); - } - \endcode - - This looks easy, but mutexes introduce a new class of problems: deadlocks. - A deadlock happens when a thread waits for a mutex to become unlocked, but - the mutex remains locked because the owning thread is waiting for the first - thread to unlock it. The result is a frozen application. Mutexes can be - used to make a method thread safe. Most Qt methods aren't thread safe - because there is always a performance penalty when using mutexes. - - It isn't always possible to lock and unlock a mutex in a method. Sometimes - the need to lock spans several calls. For example, modifying a container - with an iterator requires a sequence of several calls which should not be - interrupted by other threads. In such a scenario, locking can be achieved - with a mutex that is kept outside of the object to be manipulated. With an - external mutex, the duration of locking can be adjusted to the needs of the - operation. One disadvantage is that external mutexes aid locking, but do - not enforce it because users of the object may forget to use it. - - \section2 Using the Event Loop to Prevent Data Corruption - - The event loops of Qt are a very valuable tool for inter-thread - communication. Every thread may have its own event loop. A safe way of - calling a slot in another thread is by placing that call in another - thread's event loop. This ensures that the target object finishes the - method that is currently running before another method is started. - - So how is it possible to put a method invocation in an event loop? Qt has - two ways of doing this. One way is via queued signal-slot connections; the - other way is to post an event with QCoreApplication::postEvent(). A queued - signal-slot connection is a signal slot connection that is executed - asynchronously. The internal implementation is based on posted events. The - arguments of the signal are put into the event loop and the signal method - returns immediately. - - The connected slot will be executed at a time which depends on what else is - in the event loop. - - Communication via the event loop eliminates the deadlock problem we face - when using mutexes. This is why we recommend using the event loop rather - than locking an object using a mutex. - - \section2 Dealing with Asynchronous Execution - - One way to obtain a worker thread's result is by waiting for the thread - to terminate. In many cases, however, a blocking wait isn't acceptable. The - alternative to a blocking wait are asynchronous result deliveries with - either posted events or queued signals and slots. This generates a certain - overhead because an operation's result does not appear on the next source - line, but in a slot located somewhere else in the source file. Qt - developers are used to working with this kind of asynchronous behavior - because it is much similar to the kind of event-driven programming used in - GUI applications. - - \section1 Examples - - This tutorial comes with examples for Qt's three basic ways of working with - threads. Two more examples show how to communicate with a running thread - and how a QObject can be placed in another thread, providing service to the - main thread. - - \list - \li Using QThread as shown \l{Qt thread basics}{above} - \li \l{Example 1: Using the Thread Pool}{Using the global QThreadPool} - \li \l{Example 2: Using QtConcurrent}{Using QtConcurrent} - \li \l{Example 3: Clock}{Communication with the GUI thread} - \li \l{Example 4: A Permanent Thread}{A permanent QObject in another thread - provides service to the main thread} - \endlist - - The following examples can all be compiled and run independently. The source can - be found in the examples directory: examples/tutorials/threads/ - - \section2 Example 1: Using the Thread Pool - - Creating and destroying threads frequently can be expensive. To avoid the - cost of thread creation, a thread pool can be used. A thread pool is a - place where threads can be parked and fetched. We can write the same - "hello thread" program as \l{Qt Thread Basics}{above} using the global - thread pool. We derive a class from QRunnable. The code we want to run in - another thread needs to be placed in the reimplemented QRunnable::run() - method. - - \snippet examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp 1 - - We instantiate Work in main(), locate the global thread pool and use the - QThreadPool::start() method. Now the thread pool runs our worker in another - thread. Using the thread pool has a performance advantage because threads - are not destroyed after they have finished running. They are kept in a pool - and wait to be used again later. - - \section2 Example 2: Using QtConcurrent - - \snippet examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp 1 - - We write a global function hello() to implement the work. QtConcurrent::run() - is used to run the function in another thread. The result is a QFuture. - QFuture provides a method called \l{QFuture::}{waitForFinished()}, which - blocks until the calculation is completed. The real power of QtConcurrent - becomes visible when data can be made available in a container. QtConcurrent - provides several functions that are able to process itemized data on all - available cores simultaneously. The use of QtConcurrent is very similar to - applying an STL algorithm to an STL container. - \l{examples-threadandconcurrent.html}{QtConcurrent Map} is a very short and - clear example about how a container of images can be scaled on all available - cores. The image scaling example uses the blocking variants of the functions - used. For every blocking function there is also a non-blocking, asynchronous - counterpart. Getting results asynchronously is implemented with QFuture and - QFutureWatcher. - - \section2 Example 3: Clock - - \image thread_clock.png "clock" - - We want to produce a clock application. The application has a GUI and a - worker thread. The worker thread checks every 10 milliseconds what time it - is. If the formatted time has changed, the result will be sent to the GUI - thread where it is displayed. - - Of course, this is an overly complicated way of designing a clock and, - actually, a separate thread is unnecessary. We would be better off placing - the timer in the main thread because the calculation made in the timer slot - is very short-lived. This example is purely for instructional use and shows - how to communicate from a worker thread to a GUI thread. Note that - communication in this direction is easy. We only need to add a signal - to QThread and make a queued signal/slot connection to the main thread. - Communication from the GUI to the worker thread is shown in the next - example. - - \snippet examples/tutorials/threads/clock/main.cpp 1 - - We've connected the \c clockThread with the label. The connection must be a - queued signal-slot connection because we want to put the call in the event - loop. - - \snippet examples/tutorials/threads/clock/clockthread.h 1 - - We have derived a class from QThread and declared the \c sendTime() signal. - - \snippet examples/tutorials/threads/clock/clockthread.cpp 1 - - The trickiest part of this example is that the timer is connected to its - slot via a direct connection. A default connection would produce a queued - signal-slot connection because the connected objects live in different - threads; remember that QThread does not live in the thread it creates. - - Still it is safe to access ClockThread::timerHit() from the worker thread - because ClockThread::timerHit() is private and only touches local variables - and a private member that isn't touched by public methods. - QDateTime::currentDateTime() isn't marked as thread-safe in Qt - documentation, however we can get away with using it in this small - example because we know that the QDateTime::currentDateTime() static - method isn't used in any other threads. - - \section2 Example 4: A Permanent Thread - - This example shows how it is possible to have a QObject in a worker thread - that accepts requests from the GUI thread, does polling using a timer and - continuously reports results back to the GUI thread. The actual work - including the polling must be implemented in a class derived from QObject. - We have called this class \c WorkerObject in the code shown below. The - thread-specific code is hidden in a class called \c Thread, derived from - QThread. - \c Thread has two additional public members. The \c launchWorker() member - takes the worker object and moves it to another thread with a started event - loop. - The call blocks for a very short moment until the thread creation operation - is completed, allowing the worker object to be used again on the next line. - The \c Thread class's code is short but somewhat involved, so we only show - how to use the class. - - \snippet examples/tutorials/threads/movedobject/main.cpp 1 - - QMetaObject::invokeMethod() calls a slot via the event loop. The worker - object's methods should not be called directly after the object has been - moved to another thread. We let the worker thread do some work and polling, - and use a timer to shut the application down after 3 seconds. Shutting the - worker down needs some care. We call \c{Thread::stop()} to exit the event - loop. We wait for the thread to terminate and, after this has occurred, we - delete the worker. - - \section1 Digging Deeper - - Threading is a very complicated subject. Qt offers more classes for - threading than we have presented in this tutorial. The following materials - can help you go into the subject in more depth: - - \list - \li Good video tutorials about threads with Qt can be found in the material - from the \l{Training Day at Qt Developer Days 2009}. - \li The \l{Thread Support in Qt} document is a good starting point into - the reference documentation. - \li Qt comes with several additional examples for - \l{Threading and Concurrent Programming Examples}{QThread and QtConcurrent}. - \li Several good books describe how to work with Qt threads. The most - extensive coverage can be found in \e{Advanced Qt Programming} by Mark - Summerfield, Prentice Hall - roughly 70 of 500 pages cover QThread and - QtConcurrent. - \endlist -*/ diff --git a/doc/src/corelib/threads.qdoc b/doc/src/corelib/threads.qdoc deleted file mode 100644 index 04a5379b2d..0000000000 --- a/doc/src/corelib/threads.qdoc +++ /dev/null @@ -1,705 +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$ -** -****************************************************************************/ - -/*! - \group thread - \title Threading Classes -*/ - -/*! - \page threads.html - \title Thread Support in Qt - \ingroup qt-basic-concepts - \brief A detailed discussion of thread handling in Qt. - - \ingroup frameworks-technologies - - \nextpage Starting Threads with QThread - - Qt provides thread support in the form of platform-independent - threading classes, a thread-safe way of posting events, and - signal-slot connections across threads. This makes it easy to - develop portable multithreaded Qt applications and take advantage - of multiprocessor machines. Multithreaded programming is also a - useful paradigm for performing time-consuming operations without - freezing the user interface of an application. - - Earlier versions of Qt offered an option to build the library - without thread support. Since Qt 4.0, threads are always enabled. - - \section1 Topics: - - \list - \li \l{Recommended Reading} - \li \l{The Threading Classes} - \li \l{Starting Threads with QThread} - \li \l{Synchronizing Threads} - \li \l{Reentrancy and Thread-Safety} - \li \l{Threads and QObjects} - \li \l{Concurrent Programming} - \li \l{Thread-Support in Qt Modules} - \endlist - - \section1 Recommended Reading - - This document is intended for an audience that has knowledge of, - and experience with, multithreaded applications. If you are new - to threading see our Recommended Reading list: - - \list - \li \l{Threads Primer: A Guide to Multithreaded Programming} - \li \l{Thread Time: The Multithreaded Programming Guide} - \li \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing} - \li \l{Win32 Multithreaded Programming} - \endlist - - \section1 The Threading Classes - - These classes are relevant to threaded applications. - - \annotatedlist thread - -\omit - \list - \li QThread provides the means to start a new thread. - \li QThreadStorage provides per-thread data storage. - \li QThreadPool manages a pool of threads that run QRunnable objects. - \li QRunnable is an abstract class representing a runnable object. - \li QMutex provides a mutual exclusion lock, or mutex. - \li QMutexLocker is a convenience class that automatically locks - and unlocks a QMutex. - \li QReadWriteLock provides a lock that allows simultaneous read access. - \li QReadLocker and QWriteLocker are convenience classes that automatically - lock and unlock a QReadWriteLock. - \li QSemaphore provides an integer semaphore (a generalization of a mutex). - \li QWaitCondition provides a way for threads to go to sleep until - woken up by another thread. - \li QAtomicInt provides atomic operations on integers. - \li QAtomicPointer provides atomic operations on pointers. - \endlist -\endomit - - \note Qt's threading classes are implemented with native threading APIs; - e.g., Win32 and pthreads. Therefore, they can be used with threads of the - same native API. -*/ - -/*! - \page threads-starting.html - \title Starting Threads with QThread - - \contentspage Thread Support in Qt - \nextpage Synchronizing Threads - - A QThread instance represents a thread and provides the means to - \l{QThread::start()}{start()} a thread, which will then execute the - reimplementation of QThread::run(). The \c run() implementation is for a - thread what the \c main() entry point is for the application. All code - executed in a call stack that starts in the \c run() function is executed - by the new thread, and the thread finishes when the function returns. - QThread emits signals to indicate that the thread started or finished - executing. - - \section1 Creating a Thread - - To create a thread, subclass QThread and reimplement its - \l{QThread::run()}{run()} function. For example: - - \snippet doc/src/snippets/threads/threads.h 0 - \codeline - \snippet doc/src/snippets/threads/threads.cpp 0 - \snippet doc/src/snippets/threads/threads.cpp 1 - \dots - \snippet doc/src/snippets/threads/threads.cpp 2 - - \section1 Starting a Thread - - Then, create an instance of the thread object and call - QThread::start(). Note that you must create the QApplication (or - QCoreApplication) object before you can create a QThread. - - The function will return immediately and the - main thread will continue. The code that appears in the - \l{QThread::run()}{run()} reimplementation will then be executed - in a separate thread. - - Creating threads is explained in more detail in the QThread - documentation. - - Note that QCoreApplication::exec() must always be called from the - main thread (the thread that executes \c{main()}), not from a - QThread. In GUI applications, the main thread is also called the - GUI thread because it's the only thread that is allowed to - perform GUI-related operations. -*/ - -/*! - \page threads-synchronizing.html - \title Synchronizing Threads - - \previouspage Starting Threads with QThread - \contentspage Thread Support in Qt - \nextpage Reentrancy and Thread-Safety - - The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition - classes provide means to synchronize threads. While the main idea - with threads is that they should be as concurrent as possible, - there are points where threads must stop and wait for other - threads. For example, if two threads try to access the same - global variable simultaneously, the results are usually - undefined. - - QMutex provides a mutually exclusive lock, or mutex. At most one - thread can hold the mutex at any time. If a thread tries to - acquire the mutex while the mutex is already locked, the thread will - be put to sleep until the thread that currently holds the mutex - unlocks it. Mutexes are often used to protect accesses to shared - data (i.e., data that can be accessed from multiple threads - simultaneously). In the \l{Reentrancy and Thread-Safety} section - below, we will use it to make a class thread-safe. - - QReadWriteLock is similar to QMutex, except that it distinguishes - between "read" and "write" access to shared data and allows - multiple readers to access the data simultaneously. Using - QReadWriteLock instead of QMutex when it is possible can make - multithreaded programs more concurrent. - - QSemaphore is a generalization of QMutex that protects a certain - number of identical resources. In contrast, a mutex protects - exactly one resource. The \l{threads/semaphores}{Semaphores} - example shows a typical application of semaphores: synchronizing - access to a circular buffer between a producer and a consumer. - - QWaitCondition allows a thread to wake up other threads when some - condition has been met. One or many threads can block waiting for - a QWaitCondition to set a condition with - \l{QWaitCondition::wakeOne()}{wakeOne()} or - \l{QWaitCondition::wakeAll()}{wakeAll()}. Use - \l{QWaitCondition::wakeOne()}{wakeOne()} to wake one randomly - selected event or \l{QWaitCondition::wakeAll()}{wakeAll()} to - wake them all. The \l{threads/waitconditions}{Wait Conditions} - example shows how to solve the producer-consumer problem using - QWaitCondition instead of QSemaphore. - - Note that Qt's synchronization classes rely on the use of properly - aligned pointers. For instance, you cannot use packed classes with - MSVC. -*/ - -/*! - \page threads-reentrancy.html - \title Reentrancy and Thread-Safety - - \keyword reentrant - \keyword thread-safe - - \previouspage Synchronizing Threads - \contentspage Thread Support in Qt - \nextpage Threads and QObjects - - Throughout the documentation, the terms \e{reentrant} and - \e{thread-safe} are used to mark classes and functions to indicate - how they can be used in multithread applications: - - \list - \li A \e thread-safe function can be called simultaneously from - multiple threads, even when the invocations use shared data, - because all references to the shared data are serialized. - \li A \e reentrant function can also be called simultaneously from - multiple threads, but only if each invocation uses its own data. - \endlist - - Hence, a \e{thread-safe} function is always \e{reentrant}, but a - \e{reentrant} function is not always \e{thread-safe}. - - By extension, a class is said to be \e{reentrant} if its member - functions can be called safely from multiple threads, as long as - each thread uses a \e{different} instance of the class. The class - is \e{thread-safe} if its member functions can be called safely - from multiple threads, even if all the threads use the \e{same} - instance of the class. - - \note Qt classes are only documented as \e{thread-safe} if they - are intended to be used by multiple threads. If a function is not - marked as thread-safe or reentrant, it should not be used from - different threads. If a class is not marked as thread-safe or - reentrant then a specific instance of that class should not be - accessed from different threads. - - \section1 Reentrancy - - C++ classes are often reentrant, simply because they only access - their own member data. Any thread can call a member function on an - instance of a reentrant class, as long as no other thread can call - a member function on the \e{same} instance of the class at the - same time. For example, the \c Counter class below is reentrant: - - \snippet doc/src/snippets/threads/threads.cpp 3 - \snippet doc/src/snippets/threads/threads.cpp 4 - - The class isn't thread-safe, because if multiple threads try to - modify the data member \c n, the result is undefined. This is - because the \c ++ and \c -- operators aren't always atomic. - Indeed, they usually expand to three machine instructions: - - \list 1 - \li Load the variable's value in a register. - \li Increment or decrement the register's value. - \li Store the register's value back into main memory. - \endlist - - If thread A and thread B load the variable's old value - simultaneously, increment their register, and store it back, they - end up overwriting each other, and the variable is incremented - only once! - - \section1 Thread-Safety - - Clearly, the access must be serialized: Thread A must perform - steps 1, 2, 3 without interruption (atomically) before thread B - can perform the same steps; or vice versa. An easy way to make - the class thread-safe is to protect all access to the data - members with a QMutex: - - \snippet doc/src/snippets/threads/threads.cpp 5 - \snippet doc/src/snippets/threads/threads.cpp 6 - - The QMutexLocker class automatically locks the mutex in its - constructor and unlocks it when the destructor is invoked, at the - end of the function. Locking the mutex ensures that access from - different threads will be serialized. The \c mutex data member is - declared with the \c mutable qualifier because we need to lock - and unlock the mutex in \c value(), which is a const function. - - \section1 Notes on Qt Classes - - Many Qt classes are \e{reentrant}, but they are not made - \e{thread-safe}, because making them thread-safe would incur the - extra overhead of repeatedly locking and unlocking a QMutex. For - example, QString is reentrant but not thread-safe. You can safely - access \e{different} instances of QString from multiple threads - simultaneously, but you can't safely access the \e{same} instance - of QString from multiple threads simultaneously (unless you - protect the accesses yourself with a QMutex). - - Some Qt classes and functions are thread-safe. These are mainly - the thread-related classes (e.g. QMutex) and fundamental functions - (e.g. QCoreApplication::postEvent()). - - \note Terminology in the multithreading domain isn't entirely - standardized. POSIX uses definitions of reentrant and thread-safe - that are somewhat different for its C APIs. When using other - object-oriented C++ class libraries with Qt, be sure the - definitions are understood. -*/ - -/*! - \page threads-qobject.html - \title Threads and QObjects - - \previouspage Reentrancy and Thread Safety - \contentspage Thread Support in Qt - \nextpage Concurrent Programming - - QThread inherits QObject. It emits signals to indicate that the - thread started or finished executing, and provides a few slots as - well. - - More interesting is that \l{QObject}s can be used in multiple - threads, emit signals that invoke slots in other threads, and - post events to objects that "live" in other threads. This is - possible because each thread is allowed to have its own event - loop. - - \section1 QObject Reentrancy - - QObject is reentrant. Most of its non-GUI subclasses, such as - QTimer, QTcpSocket, QUdpSocket and QProcess, are also - reentrant, making it possible to use these classes from multiple - threads simultaneously. Note that these classes are designed to be - created and used from within a single thread; creating an object - in one thread and calling its functions from another thread is not - guaranteed to work. There are three constraints to be aware of: - - \list - \li \e{The child of a QObject must always be created in the thread - where the parent was created.} This implies, among other - things, that you should never pass the QThread object (\c - this) as the parent of an object created in the thread (since - the QThread object itself was created in another thread). - - \li \e{Event driven objects may only be used in a single thread.} - Specifically, this applies to the \l{timers.html}{timer - mechanism} and the \l{QtNetwork}{network module}. For example, - you cannot start a timer or connect a socket in a thread that - is not the \l{QObject::thread()}{object's thread}. - - \li \e{You must ensure that all objects created in a thread are - deleted before you delete the QThread.} This can be done - easily by creating the objects on the stack in your - \l{QThread::run()}{run()} implementation. - \endlist - - Although QObject is reentrant, the GUI classes, notably QWidget - and all its subclasses, are not reentrant. They can only be used - from the main thread. As noted earlier, QCoreApplication::exec() - must also be called from that thread. - - In practice, the impossibility of using GUI classes in other - threads than the main thread can easily be worked around by - putting time-consuming operations in a separate worker thread and - displaying the results on screen in the main thread when the - worker thread is finished. This is the approach used for - implementing the \l{threads/mandelbrot}{Mandelbrot} and - the \l{network/blockingfortuneclient}{Blocking Fortune Client} - example. - - \section1 Per-Thread Event Loop - - Each thread can have its own event loop. The initial thread - starts its event loops using QCoreApplication::exec(); other - threads can start an event loop using QThread::exec(). Like - QCoreApplication, QThread provides an - \l{QThread::exit()}{exit(int)} function and a - \l{QThread::quit()}{quit()} slot. - - An event loop in a thread makes it possible for the thread to use - certain non-GUI Qt classes that require the presence of an event - loop (such as QTimer, QTcpSocket, and QProcess). It also makes it - possible to connect signals from any threads to slots of a - specific thread. This is explained in more detail in the - \l{Signals and Slots Across Threads} section below. - - \image threadsandobjects.png Threads, objects, and event loops - - A QObject instance is said to \e live in the thread in which it - is created. Events to that object are dispatched by that thread's - event loop. The thread in which a QObject lives is available using - QObject::thread(). - - Note that for QObjects that are created before QApplication, - QObject::thread() returns zero. This means that the main thread - will only handle posted events for these objects; other event - processing is not done at all for objects with no thread. Use the - QObject::moveToThread() function to change the thread affinity for - an object and its children (the object cannot be moved if it has a - parent). - - Calling \c delete on a QObject from a thread other than the one - that \e owns the object (or accessing the object in other ways) is - unsafe, unless you guarantee that the object isn't processing - events at that moment. Use QObject::deleteLater() instead, and a - \l{QEvent::DeferredDelete}{DeferredDelete} event will be posted, - which the event loop of the object's thread will eventually pick - up. By default, the thread that \e owns a QObject is the thread - that \e creates the QObject, but not after QObject::moveToThread() - has been called. - - If no event loop is running, events won't be delivered to the - object. For example, if you create a QTimer object in a thread but - never call \l{QThread::exec()}{exec()}, the QTimer will never emit - its \l{QTimer::timeout()}{timeout()} signal. Calling - \l{QObject::deleteLater()}{deleteLater()} won't work - either. (These restrictions apply to the main thread as well.) - - You can manually post events to any object in any thread at any - time using the thread-safe function - QCoreApplication::postEvent(). The events will automatically be - dispatched by the event loop of the thread where the object was - created. - - Event filters are supported in all threads, with the restriction - that the monitoring object must live in the same thread as the - monitored object. Similarly, QCoreApplication::sendEvent() - (unlike \l{QCoreApplication::postEvent()}{postEvent()}) can only - be used to dispatch events to objects living in the thread from - which the function is called. - - \section1 Accessing QObject Subclasses from Other Threads - - QObject and all of its subclasses are not thread-safe. This - includes the entire event delivery system. It is important to keep - in mind that the event loop may be delivering events to your - QObject subclass while you are accessing the object from another - thread. - - If you are calling a function on an QObject subclass that doesn't - live in the current thread and the object might receive events, - you must protect all access to your QObject subclass's internal - data with a mutex; otherwise, you may experience crashes or other - undesired behavior. - - Like other objects, QThread objects live in the thread where the - object was created -- \e not in the thread that is created when - QThread::run() is called. It is generally unsafe to provide slots - in your QThread subclass, unless you protect the member variables - with a mutex. - - On the other hand, you can safely emit signals from your - QThread::run() implementation, because signal emission is - thread-safe. - - \section1 Signals and Slots Across Threads - - Qt supports these signal-slot connection types: - - \list - - \li \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is - emitted in the thread which the receiving object has affinity then - the behavior is the same as the Direct Connection. Otherwise, - the behavior is the same as the Queued Connection." - - \li \l{Qt::DirectConnection}{Direct Connection} The slot is invoked - immediately, when the signal is emitted. The slot is executed - in the emitter's thread, which is not necessarily the - receiver's thread. - - \li \l{Qt::QueuedConnection}{Queued Connection} The slot is invoked - when control returns to the event loop of the receiver's - thread. The slot is executed in the receiver's thread. - - \li \l{Qt::BlockingQueuedConnection}{Blocking Queued Connection} - The slot is invoked as for the Queued Connection, except the - current thread blocks until the slot returns. \note Using this - type to connect objects in the same thread will cause deadlock. - - \li \l{Qt::UniqueConnection}{Unique Connection} The behavior is the - same as the Auto Connection, but the connection is made only if - it does not duplicate an existing connection. i.e., if the same - signal is already connected to the same slot for the same pair - of objects, then the connection is not made and connect() - returns false. - - \endlist - - The connection type can be specified by passing an additional - argument to \l{QObject::connect()}{connect()}. Be aware that - using direct connections when the sender and receiver live in - different threads is unsafe if an event loop is running in the - receiver's thread, for the same reason that calling any function - on an object living in another thread is unsafe. - - QObject::connect() itself is thread-safe. - - The \l{threads/mandelbrot}{Mandelbrot} example uses a queued - connection to communicate between a worker thread and the main - thread. To avoid freezing the main thread's event loop (and, as a - consequence, the application's user interface), all the - Mandelbrot fractal computation is done in a separate worker - thread. The thread emits a signal when it is done rendering the - fractal. - - Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune - Client} example uses a separate thread for communicating with - a TCP server asynchronously. -*/ - -/*! - \page threads-qtconcurrent.html - \title Concurrent Programming - - \previouspage Threads and QObjects - \contentspage Thread Support in Qt - \nextpage Thread-Support in Qt Modules - - \target qtconcurrent intro - - The QtConcurrent namespace provides high-level APIs that make it - possible to write multi-threaded programs without using low-level - threading primitives such as mutexes, read-write locks, wait - conditions, or semaphores. Programs written with QtConcurrent - automatically adjust the number of threads used according to the - number of processor cores available. This means that applications - written today will continue to scale when deployed on multi-core - systems in the future. - - QtConcurrent includes functional programming style APIs for - parallel list processing, including a MapReduce and FilterReduce - implementation for shared-memory (non-distributed) systems, and - classes for managing asynchronous computations in GUI - applications: - - \list - - \li QtConcurrent::map() applies a function to every item in a container, - modifying the items in-place. - - \li QtConcurrent::mapped() is like map(), except that it returns a new - container with the modifications. - - \li QtConcurrent::mappedReduced() is like mapped(), except that the - modified results are reduced or folded into a single result. - - \li QtConcurrent::filter() removes all items from a container based on the - result of a filter function. - - \li QtConcurrent::filtered() is like filter(), except that it returns a new - container with the filtered results. - - \li QtConcurrent::filteredReduced() is like filtered(), except that the - filtered results are reduced or folded into a single result. - - \li QtConcurrent::run() runs a function in another thread. - - \li QFuture represents the result of an asynchronous computation. - - \li QFutureIterator allows iterating through results available via QFuture. - - \li QFutureWatcher allows monitoring a QFuture using signals-and-slots. - - \li QFutureSynchronizer is a convenience class that automatically - synchronizes several QFutures. - - \endlist - - Qt Concurrent supports several STL-compatible container and iterator types, - but works best with Qt containers that have random-access iterators, such as - QList or QVector. The map and filter functions accept both containers and begin/end iterators. - - STL Iterator support overview: - - \table - \header - \li Iterator Type - \li Example classes - \li Support status - \row - \li Input Iterator - \li - \li Not Supported - \row - \li Output Iterator - \li - \li Not Supported - \row - \li Forward Iterator - \li std::slist - \li Supported - \row - \li Bidirectional Iterator - \li QLinkedList, std::list - \li Supported - \row - \li Random Access Iterator - \li QList, QVector, std::vector - \li Supported and Recommended - \endtable - - Random access iterators can be faster in cases where Qt Concurrent is iterating - over a large number of lightweight items, since they allow skipping to any point - in the container. In addition, using random access iterators allows Qt Concurrent - to provide progress information trough QFuture::progressValue() and QFutureWatcher:: - progressValueChanged(). - - The non in-place modifying functions such as mapped() and filtered() makes a - copy of the container when called. If you are using STL containers this copy operation - might take some time, in this case we recommend specifying the begin and end iterators - for the container instead. -*/ - -/*! - \page threads-modules.html - \title Thread-Support in Qt Modules - - \previouspage Concurrent Programming - \contentspage Thread Support in Qt - - \section1 Threads and the SQL Module - - A connection can only be used from within the thread that created it. - Moving connections between threads or creating queries from a different - thread is not supported. - - In addition, the third party libraries used by the QSqlDrivers can impose - further restrictions on using the SQL Module in a multithreaded program. - Consult the manual of your database client for more information - - \section1 Painting in Threads - - QPainter can be used in a thread to paint onto QImage, QPrinter, and - QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not - supported. On Mac OS X the automatic progress dialog will not be - displayed if you are printing from outside the GUI thread. - - Any number of threads can paint at any given time, however only - one thread at a time can paint on a given paint device. In other - words, two threads can paint at the same time if each paints onto - separate QImages, but the two threads cannot paint onto the same - QImage at the same time. - - Note that on X11 systems without FontConfig support, Qt cannot - render text outside of the GUI thread. You can use the - QFontDatabase::supportsThreadedFontRendering() function to detect - whether or not font rendering can be used outside the GUI thread. - - \section1 Threads and Rich Text Processing - - The QTextDocument, QTextCursor, and \link richtext.html all - related classes\endlink are reentrant. - - Note that a QTextDocument instance created in the GUI thread may - contain QPixmap image resources. Use QTextDocument::clone() to - create a copy of the document, and pass the copy to another thread for - further processing (such as printing). - - \section1 Threads and the SVG module - - The QSvgGenerator and QSvgRenderer classes in the QtSvg module - are reentrant. - - \section1 Threads and Implicitly Shared Classes - - Qt uses an optimization called \l{implicit sharing} for many of - its value class, notably QImage and QString. Beginning with Qt 4, - implicit shared classes can safely be copied across threads, like - any other value classes. They are fully - \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing - is really \e implicit. - - In many people's minds, implicit sharing and multithreading are - incompatible concepts, because of the way the reference counting - is typically done. Qt, however, uses atomic reference counting to - ensure the integrity of the shared data, avoiding potential - corruption of the reference counter. - - Note that atomic reference counting does not guarantee - \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used - when sharing an instance of an implicitly shared class between - threads. This is the same requirement placed on all - \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference - counting does, however, guarantee that a thread working on its - own, local instance of an implicitly shared class is safe. We - recommend using \l{Signals and Slots Across Threads}{signals and - slots} to pass data between threads, as this can be done without - the need for any explicit locking. - - To sum it up, implicitly shared classes in Qt 4 are really \e - implicitly shared. Even in multithreaded applications, you can - safely use them as if they were plain, non-shared, reentrant - value-based classes. -*/ diff --git a/doc/src/images/abstract-connections.png b/doc/src/images/abstract-connections.png Binary files differdeleted file mode 100644 index 18d2f4e3b7..0000000000 --- a/doc/src/images/abstract-connections.png +++ /dev/null diff --git a/doc/src/images/brush-styles.png b/doc/src/images/brush-styles.png Binary files differdeleted file mode 100644 index eecb006af1..0000000000 --- a/doc/src/images/brush-styles.png +++ /dev/null diff --git a/doc/src/images/cursor-arrow.png b/doc/src/images/cursor-arrow.png Binary files differdeleted file mode 100644 index a69ef4eb61..0000000000 --- a/doc/src/images/cursor-arrow.png +++ /dev/null diff --git a/doc/src/images/cursor-busy.png b/doc/src/images/cursor-busy.png Binary files differdeleted file mode 100644 index 53717e4992..0000000000 --- a/doc/src/images/cursor-busy.png +++ /dev/null diff --git a/doc/src/images/cursor-closedhand.png b/doc/src/images/cursor-closedhand.png Binary files differdeleted file mode 100644 index b78dd1dac5..0000000000 --- a/doc/src/images/cursor-closedhand.png +++ /dev/null diff --git a/doc/src/images/cursor-cross.png b/doc/src/images/cursor-cross.png Binary files differdeleted file mode 100644 index fe38e74480..0000000000 --- a/doc/src/images/cursor-cross.png +++ /dev/null diff --git a/doc/src/images/cursor-forbidden.png b/doc/src/images/cursor-forbidden.png Binary files differdeleted file mode 100644 index 2b08c4e2a3..0000000000 --- a/doc/src/images/cursor-forbidden.png +++ /dev/null diff --git a/doc/src/images/cursor-hand.png b/doc/src/images/cursor-hand.png Binary files differdeleted file mode 100644 index d2004aefa7..0000000000 --- a/doc/src/images/cursor-hand.png +++ /dev/null diff --git a/doc/src/images/cursor-hsplit.png b/doc/src/images/cursor-hsplit.png Binary files differdeleted file mode 100644 index a5667e3ffb..0000000000 --- a/doc/src/images/cursor-hsplit.png +++ /dev/null diff --git a/doc/src/images/cursor-ibeam.png b/doc/src/images/cursor-ibeam.png Binary files differdeleted file mode 100644 index 097fc5fa72..0000000000 --- a/doc/src/images/cursor-ibeam.png +++ /dev/null diff --git a/doc/src/images/cursor-openhand.png b/doc/src/images/cursor-openhand.png Binary files differdeleted file mode 100644 index 9181c859ed..0000000000 --- a/doc/src/images/cursor-openhand.png +++ /dev/null diff --git a/doc/src/images/cursor-sizeall.png b/doc/src/images/cursor-sizeall.png Binary files differdeleted file mode 100644 index 69f13eb347..0000000000 --- a/doc/src/images/cursor-sizeall.png +++ /dev/null diff --git a/doc/src/images/cursor-sizeb.png b/doc/src/images/cursor-sizeb.png Binary files differdeleted file mode 100644 index f37d7b91e8..0000000000 --- a/doc/src/images/cursor-sizeb.png +++ /dev/null diff --git a/doc/src/images/cursor-sizef.png b/doc/src/images/cursor-sizef.png Binary files differdeleted file mode 100644 index 3b127a05d3..0000000000 --- a/doc/src/images/cursor-sizef.png +++ /dev/null diff --git a/doc/src/images/cursor-sizeh.png b/doc/src/images/cursor-sizeh.png Binary files differdeleted file mode 100644 index a9f40cbc3d..0000000000 --- a/doc/src/images/cursor-sizeh.png +++ /dev/null diff --git a/doc/src/images/cursor-sizev.png b/doc/src/images/cursor-sizev.png Binary files differdeleted file mode 100644 index 1edbab27a5..0000000000 --- a/doc/src/images/cursor-sizev.png +++ /dev/null diff --git a/doc/src/images/cursor-uparrow.png b/doc/src/images/cursor-uparrow.png Binary files differdeleted file mode 100644 index d3e70ef4c2..0000000000 --- a/doc/src/images/cursor-uparrow.png +++ /dev/null diff --git a/doc/src/images/cursor-vsplit.png b/doc/src/images/cursor-vsplit.png Binary files differdeleted file mode 100644 index 1beda2570e..0000000000 --- a/doc/src/images/cursor-vsplit.png +++ /dev/null diff --git a/doc/src/images/cursor-wait.png b/doc/src/images/cursor-wait.png Binary files differdeleted file mode 100644 index 69056c479e..0000000000 --- a/doc/src/images/cursor-wait.png +++ /dev/null diff --git a/doc/src/images/cursor-whatsthis.png b/doc/src/images/cursor-whatsthis.png Binary files differdeleted file mode 100644 index b47601c378..0000000000 --- a/doc/src/images/cursor-whatsthis.png +++ /dev/null diff --git a/doc/src/images/javaiterators1.png b/doc/src/images/javaiterators1.png Binary files differdeleted file mode 100644 index 7dfcde0188..0000000000 --- a/doc/src/images/javaiterators1.png +++ /dev/null diff --git a/doc/src/images/javaiterators2.png b/doc/src/images/javaiterators2.png Binary files differdeleted file mode 100644 index c04e3ccf88..0000000000 --- a/doc/src/images/javaiterators2.png +++ /dev/null diff --git a/doc/src/images/modelindex-no-parent.png b/doc/src/images/modelindex-no-parent.png Binary files differdeleted file mode 100644 index 9c6258e5d1..0000000000 --- a/doc/src/images/modelindex-no-parent.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-append-columns.png b/doc/src/images/modelview-begin-append-columns.png Binary files differdeleted file mode 100644 index 8d13b178d8..0000000000 --- a/doc/src/images/modelview-begin-append-columns.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-append-rows.png b/doc/src/images/modelview-begin-append-rows.png Binary files differdeleted file mode 100644 index 50d04c3e67..0000000000 --- a/doc/src/images/modelview-begin-append-rows.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-insert-columns.png b/doc/src/images/modelview-begin-insert-columns.png Binary files differdeleted file mode 100644 index 30eeb8280e..0000000000 --- a/doc/src/images/modelview-begin-insert-columns.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-insert-rows.png b/doc/src/images/modelview-begin-insert-rows.png Binary files differdeleted file mode 100644 index b4d6eda57d..0000000000 --- a/doc/src/images/modelview-begin-insert-rows.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-remove-columns.png b/doc/src/images/modelview-begin-remove-columns.png Binary files differdeleted file mode 100644 index aee60e01ec..0000000000 --- a/doc/src/images/modelview-begin-remove-columns.png +++ /dev/null diff --git a/doc/src/images/modelview-begin-remove-rows.png b/doc/src/images/modelview-begin-remove-rows.png Binary files differdeleted file mode 100644 index 8e9518718e..0000000000 --- a/doc/src/images/modelview-begin-remove-rows.png +++ /dev/null diff --git a/doc/src/images/modelview-move-rows-1.png b/doc/src/images/modelview-move-rows-1.png Binary files differdeleted file mode 100644 index b629a72dd4..0000000000 --- a/doc/src/images/modelview-move-rows-1.png +++ /dev/null diff --git a/doc/src/images/modelview-move-rows-2.png b/doc/src/images/modelview-move-rows-2.png Binary files differdeleted file mode 100644 index 674ca18f78..0000000000 --- a/doc/src/images/modelview-move-rows-2.png +++ /dev/null diff --git a/doc/src/images/modelview-move-rows-3.png b/doc/src/images/modelview-move-rows-3.png Binary files differdeleted file mode 100644 index 5445dd599c..0000000000 --- a/doc/src/images/modelview-move-rows-3.png +++ /dev/null diff --git a/doc/src/images/modelview-move-rows-4.png b/doc/src/images/modelview-move-rows-4.png Binary files differdeleted file mode 100644 index ecd65bac6c..0000000000 --- a/doc/src/images/modelview-move-rows-4.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inback.png b/doc/src/images/qeasingcurve-inback.png Binary files differdeleted file mode 100644 index 0064cb341c..0000000000 --- a/doc/src/images/qeasingcurve-inback.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inbounce.png b/doc/src/images/qeasingcurve-inbounce.png Binary files differdeleted file mode 100644 index eaa64f8c41..0000000000 --- a/doc/src/images/qeasingcurve-inbounce.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-incirc.png b/doc/src/images/qeasingcurve-incirc.png Binary files differdeleted file mode 100644 index 7bd0f09d41..0000000000 --- a/doc/src/images/qeasingcurve-incirc.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-incubic.png b/doc/src/images/qeasingcurve-incubic.png Binary files differdeleted file mode 100644 index 1ac9eafba5..0000000000 --- a/doc/src/images/qeasingcurve-incubic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inelastic.png b/doc/src/images/qeasingcurve-inelastic.png Binary files differdeleted file mode 100644 index f976b5a576..0000000000 --- a/doc/src/images/qeasingcurve-inelastic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inexpo.png b/doc/src/images/qeasingcurve-inexpo.png Binary files differdeleted file mode 100644 index 1af3652985..0000000000 --- a/doc/src/images/qeasingcurve-inexpo.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutback.png b/doc/src/images/qeasingcurve-inoutback.png Binary files differdeleted file mode 100644 index 480bc051ef..0000000000 --- a/doc/src/images/qeasingcurve-inoutback.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutbounce.png b/doc/src/images/qeasingcurve-inoutbounce.png Binary files differdeleted file mode 100644 index de623091cf..0000000000 --- a/doc/src/images/qeasingcurve-inoutbounce.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutcirc.png b/doc/src/images/qeasingcurve-inoutcirc.png Binary files differdeleted file mode 100644 index b4be8ac21e..0000000000 --- a/doc/src/images/qeasingcurve-inoutcirc.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutcubic.png b/doc/src/images/qeasingcurve-inoutcubic.png Binary files differdeleted file mode 100644 index 49dfbef1b6..0000000000 --- a/doc/src/images/qeasingcurve-inoutcubic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutelastic.png b/doc/src/images/qeasingcurve-inoutelastic.png Binary files differdeleted file mode 100644 index 5b0e54a019..0000000000 --- a/doc/src/images/qeasingcurve-inoutelastic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutexpo.png b/doc/src/images/qeasingcurve-inoutexpo.png Binary files differdeleted file mode 100644 index 776984a113..0000000000 --- a/doc/src/images/qeasingcurve-inoutexpo.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutquad.png b/doc/src/images/qeasingcurve-inoutquad.png Binary files differdeleted file mode 100644 index 264333085a..0000000000 --- a/doc/src/images/qeasingcurve-inoutquad.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutquart.png b/doc/src/images/qeasingcurve-inoutquart.png Binary files differdeleted file mode 100644 index 31fc0c8852..0000000000 --- a/doc/src/images/qeasingcurve-inoutquart.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutquint.png b/doc/src/images/qeasingcurve-inoutquint.png Binary files differdeleted file mode 100644 index 4d7a745be6..0000000000 --- a/doc/src/images/qeasingcurve-inoutquint.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inoutsine.png b/doc/src/images/qeasingcurve-inoutsine.png Binary files differdeleted file mode 100644 index 012ff751c9..0000000000 --- a/doc/src/images/qeasingcurve-inoutsine.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inquad.png b/doc/src/images/qeasingcurve-inquad.png Binary files differdeleted file mode 100644 index e697c208a5..0000000000 --- a/doc/src/images/qeasingcurve-inquad.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inquart.png b/doc/src/images/qeasingcurve-inquart.png Binary files differdeleted file mode 100644 index 6d6517551e..0000000000 --- a/doc/src/images/qeasingcurve-inquart.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-inquint.png b/doc/src/images/qeasingcurve-inquint.png Binary files differdeleted file mode 100644 index faaaea71fd..0000000000 --- a/doc/src/images/qeasingcurve-inquint.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-insine.png b/doc/src/images/qeasingcurve-insine.png Binary files differdeleted file mode 100644 index 09449034b5..0000000000 --- a/doc/src/images/qeasingcurve-insine.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-linear.png b/doc/src/images/qeasingcurve-linear.png Binary files differdeleted file mode 100644 index fb3aaf3541..0000000000 --- a/doc/src/images/qeasingcurve-linear.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outback.png b/doc/src/images/qeasingcurve-outback.png Binary files differdeleted file mode 100644 index 83b3fa233f..0000000000 --- a/doc/src/images/qeasingcurve-outback.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outbounce.png b/doc/src/images/qeasingcurve-outbounce.png Binary files differdeleted file mode 100644 index 27ac979642..0000000000 --- a/doc/src/images/qeasingcurve-outbounce.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outcirc.png b/doc/src/images/qeasingcurve-outcirc.png Binary files differdeleted file mode 100644 index 00193700e0..0000000000 --- a/doc/src/images/qeasingcurve-outcirc.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outcubic.png b/doc/src/images/qeasingcurve-outcubic.png Binary files differdeleted file mode 100644 index 45477c045a..0000000000 --- a/doc/src/images/qeasingcurve-outcubic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outelastic.png b/doc/src/images/qeasingcurve-outelastic.png Binary files differdeleted file mode 100644 index 1d407ed845..0000000000 --- a/doc/src/images/qeasingcurve-outelastic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outexpo.png b/doc/src/images/qeasingcurve-outexpo.png Binary files differdeleted file mode 100644 index 56851554ed..0000000000 --- a/doc/src/images/qeasingcurve-outexpo.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinback.png b/doc/src/images/qeasingcurve-outinback.png Binary files differdeleted file mode 100644 index 4700ab02e8..0000000000 --- a/doc/src/images/qeasingcurve-outinback.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinbounce.png b/doc/src/images/qeasingcurve-outinbounce.png Binary files differdeleted file mode 100644 index 12cc1a8bd4..0000000000 --- a/doc/src/images/qeasingcurve-outinbounce.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outincirc.png b/doc/src/images/qeasingcurve-outincirc.png Binary files differdeleted file mode 100644 index c8a5c86a23..0000000000 --- a/doc/src/images/qeasingcurve-outincirc.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outincubic.png b/doc/src/images/qeasingcurve-outincubic.png Binary files differdeleted file mode 100644 index 42af870d99..0000000000 --- a/doc/src/images/qeasingcurve-outincubic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinelastic.png b/doc/src/images/qeasingcurve-outinelastic.png Binary files differdeleted file mode 100644 index 308be57900..0000000000 --- a/doc/src/images/qeasingcurve-outinelastic.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinexpo.png b/doc/src/images/qeasingcurve-outinexpo.png Binary files differdeleted file mode 100644 index 0692baa264..0000000000 --- a/doc/src/images/qeasingcurve-outinexpo.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinquad.png b/doc/src/images/qeasingcurve-outinquad.png Binary files differdeleted file mode 100644 index 9e3cd83896..0000000000 --- a/doc/src/images/qeasingcurve-outinquad.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinquart.png b/doc/src/images/qeasingcurve-outinquart.png Binary files differdeleted file mode 100644 index 9a3c16f122..0000000000 --- a/doc/src/images/qeasingcurve-outinquart.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinquint.png b/doc/src/images/qeasingcurve-outinquint.png Binary files differdeleted file mode 100644 index add9feb26f..0000000000 --- a/doc/src/images/qeasingcurve-outinquint.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outinsine.png b/doc/src/images/qeasingcurve-outinsine.png Binary files differdeleted file mode 100644 index 4bc2aaf9e3..0000000000 --- a/doc/src/images/qeasingcurve-outinsine.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outquad.png b/doc/src/images/qeasingcurve-outquad.png Binary files differdeleted file mode 100644 index c505ff9e7b..0000000000 --- a/doc/src/images/qeasingcurve-outquad.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outquart.png b/doc/src/images/qeasingcurve-outquart.png Binary files differdeleted file mode 100644 index 6eac058d18..0000000000 --- a/doc/src/images/qeasingcurve-outquart.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outquint.png b/doc/src/images/qeasingcurve-outquint.png Binary files differdeleted file mode 100644 index 77a9ad417f..0000000000 --- a/doc/src/images/qeasingcurve-outquint.png +++ /dev/null diff --git a/doc/src/images/qeasingcurve-outsine.png b/doc/src/images/qeasingcurve-outsine.png Binary files differdeleted file mode 100644 index d135b2f98c..0000000000 --- a/doc/src/images/qeasingcurve-outsine.png +++ /dev/null diff --git a/doc/src/images/qimage-scaling.png b/doc/src/images/qimage-scaling.png Binary files differdeleted file mode 100644 index fcd71448f0..0000000000 --- a/doc/src/images/qimage-scaling.png +++ /dev/null diff --git a/doc/src/images/qline-coordinates.png b/doc/src/images/qline-coordinates.png Binary files differdeleted file mode 100644 index ac4fb980ac..0000000000 --- a/doc/src/images/qline-coordinates.png +++ /dev/null diff --git a/doc/src/images/qline-point.png b/doc/src/images/qline-point.png Binary files differdeleted file mode 100644 index 3bc3664a20..0000000000 --- a/doc/src/images/qline-point.png +++ /dev/null diff --git a/doc/src/images/qlinef-angle-identicaldirection.png b/doc/src/images/qlinef-angle-identicaldirection.png Binary files differdeleted file mode 100644 index 18d632321b..0000000000 --- a/doc/src/images/qlinef-angle-identicaldirection.png +++ /dev/null diff --git a/doc/src/images/qlinef-angle-oppositedirection.png b/doc/src/images/qlinef-angle-oppositedirection.png Binary files differdeleted file mode 100644 index bf52cfe011..0000000000 --- a/doc/src/images/qlinef-angle-oppositedirection.png +++ /dev/null diff --git a/doc/src/images/qlinef-bounded.png b/doc/src/images/qlinef-bounded.png Binary files differdeleted file mode 100644 index 136dd50304..0000000000 --- a/doc/src/images/qlinef-bounded.png +++ /dev/null diff --git a/doc/src/images/qlinef-normalvector.png b/doc/src/images/qlinef-normalvector.png Binary files differdeleted file mode 100644 index b7d944f32f..0000000000 --- a/doc/src/images/qlinef-normalvector.png +++ /dev/null diff --git a/doc/src/images/qlinef-unbounded.png b/doc/src/images/qlinef-unbounded.png Binary files differdeleted file mode 100644 index 75ead98ff2..0000000000 --- a/doc/src/images/qlinef-unbounded.png +++ /dev/null diff --git a/doc/src/images/qpen-bevel.png b/doc/src/images/qpen-bevel.png Binary files differdeleted file mode 100644 index 8a30779e3b..0000000000 --- a/doc/src/images/qpen-bevel.png +++ /dev/null diff --git a/doc/src/images/qpen-custom.png b/doc/src/images/qpen-custom.png Binary files differdeleted file mode 100644 index a2a038abe0..0000000000 --- a/doc/src/images/qpen-custom.png +++ /dev/null diff --git a/doc/src/images/qpen-dash.png b/doc/src/images/qpen-dash.png Binary files differdeleted file mode 100644 index 67082c3758..0000000000 --- a/doc/src/images/qpen-dash.png +++ /dev/null diff --git a/doc/src/images/qpen-dashdot.png b/doc/src/images/qpen-dashdot.png Binary files differdeleted file mode 100644 index 64b384660f..0000000000 --- a/doc/src/images/qpen-dashdot.png +++ /dev/null diff --git a/doc/src/images/qpen-dashdotdot.png b/doc/src/images/qpen-dashdotdot.png Binary files differdeleted file mode 100644 index ff1b2e69cd..0000000000 --- a/doc/src/images/qpen-dashdotdot.png +++ /dev/null diff --git a/doc/src/images/qpen-dot.png b/doc/src/images/qpen-dot.png Binary files differdeleted file mode 100644 index 54e81c9469..0000000000 --- a/doc/src/images/qpen-dot.png +++ /dev/null diff --git a/doc/src/images/qpen-flat.png b/doc/src/images/qpen-flat.png Binary files differdeleted file mode 100644 index 06e2195f73..0000000000 --- a/doc/src/images/qpen-flat.png +++ /dev/null diff --git a/doc/src/images/qpen-miter.png b/doc/src/images/qpen-miter.png Binary files differdeleted file mode 100644 index 025e003979..0000000000 --- a/doc/src/images/qpen-miter.png +++ /dev/null diff --git a/doc/src/images/qpen-roundcap.png b/doc/src/images/qpen-roundcap.png Binary files differdeleted file mode 100644 index 77b22b2bab..0000000000 --- a/doc/src/images/qpen-roundcap.png +++ /dev/null diff --git a/doc/src/images/qpen-roundjoin.png b/doc/src/images/qpen-roundjoin.png Binary files differdeleted file mode 100644 index 155e2aa8cc..0000000000 --- a/doc/src/images/qpen-roundjoin.png +++ /dev/null diff --git a/doc/src/images/qpen-solid.png b/doc/src/images/qpen-solid.png Binary files differdeleted file mode 100644 index e042b18017..0000000000 --- a/doc/src/images/qpen-solid.png +++ /dev/null diff --git a/doc/src/images/qpen-square.png b/doc/src/images/qpen-square.png Binary files differdeleted file mode 100644 index ebc5d1e329..0000000000 --- a/doc/src/images/qpen-square.png +++ /dev/null diff --git a/doc/src/images/qrect-coordinates.png b/doc/src/images/qrect-coordinates.png Binary files differdeleted file mode 100644 index 2a2dae2d6c..0000000000 --- a/doc/src/images/qrect-coordinates.png +++ /dev/null diff --git a/doc/src/images/qrect-diagram-one.png b/doc/src/images/qrect-diagram-one.png Binary files differdeleted file mode 100644 index a893be277a..0000000000 --- a/doc/src/images/qrect-diagram-one.png +++ /dev/null diff --git a/doc/src/images/qrect-diagram-three.png b/doc/src/images/qrect-diagram-three.png Binary files differdeleted file mode 100644 index 84fb35be6c..0000000000 --- a/doc/src/images/qrect-diagram-three.png +++ /dev/null diff --git a/doc/src/images/qrect-diagram-two.png b/doc/src/images/qrect-diagram-two.png Binary files differdeleted file mode 100644 index e19caacc34..0000000000 --- a/doc/src/images/qrect-diagram-two.png +++ /dev/null diff --git a/doc/src/images/qrect-diagram-zero.png b/doc/src/images/qrect-diagram-zero.png Binary files differdeleted file mode 100644 index 90e3db0c41..0000000000 --- a/doc/src/images/qrect-diagram-zero.png +++ /dev/null diff --git a/doc/src/images/qrect-intersect.png b/doc/src/images/qrect-intersect.png Binary files differdeleted file mode 100644 index db68cd53ad..0000000000 --- a/doc/src/images/qrect-intersect.png +++ /dev/null diff --git a/doc/src/images/qrect-unite.png b/doc/src/images/qrect-unite.png Binary files differdeleted file mode 100644 index 3f6239f405..0000000000 --- a/doc/src/images/qrect-unite.png +++ /dev/null diff --git a/doc/src/images/qrectf-coordinates.png b/doc/src/images/qrectf-coordinates.png Binary files differdeleted file mode 100644 index ccc6d82063..0000000000 --- a/doc/src/images/qrectf-coordinates.png +++ /dev/null diff --git a/doc/src/images/qrectf-diagram-one.png b/doc/src/images/qrectf-diagram-one.png Binary files differdeleted file mode 100644 index 842289ce07..0000000000 --- a/doc/src/images/qrectf-diagram-one.png +++ /dev/null diff --git a/doc/src/images/qrectf-diagram-three.png b/doc/src/images/qrectf-diagram-three.png Binary files differdeleted file mode 100644 index e05106a7e1..0000000000 --- a/doc/src/images/qrectf-diagram-three.png +++ /dev/null diff --git a/doc/src/images/qrectf-diagram-two.png b/doc/src/images/qrectf-diagram-two.png Binary files differdeleted file mode 100644 index 192d00df79..0000000000 --- a/doc/src/images/qrectf-diagram-two.png +++ /dev/null diff --git a/doc/src/images/qsortfilterproxymodel-sorting.png b/doc/src/images/qsortfilterproxymodel-sorting.png Binary files differdeleted file mode 100644 index de99d41272..0000000000 --- a/doc/src/images/qsortfilterproxymodel-sorting.png +++ /dev/null diff --git a/doc/src/images/qurl-authority.png b/doc/src/images/qurl-authority.png Binary files differdeleted file mode 100644 index 54de2a792e..0000000000 --- a/doc/src/images/qurl-authority.png +++ /dev/null diff --git a/doc/src/images/qurl-authority2.png b/doc/src/images/qurl-authority2.png Binary files differdeleted file mode 100644 index fe8d4d87b2..0000000000 --- a/doc/src/images/qurl-authority2.png +++ /dev/null diff --git a/doc/src/images/qurl-authority3.png b/doc/src/images/qurl-authority3.png Binary files differdeleted file mode 100644 index 242063e935..0000000000 --- a/doc/src/images/qurl-authority3.png +++ /dev/null diff --git a/doc/src/images/qurl-fragment.png b/doc/src/images/qurl-fragment.png Binary files differdeleted file mode 100644 index e93a252e7a..0000000000 --- a/doc/src/images/qurl-fragment.png +++ /dev/null diff --git a/doc/src/images/qurl-ftppath.png b/doc/src/images/qurl-ftppath.png Binary files differdeleted file mode 100644 index d88df4922b..0000000000 --- a/doc/src/images/qurl-ftppath.png +++ /dev/null diff --git a/doc/src/images/qurl-mailtopath.png b/doc/src/images/qurl-mailtopath.png Binary files differdeleted file mode 100644 index 34ec153b74..0000000000 --- a/doc/src/images/qurl-mailtopath.png +++ /dev/null diff --git a/doc/src/images/qurl-querystring.png b/doc/src/images/qurl-querystring.png Binary files differdeleted file mode 100644 index 7c3309a5ac..0000000000 --- a/doc/src/images/qurl-querystring.png +++ /dev/null diff --git a/doc/src/images/stliterators1.png b/doc/src/images/stliterators1.png Binary files differdeleted file mode 100644 index 6d71e4712f..0000000000 --- a/doc/src/images/stliterators1.png +++ /dev/null diff --git a/doc/src/images/thread_clock.png b/doc/src/images/thread_clock.png Binary files differdeleted file mode 100644 index b8a8aa0a39..0000000000 --- a/doc/src/images/thread_clock.png +++ /dev/null diff --git a/doc/src/images/threadsandobjects.png b/doc/src/images/threadsandobjects.png Binary files differdeleted file mode 100644 index 8357d2532a..0000000000 --- a/doc/src/images/threadsandobjects.png +++ /dev/null diff --git a/doc/src/images/threadvisual-example.png b/doc/src/images/threadvisual-example.png Binary files differdeleted file mode 100644 index 2a49874719..0000000000 --- a/doc/src/images/threadvisual-example.png +++ /dev/null diff --git a/doc/src/network/files-and-resources/datastreamformat.qdoc b/doc/src/network/files-and-resources/datastreamformat.qdoc deleted file mode 100644 index 8ff31371a2..0000000000 --- a/doc/src/network/files-and-resources/datastreamformat.qdoc +++ /dev/null @@ -1,373 +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$ -** -****************************************************************************/ - -/*! - \page datastreamformat.html - \title Serializing Qt Data Types - \ingroup qt-network - \brief Representations of data types that can be serialized by QDataStream. - - The \l QDataStream allows you to serialize some of the Qt data types. - The table below lists the data types that QDataStream can serialize - and how they are represented. The format described below is - \l{QDataStream::setVersion()}{version 12}. - - It is always best to cast integers to a Qt integer type, such as - qint16 or quint32, when reading and writing. This ensures that - you always know exactly what size integers you are reading and - writing, no matter what the underlying platform and architecture - the application happens to be running on. - - \table - \row \li bool - \li \list - \li boolean - \endlist - \row \li qint8 - \li \list - \li signed byte - \endlist - \row \li qint16 - \li \list - \li signed 16-bit integer - \endlist - \row \li qint32 - \li \list - \li signed 32-bit integer - \endlist - \row \li qint64 - \li \list - \li signed 64-bit integer - \endlist - \row \li quint8 - \li \list - \li unsigned byte - \endlist - \row \li quint16 - \li \list - \li unsigned 16-bit integer - \endlist - \row \li quint32 - \li \list - \li unsigned 32-bit integer - \endlist - \row \li quint64 - \li \list - \li unsigned 64-bit integer - \endlist - \row \li \c float - \li \list - \li 32-bit floating point number using the standard IEEE 754 format - \endlist - \row \li \c double - \li \list - \li 64-bit floating point number using the standard IEEE 754 format - \endlist - \row \li \c {const char *} - \li \list - \li The string length (quint32) - \li The string bytes, excluding the terminating 0 - \endlist - \row \li QBitArray - \li \list - \li The array size (quint32) - \li The array bits, i.e. (size + 7)/8 bytes - \endlist - \row \li QBrush - \li \list - \li The brush style (quint8) - \li The brush color (QColor) - \li If style is CustomPattern, the brush pixmap (QPixmap) - \endlist - \row \li QByteArray - \li \list - \li If the byte array is null: 0xFFFFFFFF (quint32) - \li Otherwise: the array size (quint32) followed by the array bytes, i.e. size bytes - \endlist - \row \li \l QColor - \li \list - \li Color spec (qint8) - \li Alpha value (quint16) - \li Red value (quint16) - \li Green value (quint16) - \li Blue value (quint16) - \li Pad value (quint16) - \endlist - \row \li QCursor - \li \list - \li Shape ID (qint16) - \li If shape is BitmapCursor: The bitmap (QPixmap), mask (QPixmap), and hot spot (QPoint) - \endlist - \row \li QDate - \li \list - \li Julian day (quint32) - \endlist - \row \li QDateTime - \li \list - \li Date (QDate) - \li Time (QTime) - \li 0 for Qt::LocalTime, 1 for Qt::UTC (quint8) - \endlist - \row \li QEasingCurve - \li \list - \li type (quint8) - \li func (quint64) - \li hasConfig (bool) - \li If hasConfig is true then these fields follow: - \li list - \li period (double) - \li amplitude (double) - \li overshoot (double) - \endlist - \row \li QFont - \li \list - \li The family (QString) - \li The point size (qint16) - \li The style hint (quint8) - \li The char set (quint8) - \li The weight (quint8) - \li The font bits (quint8) - \endlist - \row \li QHash<Key, T> - \li \list - \li The number of items (quint32) - \li For all items, the key (Key) and value (T) - \endlist - \row \li QIcon - \li \list - \li The number of pixmap entries (quint32) - \li For all pixmap entries: - \list - \li The pixmap (QPixmap) - \li The file name (QString) - \li The pixmap size (QSize) - \li The \l{QIcon::Mode}{mode} (quint32) - \li The \l{QIcon::State}{state} (quint32) - \endlist - \endlist - \row \li QImage - \li \list - \li If the image is null a "null image" marker is saved; - otherwise the image is saved in PNG or BMP format (depending - on the stream version). If you want control of the format, - stream the image into a QBuffer (using QImageIO) and stream - that. - \endlist - \row \li QKeySequence - \li \list - \li A QList<int>, where each integer is a key in the key sequence - \endlist - \row \li QLinkedList<T> - \li \list - \li The number of items (quint32) - \li The items (T) - \endlist - \row \li QList<T> - \li \list - \li The number of items (quint32) - \li The items (T) - \endlist - \row \li QMap<Key, T> - \li \list - \li The number of items (quint32) - \li For all items, the key (Key) and value (T) - \endlist - \row \li QMargins - \li \list - \li left (int) - \li top (int) - \li right (int) - \li bottom (int) - \endlist - \row \li QMatrix - \li \list - \li m11 (double) - \li m12 (double) - \li m21 (double) - \li m22 (double) - \li dx (double) - \li dy (double) - \endlist - \row \li QMatrix4x4 - \li \list - \li m11 (double) - \li m12 (double) - \li m13 (double) - \li m14 (double) - \li m21 (double) - \li m22 (double) - \li m23 (double) - \li m24 (double) - \li m31 (double) - \li m32 (double) - \li m33 (double) - \li m34 (double) - \li m41 (double) - \li m42 (double) - \li m43 (double) - \li m44 (double) - \endlist - \row \li QPair<T1, T2> - \li \list - \li first (T1) - \li second (T2) - \endlist - \row \li QPalette - \li The disabled, active, and inactive color groups, each of which consists - of the following: - \list - \li foreground (QBrush) - \li button (QBrush) - \li light (QBrush) - \li midlight (QBrush) - \li dark (QBrush) - \li mid (QBrush) - \li text (QBrush) - \li brightText (QBrush) - \li buttonText (QBrush) - \li base (QBrush) - \li background (QBrush) - \li shadow (QBrush) - \li highlight (QBrush) - \li highlightedText (QBrush) - \li link (QBrush) - \li linkVisited (QBrush) - \endlist - \row \li QPen - \li \list - \li The pen styles (quint8) - \li The pen width (quint16) - \li The pen color (QColor) - \endlist - \row \li QPicture - \li \list - \li The size of the picture data (quint32) - \li The raw bytes of picture data (char) - \endlist - \row \li QPixmap - \li \list - \li Save it as a PNG image. - \endlist - \row \li QPoint - \li \list - \li The x coordinate (qint32) - \li The y coordinate (qint32) - \endlist - \row \li QQuaternion - \li \list - \li The scalar component (double) - \li The x coordinate (double) - \li The y coordinate (double) - \li The z coordinate (double) - \endlist - \row \li QRect - \li \list - \li left (qint32) - \li top (qint32) - \li right (qint32) - \li bottom (qint32) - \endlist - \row \li QRegExp - \li \list - \li The regexp pattern (QString) - \li Case sensitivity (quint8) - \li Regular expression syntax (quint8) - \li Minimal matching (quint8) - \endlist - \row \li QRegularExpression - \li \list - \li The regular expression pattern (QString) - \li The pattern options (quint32) - \endlist - \row \li QRegion - \li \list - \li The size of the data, i.e. 8 + 16 * (number of rectangles) (quint32) - \li 10 (qint32) - \li The number of rectangles (quint32) - \li The rectangles in sequential order (QRect) - \endlist - \row \li QSize - \li \list - \li width (qint32) - \li height (qint32) - \endlist - \row \li QString - \li \list - \li If the string is null: 0xFFFFFFFF (quint32) - \li Otherwise: The string length in bytes (quint32) followed by the data in UTF-16 - \endlist - \row \li QTime - \li \list - \li Milliseconds since midnight (quint32) - \endlist - \row \li QTransform - \li \list - \li m11 (double) - \li m12 (double) - \li m13 (double) - \li m21 (double) - \li m22 (double) - \li m23 (double) - \li m31 (double) - \li m32 (double) - \li m33 (double) - \endlist - \row \li QUrl - \li \list - \li Holds an URL (QString) - \endlist - \row \li QVariant - \li \list - \li The type of the data (quint32) - \li The null flag (qint8) - \li The data of the specified type - \endlist - \row \li QVector2D - \li \list - \li the x coordinate (double) - \li the y coordinate (double) - \endlist - \row \li QVector3D - \li \list - \li the x coordinate (double) - \li the y coordinate (double) - \li the z coordinate (double) - \endlist - \row \li QVector4D - \li \list - \li the x coordinate (double) - \li the y coordinate (double) - \li the z coordinate (double) - \li the w coordinate (double) - \endlist - \row \li QVector<T> - \li \list - \li The number of items (quint32) - \li The items (T) - \endlist - \endtable -*/ diff --git a/doc/src/snippets/buffer/buffer.cpp b/doc/src/snippets/buffer/buffer.cpp deleted file mode 100644 index 681fb56791..0000000000 --- a/doc/src/snippets/buffer/buffer.cpp +++ /dev/null @@ -1,124 +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$ -** -****************************************************************************/ - -#include <QApplication> -#include <QBuffer> -#include <QPalette> - -static void main_snippet() -{ -//! [0] - QBuffer buffer; - char ch; - - buffer.open(QBuffer::ReadWrite); - buffer.write("Qt rocks!"); - buffer.seek(0); - buffer.getChar(&ch); // ch == 'Q' - buffer.getChar(&ch); // ch == 't' - buffer.getChar(&ch); // ch == ' ' - buffer.getChar(&ch); // ch == 'r' -//! [0] -} - -static void write_datastream_snippets() -{ -//! [1] - QByteArray byteArray; - QBuffer buffer(&byteArray); - buffer.open(QIODevice::WriteOnly); - - QDataStream out(&buffer); - out << QApplication::palette(); -//! [1] -} - -static void read_datastream_snippets() -{ - QByteArray byteArray; - -//! [2] - QPalette palette; - QBuffer buffer(&byteArray); - buffer.open(QIODevice::ReadOnly); - - QDataStream in(&buffer); - in >> palette; -//! [2] -} - -static void bytearray_ptr_ctor_snippet() -{ -//! [3] - QByteArray byteArray("abc"); - QBuffer buffer(&byteArray); - buffer.open(QIODevice::WriteOnly); - buffer.seek(3); - buffer.write("def", 3); - buffer.close(); - // byteArray == "abcdef" -//! [3] -} - -static void setBuffer_snippet() -{ -//! [4] - QByteArray byteArray("abc"); - QBuffer buffer; - buffer.setBuffer(&byteArray); - buffer.open(QIODevice::WriteOnly); - buffer.seek(3); - buffer.write("def", 3); - buffer.close(); - // byteArray == "abcdef" -//! [4] -} - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - main_snippet(); - bytearray_ptr_ctor_snippet(); - write_datastream_snippets(); - read_datastream_snippets(); - setBuffer_snippet(); - return 0; -} diff --git a/doc/src/snippets/code/doc_src_containers.cpp b/doc/src/snippets/code/doc_src_containers.cpp deleted file mode 100644 index c74b0f79dc..0000000000 --- a/doc/src/snippets/code/doc_src_containers.cpp +++ /dev/null @@ -1,275 +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] -class Employee -{ -public: - Employee() {} - Employee(const Employee &other); - - Employee &operator=(const Employee &other); - -private: - QString myName; - QDate myDateOfBirth; -}; -//! [0] - - -//! [1] -QList<QString> list; -list << "A" << "B" << "C" << "D"; - -QListIterator<QString> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [1] - - -//! [2] -QListIterator<QString> i(list); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [2] - - -//! [3] -QMutableListIterator<int> i(list); -while (i.hasNext()) { - if (i.next() % 2 != 0) - i.remove(); -} -//! [3] - - -//! [4] -QMutableListIterator<int> i(list); -i.toBack(); -while (i.hasPrevious()) { - if (i.previous() % 2 != 0) - i.remove(); -} -//! [4] - - -//! [5] -QMutableListIterator<int> i(list); -while (i.hasNext()) { - if (i.next() > 128) - i.setValue(128); -} -//! [5] - - -//! [6] -QMutableListIterator<int> i(list); -while (i.hasNext()) - i.next() *= 2; -//! [6] - - -//! [7] -QMap<QString, QString> map; -map.insert("Paris", "France"); -map.insert("Guatemala City", "Guatemala"); -map.insert("Mexico City", "Mexico"); -map.insert("Moscow", "Russia"); -... - -QMutableMapIterator<QString, QString> i(map); -while (i.hasNext()) { - if (i.next().key().endsWith("City")) - i.remove(); -} -//! [7] - - -//! [8] -QMap<int, QWidget *> map; -QHash<int, QWidget *> hash; - -QMapIterator<int, QWidget *> i(map); -while (i.hasNext()) { - i.next(); - hash.insert(i.key(), i.value()); -} -//! [8] - - -//! [9] -QMutableMapIterator<int, QWidget *> i(map); -while (i.findNext(widget)) - i.remove(); -//! [9] - - -//! [10] -QList<QString> list; -list << "A" << "B" << "C" << "D"; - -QList<QString>::iterator i; -for (i = list.begin(); i != list.end(); ++i) - *i = (*i).toLower(); -//! [10] - - -//! [11] -QList<QString> list; -list << "A" << "B" << "C" << "D"; - -QList<QString>::iterator i = list.end(); -while (i != list.begin()) { - --i; - *i = (*i).toLower(); -} -//! [11] - - -//! [12] -QList<QString>::const_iterator i; -for (i = list.constBegin(); i != list.constEnd(); ++i) - qDebug() << *i; -//! [12] - - -//! [13] -QMap<int, int> map; -... -QMap<int, int>::const_iterator i; -for (i = map.constBegin(); i != map.constEnd(); ++i) - qDebug() << i.key() << ":" << i.value(); -//! [13] - - -//! [14] -// RIGHT -const QList<int> sizes = splitter->sizes(); -QList<int>::const_iterator i; -for (i = sizes.begin(); i != sizes.end(); ++i) - ... - -// WRONG -QList<int>::const_iterator i; -for (i = splitter->sizes().begin(); - i != splitter->sizes().end(); ++i) - ... -//! [14] - - -//! [15] -QLinkedList<QString> list; -... -QString str; -foreach (str, list) - qDebug() << str; -//! [15] - - -//! [16] -QLinkedList<QString> list; -... -QLinkedListIterator<QString> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [16] - - -//! [17] -QLinkedList<QString> list; -... -foreach (const QString &str, list) - qDebug() << str; -//! [17] - - -//! [18] -QLinkedList<QString> list; -... -foreach (const QString &str, list) { - if (str.isEmpty()) - break; - qDebug() << str; -} -//! [18] - - -//! [19] -QMap<QString, int> map; -... -foreach (const QString &str, map.keys()) - qDebug() << str << ":" << map.value(str); -//! [19] - - -//! [20] -QMultiMap<QString, int> map; -... -foreach (const QString &str, map.uniqueKeys()) { - foreach (int i, map.values(str)) - qDebug() << str << ":" << i; -} -//! [20] - - -//! [21] -forever { - ... -} -//! [21] - - -//! [22] -CONFIG += no_keywords -//! [22] - - -//! [23] -QString onlyLetters(const QString &in) -{ - QString out; - for (int j = 0; j < in.size(); ++j) { - if (in[j].isLetter()) - out += in[j]; - } - return out; -} -//! [23] diff --git a/doc/src/snippets/code/doc_src_groups.cpp b/doc/src/snippets/code/doc_src_groups.cpp deleted file mode 100644 index abfbfc59c0..0000000000 --- a/doc/src/snippets/code/doc_src_groups.cpp +++ /dev/null @@ -1,66 +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] -void QPen::setStyle(Qt::PenStyle style) -{ - detach(); // detach from common data - d->style = style; // set the style member -} - -void QPen::detach() -{ - if (d->ref != 1) { - ... // perform a deep copy - } -} -//! [0] - - -//! [1] -QPixmap p1, p2; -p1.load("image.bmp"); -p2 = p1; // p1 and p2 share data - -QPainter paint; -paint.begin(&p2); // cuts p2 loose from p1 -paint.drawText(0,50, "Hi"); -paint.end(); -//! [1] diff --git a/doc/src/snippets/code/doc_src_objecttrees.cpp b/doc/src/snippets/code/doc_src_objecttrees.cpp deleted file mode 100644 index 62d556057b..0000000000 --- a/doc/src/snippets/code/doc_src_objecttrees.cpp +++ /dev/null @@ -1,60 +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] -int main() -{ - QWidget window; - QPushButton quit("Quit", &window); - ... -} -//![0] - - -//![1] -int main() -{ - QPushButton quit("Quit"); - QWidget window; - - quit.setParent(&window); - ... -} -//![1] diff --git a/doc/src/snippets/code/doc_src_properties.cpp b/doc/src/snippets/code/doc_src_properties.cpp deleted file mode 100644 index b88fc22084..0000000000 --- a/doc/src/snippets/code/doc_src_properties.cpp +++ /dev/null @@ -1,132 +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] -Q_PROPERTY(type name - READ getFunction - [WRITE setFunction] - [RESET resetFunction] - [NOTIFY notifySignal] - [REVISION int] - [DESIGNABLE bool] - [SCRIPTABLE bool] - [STORED bool] - [USER bool] - [CONSTANT] - [FINAL]) -//! [0] - - -//! [1] -Q_PROPERTY(bool focus READ hasFocus) -Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) -Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor) -//! [1] - - -//! [2] -Q_PROPERTY(QDate date READ getDate WRITE setDate) -//! [2] - - -//! [3] -QPushButton *button = new QPushButton; -QObject *object = button; - -button->setDown(true); -object->setProperty("down", true); -//! [3] - - -//! [4] -QObject *object = ... -const QMetaObject *metaobject = object->metaObject(); -int count = metaobject->propertyCount(); -for (int i=0; i<count; ++i) { - QMetaProperty metaproperty = metaobject->property(i); - const char *name = metaproperty.name(); - QVariant value = object->property(name); - ... -} -//! [4] - - -//! [5] -class MyClass : public QObject -{ - Q_OBJECT - Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged) - Q_ENUMS(Priority) - -public: - MyClass(QObject *parent = 0); - ~MyClass(); - - enum Priority { High, Low, VeryHigh, VeryLow }; - - void setPriority(Priority priority) - { - m_priority = priority; - emit priorityChanged(priority); - } - Priority priority() const - { return m_priority; } - -signals: - void priorityChanged(Priority); - -private: - Priority m_priority; -}; -//! [5] - - -//! [6] -MyClass *myinstance = new MyClass; -QObject *object = myinstance; - -myinstance->setPriority(MyClass::VeryHigh); -object->setProperty("priority", "VeryHigh"); -//! [6] - - -//! [7] -Q_CLASSINFO("Version", "3.0.0") -//! [7] diff --git a/doc/src/snippets/code/doc_src_qalgorithms.cpp b/doc/src/snippets/code/doc_src_qalgorithms.cpp deleted file mode 100644 index 20e64b61fa..0000000000 --- a/doc/src/snippets/code/doc_src_qalgorithms.cpp +++ /dev/null @@ -1,354 +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] -QStringList list; -list << "one" << "two" << "three"; - -qFill(list.begin(), list.end(), "eleven"); -// list: [ "eleven", "eleven", "eleven" ] -//! [0] - - -//! [1] -qFill(list.begin() + 1, list.end(), "six"); -// list: [ "eleven", "six", "six" ] -//! [1] - - -//! [2] -QChar resolveEntity(const QString &entity) -{ - static const QLatin1String name_table[] = { - "AElig", "Aacute", ..., "zwnj" - }; - static const ushort value_table[] = { - 0x0061, 0x00c1, ..., 0x200c - }; - int N = sizeof(name_table) / sizeof(name_table[0]); - - const QLatin1String *name = qBinaryFind(name_table, name_table + N, - entity); - int index = name - name_table; - if (index == N) - return QChar(); - - return QChar(value_table[index]); -} -//! [2] - - -//! [3] -QChar resolveEntity(const QString &entity) -{ - static QMap<QString, int> entityMap; - - if (!entityMap) { - entityMap.insert("AElig", 0x0061); - entityMap.insert("Aacute", 0x00c1); - ... - entityMap.insert("zwnj", 0x200c); - } - return QChar(entityMap.value(entity)); -} -//! [3] - - -//! [4] -QStringList list; -list << "one" << "two" << "three"; - -QVector<QString> vect1(3); -qCopy(list.begin(), list.end(), vect1.begin()); -// vect: [ "one", "two", "three" ] - -QVector<QString> vect2(8); -qCopy(list.begin(), list.end(), vect2.begin() + 2); -// vect: [ "", "", "one", "two", "three", "", "", "" ] -//! [4] - - -//! [5] -QStringList list; -list << "one" << "two" << "three"; - -QVector<QString> vect(5); -qCopyBackward(list.begin(), list.end(), vect.end()); -// vect: [ "", "", "one", "two", "three" ] -//! [5] - - -//! [6] -QStringList list; -list << "one" << "two" << "three"; - -QVector<QString> vect(3); -vect[0] = "one"; -vect[1] = "two"; -vect[2] = "three"; - -bool ret1 = qEqual(list.begin(), list.end(), vect.begin()); -// ret1 == true - -vect[2] = "seven"; -bool ret2 = qEqual(list.begin(), list.end(), vect.begin()); -// ret2 == false -//! [6] - - -//! [7] -QStringList list; -list << "one" << "two" << "three"; - -qFill(list.begin(), list.end(), "eleven"); -// list: [ "eleven", "eleven", "eleven" ] - -qFill(list.begin() + 1, list.end(), "six"); -// list: [ "eleven", "six", "six" ] -//! [7] - - -//! [8] -QStringList list; -list << "one" << "two" << "three"; - -QStringList::iterator i1 = qFind(list.begin(), list.end(), "two"); -// i1 == list.begin() + 1 - -QStringList::iterator i2 = qFind(list.begin(), list.end(), "seventy"); -// i2 == list.end() -//! [8] - - -//! [9] -QList<int> list; -list << 3 << 3 << 6 << 6 << 6 << 8; - -int countOf6 = 0; -qCount(list.begin(), list.end(), 6, countOf6); -// countOf6 == 3 - -int countOf7 = 0; -qCount(list.begin(), list.end(), 7, countOf7); -// countOf7 == 0 -//! [9] - - -//! [10] -double pi = 3.14; -double e = 2.71; - -qSwap(pi, e); -// pi == 2.71, e == 3.14 -//! [10] - - -//! [11] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qSort(list.begin(), list.end()); -// list: [ 6, 12, 12, 33, 68 ] -//! [11] - - -//! [12] -bool caseInsensitiveLessThan(const QString &s1, const QString &s2) -{ - return s1.toLower() < s2.toLower(); -} - -int doSomething() -{ - QStringList list; - list << "AlPha" << "beTA" << "gamma" << "DELTA"; - qSort(list.begin(), list.end(), caseInsensitiveLessThan); - // list: [ "AlPha", "beTA", "DELTA", "gamma" ] -} -//! [12] - - -//! [13] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qSort(list.begin(), list.end(), qGreater<int>()); -// list: [ 68, 33, 12, 12, 6 ] -//! [13] - - -//! [14] -QStringList list; -list << "AlPha" << "beTA" << "gamma" << "DELTA"; - -QMap<QString, QString> map; -foreach (const QString &str, list) - map.insert(str.toLower(), str); - -list = map.values(); -//! [14] - - -//! [15] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qStableSort(list.begin(), list.end()); -// list: [ 6, 12, 12, 33, 68 ] -//! [15] - - -//! [16] -bool caseInsensitiveLessThan(const QString &s1, const QString &s2) -{ - return s1.toLower() < s2.toLower(); -} - -int doSomething() -{ - QStringList list; - list << "AlPha" << "beTA" << "gamma" << "DELTA"; - qStableSort(list.begin(), list.end(), caseInsensitiveLessThan); - // list: [ "AlPha", "beTA", "DELTA", "gamma" ] -} -//! [16] - - -//! [17] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qStableSort(list.begin(), list.end(), qGreater<int>()); -// list: [ 68, 33, 12, 12, 6 ] -//! [17] - - -//! [18] -QList<int> list; -list << 3 << 3 << 6 << 6 << 6 << 8; - -QList<int>::iterator i = qLowerBound(list.begin(), list.end(), 5); -list.insert(i, 5); -// list: [ 3, 3, 5, 6, 6, 6, 8 ] - -i = qLowerBound(list.begin(), list.end(), 12); -list.insert(i, 12); -// list: [ 3, 3, 5, 6, 6, 6, 8, 12 ] -//! [18] - - -//! [19] -QVector<int> vect; -vect << 3 << 3 << 6 << 6 << 6 << 8; -QVector<int>::iterator begin6 = - qLowerBound(vect.begin(), vect.end(), 6); -QVector<int>::iterator end6 = - qUpperBound(begin6, vect.end(), 6); - -QVector<int>::iterator i = begin6; -while (i != end6) { - *i = 7; - ++i; -} -// vect: [ 3, 3, 7, 7, 7, 8 ] -//! [19] - - -//! [20] -QList<int> list; -list << 3 << 3 << 6 << 6 << 6 << 8; - -QList<int>::iterator i = qUpperBound(list.begin(), list.end(), 5); -list.insert(i, 5); -// list: [ 3, 3, 5, 6, 6, 6, 8 ] - -i = qUpperBound(list.begin(), list.end(), 12); -list.insert(i, 12); -// list: [ 3, 3, 5, 6, 6, 6, 8, 12 ] -//! [20] - - -//! [21] -QVector<int> vect; -vect << 3 << 3 << 6 << 6 << 6 << 8; -QVector<int>::iterator begin6 = - qLowerBound(vect.begin(), vect.end(), 6); -QVector<int>::iterator end6 = - qUpperBound(vect.begin(), vect.end(), 6); - -QVector<int>::iterator i = begin6; -while (i != end6) { - *i = 7; - ++i; -} -// vect: [ 3, 3, 7, 7, 7, 8 ] -//! [21] - - -//! [22] -QVector<int> vect; -vect << 3 << 3 << 6 << 6 << 6 << 8; - -QVector<int>::iterator i = - qBinaryFind(vect.begin(), vect.end(), 6); -// i == vect.begin() + 2 (or 3 or 4) -//! [22] - - -//! [23] -QList<Employee *> list; -list.append(new Employee("Blackpool", "Stephen")); -list.append(new Employee("Twist", "Oliver")); - -qDeleteAll(list.begin(), list.end()); -list.clear(); -//! [23] - - -//! [24] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qSort(list.begin(), list.end(), qLess<int>()); -// list: [ 6, 12, 12, 33, 68 ] -//! [24] - - -//! [25] -QList<int> list; -list << 33 << 12 << 68 << 6 << 12; -qSort(list.begin(), list.end(), qGreater<int>()); -// list: [ 68, 33, 12, 12, 6 ] -//! [25] diff --git a/doc/src/snippets/code/doc_src_qcache.cpp b/doc/src/snippets/code/doc_src_qcache.cpp deleted file mode 100644 index 0ba9e65531..0000000000 --- a/doc/src/snippets/code/doc_src_qcache.cpp +++ /dev/null @@ -1,57 +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] -QCache<int, Employee> cache; -//! [0] - - -//! [1] -Employee *employee = new Employee; -employee->setId(37); -employee->setName("Richard Schmit"); -... -cache.insert(employee->id(), employee); -//! [1] - - -//! [2] -QCache<int, MyDataStructure> cache(5000); -//! [2] diff --git a/doc/src/snippets/code/doc_src_qiterator.cpp b/doc/src/snippets/code/doc_src_qiterator.cpp deleted file mode 100644 index b96f9065cb..0000000000 --- a/doc/src/snippets/code/doc_src_qiterator.cpp +++ /dev/null @@ -1,420 +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] -QList<float> list; -... -QListIterator<float> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [0] - - -//! [1] -QListIterator<float> i(list); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [1] - - -//! [2] -QLinkedList<float> list; -... -QLinkedListIterator<float> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [2] - - -//! [3] -QLinkedListIterator<float> i(list); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [3] - - -//! [4] -QVector<float> vector; -... -QVectorIterator<float> i(vector); -while (i.hasNext()) - qDebug() << i.next(); -//! [4] - - -//! [5] -QVectorIterator<float> i(vector); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [5] - - -//! [6] -QSet<QString> set; -... -QSetIterator<QString> i(set); -while (i.hasNext()) - qDebug() << i.next(); -//! [6] - - -//! [7] -QSetIterator<QString> i(set); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [7] - - -//! [8] -QList<float> list; -... -QMutableListIterator<float> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [8] - - -//! [9] -QMutableListIterator<float> i(list); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [9] - - -//! [10] -QMutableListIterator<int> i(list); -while (i.hasNext()) { - int val = i.next(); - if (val < 0) { - i.setValue(-val); - } else if (val == 0) { - i.remove(); - } -} -//! [10] - - -//! [11] -QLinkedList<float> list; -... -QMutableLinkedListIterator<float> i(list); -while (i.hasNext()) - qDebug() << i.next(); -//! [11] - - -//! [12] -QMutableLinkedListIterator<float> i(list); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [12] - - -//! [13] -QMutableLinkedListIterator<int> i(list); -while (i.hasNext()) { - int val = i.next(); - if (val < 0) { - i.setValue(-val); - } else if (val == 0) { - i.remove(); - } -} -//! [13] - - -//! [14] -QVector<float> vector; -... -QMutableVectorIterator<float> i(vector); -while (i.hasNext()) - qDebug() << i.next(); -//! [14] - - -//! [15] -QMutableVectorIterator<float> i(vector); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [15] - - -//! [16] -QMutableVectorIterator<int> i(vector); -while (i.hasNext()) { - int val = i.next(); - if (val < 0) { - i.setValue(-val); - } else if (val == 0) { - i.remove(); - } -} -//! [16] - - -//! [17] -QSet<float> set; -... -QMutableSetIterator<float> i(set); -while (i.hasNext()) - qDebug() << i.next(); -//! [17] - - -//! [18] -QMutableSetIterator<float> i(set); -i.toBack(); -while (i.hasPrevious()) - qDebug() << i.previous(); -//! [18] - - -//! [19] -QMutableListIterator<int> i(list); -while (i.hasNext()) { - int val = i.next(); - if (val < -32768 || val > 32767) - i.remove(); -} -//! [19] - - -//! [20] -QMutableLinkedListIterator<int> i(list); -while (i.hasNext()) { - int val = i.next(); - if (val < -32768 || val > 32767) - i.remove(); -} -//! [20] - - -//! [21] -QMutableVectorIterator<int> i(vector); -while (i.hasNext()) { - int val = i.next(); - if (val < -32768 || val > 32767) - i.remove(); -} -//! [21] - - -//! [22] -QMutableSetIterator<int> i(set); -while (i.hasNext()) { - int val = i.next(); - if (val < -32768 || val > 32767) - i.remove(); -} -//! [22] - - -//! [23] -QMutableListIterator<double> i(list); -while (i.hasNext()) { - double val = i.next(); - i.setValue(sqrt(val)); -} -//! [23] - - -//! [24] -QMutableLinkedListIterator<double> i(list); -while (i.hasNext()) { - double val = i.next(); - i.setValue(sqrt(val)); -} -//! [24] - - -//! [25] -QMutableVectorIterator<double> i(list); -while (i.hasNext()) { - double val = i.next(); - i.setValue(sqrt(val)); -} -//! [25] - - -//! [26] -QMap<int, QWidget *> map; -... -QMapIterator<int, QWidget *> i(map); -while (i.hasNext()) { - i.next(); - qDebug() << i.key() << ": " << i.value(); -} -//! [26] - - -//! [27] -QMapIterator<int, QWidget *> i(map); -i.toBack(); -while (i.hasPrevious()) { - i.previous(); - qDebug() << i.key() << ": " << i.value(); -} -//! [27] - - -//! [28] -QMapIterator<int, QWidget *> i(map); -while (i.findNext(widget)) { - qDebug() << "Found widget " << widget << " under key " - << i.key(); -} -//! [28] - - -//! [29] -QHash<int, QWidget *> hash; -... -QHashIterator<int, QWidget *> i(hash); -while (i.hasNext()) { - i.next(); - qDebug() << i.key() << ": " << i.value(); -} -//! [29] - - -//! [30] -QHashIterator<int, QWidget *> i(hash); -i.toBack(); -while (i.hasPrevious()) { - i.previous(); - qDebug() << i.key() << ": " << i.value(); -} -//! [30] - - -//! [31] -QHashIterator<int, QWidget *> i(hash); -while (i.findNext(widget)) { - qDebug() << "Found widget " << widget << " under key " - << i.key(); -} -//! [31] - - -//! [32] -QMap<int, QWidget *> map; -... -QMutableMapIterator<int, QWidget *> i(map); -while (i.hasNext()) { - i.next(); - qDebug() << i.key() << ": " << i.value(); -} -//! [32] - - -//! [33] -QMutableMapIterator<int, QWidget *> i(map); -i.toBack(); -while (i.hasPrevious()) { - i.previous(); - qDebug() << i.key() << ": " << i.value(); -} -//! [33] - - -//! [34] -QMutableMapIterator<int, QWidget *> i(map); -while (i.findNext(widget)) { - qDebug() << "Found widget " << widget << " under key " - << i.key(); -} -//! [34] - - -//! [35] -QMutableMapIterator<QString, QString> i(map); -while (i.hasNext()) { - i.next(); - if (i.key() == i.value()) - i.remove(); -} -//! [35] - - -//! [36] -QHash<int, QWidget *> hash; -... -QMutableHashIterator<QString, QWidget *> i(hash); -while (i.hasNext()) { - i.next(); - qDebug() << i.key() << ": " << i.value(); -} -//! [36] - - -//! [37] -QMutableHashIterator<int, QWidget *> i(hash); -i.toBack(); -while (i.hasPrevious()) { - i.previous(); - qDebug() << i.key() << ": " << i.value(); -} -//! [37] - - -//! [38] -QMutableHashIterator<int, QWidget *> i(hash); -while (i.findNext(widget)) { - qDebug() << "Found widget " << widget << " under key " - << i.key(); -} -//! [38] - - -//! [39] -QMutableHashIterator<QString, QString> i(hash); -while (i.hasNext()) { - i.next(); - if (i.key() == i.value()) - i.remove(); -} -//! [39] diff --git a/doc/src/snippets/code/doc_src_qnamespace.cpp b/doc/src/snippets/code/doc_src_qnamespace.cpp deleted file mode 100644 index ec80d011c9..0000000000 --- a/doc/src/snippets/code/doc_src_qnamespace.cpp +++ /dev/null @@ -1,59 +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$ -** -****************************************************************************/ - -//! [1] -enum CustomEventPriority -{ - // An important event - ImportantEventPriority = Qt::HighEventPriority, - - // A more important event - MoreImportantEventPriority = ImportantEventPriority + 1, - - // A critical event - CriticalEventPriority = 100 * MoreImportantEventPriority, - - // Not that important - StatusEventPriority = Qt::LowEventPriority, - - // These are less important than Status events - IdleProcessingDoneEventPriority = StatusEventPriority - 1 -}; -//! [1] diff --git a/doc/src/snippets/code/doc_src_qnamespace.qdoc b/doc/src/snippets/code/doc_src_qnamespace.qdoc deleted file mode 100644 index e67b83a292..0000000000 --- a/doc/src/snippets/code/doc_src_qnamespace.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] -QObject::connect: Cannot queue arguments of type 'MyType' -//! [0] diff --git a/doc/src/snippets/code/doc_src_qpair.cpp b/doc/src/snippets/code/doc_src_qpair.cpp deleted file mode 100644 index a29b6d02b2..0000000000 --- a/doc/src/snippets/code/doc_src_qpair.cpp +++ /dev/null @@ -1,55 +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] -QPair<QString, double> pair; -//! [0] - - -//! [1] -pair.first = "pi"; -pair.second = 3.14159265358979323846; -//! [1] - - -//! [2] -QList<QPair<int, double> > list; -list.append(qMakePair(66, 3.14159)); -//! [2] diff --git a/doc/src/snippets/code/doc_src_qplugin.cpp b/doc/src/snippets/code/doc_src_qplugin.cpp deleted file mode 100644 index 1577b2fa61..0000000000 --- a/doc/src/snippets/code/doc_src_qplugin.cpp +++ /dev/null @@ -1,64 +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] -namespace Foo -{ - struct MyInterface { ... }; -} - -Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface") -//! [0] - - -//! [1] -Q_EXPORT_PLUGIN2(pnp_extrafilters, ExtraFiltersPlugin) -//! [1] - - -//! [2] -Q_IMPORT_PLUGIN(qjpeg) -//! [2] - - -//! [3] -TEMPLATE = app -QTPLUGIN += qjpeg qgif # image formats -//! [3] diff --git a/doc/src/snippets/code/doc_src_qplugin.pro b/doc/src/snippets/code/doc_src_qplugin.pro deleted file mode 100644 index e5e5311e5d..0000000000 --- a/doc/src/snippets/code/doc_src_qplugin.pro +++ /dev/null @@ -1,44 +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$ -** -****************************************************************************/ - -#! [3] -TEMPLATE = app -QTPLUGIN += qjpeg qgif # image formats -#! [3] diff --git a/doc/src/snippets/code/doc_src_qset.cpp b/doc/src/snippets/code/doc_src_qset.cpp deleted file mode 100644 index cfd366f639..0000000000 --- a/doc/src/snippets/code/doc_src_qset.cpp +++ /dev/null @@ -1,166 +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] -QSet<QString> set; -//! [0] - - -//! [1] -set.insert("one"); -set.insert("three"); -set.insert("seven"); -//! [1] - - -//! [2] -set << "twelve" << "fifteen" << "nineteen"; -//! [2] - - -//! [3] -if (!set.contains("ninety-nine")) - ... -//! [3] - - -//! [4] -QSetIterator<QWidget *> i(set); -while (i.hasNext()) - qDebug() << i.next(); -//! [4] - - -//! [5] -QSet<QWidget *>::const_iterator i = set.constBegin(); -while (i != set.constEnd()) { - qDebug() << *i; - ++i; -} -//! [5] - - -//! [6] -QSet<QString> set; -... -foreach (const QString &value, set) - qDebug() << value; -//! [6] - - -//! [7] -QSet<QString> set; -set.reserve(20000); -for (int i = 0; i < 20000; ++i) - set.insert(values[i]); -//! [7] - - -//! [8] -QSet<QString> set; -set << "January" << "February" << ... << "December"; - -QSet<QString>::iterator i; -for (i = set.begin(); i != set.end(); ++i) - qDebug() << *i; -//! [8] - - -//! [9] -QSet<QString> set; -set << "January" << "February" << ... << "December"; - -QSet<QString>::iterator i = set.begin(); -while (i != set.end()) { - if ((*i).startsWith('J')) { - i = set.erase(i); - } else { - ++i; - } -} -//! [9] - - -//! [10] -QSet<QString> set; -... -QSet<QString>::iterator it = qFind(set.begin(), set.end(), "Jeanette"); -if (it != set.end()) - cout << "Found Jeanette" << endl; -//! [10] - - -//! [11] -QSet<QString> set; -set << "January" << "February" << ... << "December"; - -QSet<QString>::const_iterator i; -for (i = set.begin(); i != set.end(); ++i) - qDebug() << *i; -//! [11] - - -//! [12] -QSet<QString> set; -... -QSet<QString>::iterator it = qFind(set.begin(), set.end(), "Jeanette"); -if (it != set.constEnd()) - cout << "Found Jeanette" << endl; -//! [12] - - -//! [13] -QSet<QString> set; -set << "red" << "green" << "blue" << ... << "black"; - -QList<QString> list = set.toList(); -qSort(list); -//! [13] - - -//! [14] -QStringList list; -list << "Julia" << "Mike" << "Mike" << "Julia" << "Julia"; - -QSet<QString> set = QSet<QString>::fromList(list); -set.contains("Julia"); // returns true -set.contains("Mike"); // returns true -set.size(); // returns 2 -//! [14] diff --git a/doc/src/snippets/code/doc_src_qtcore.cpp b/doc/src/snippets/code/doc_src_qtcore.cpp deleted file mode 100644 index f00c96c6df..0000000000 --- a/doc/src/snippets/code/doc_src_qtcore.cpp +++ /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] -#include <QtCore> -//! [0] diff --git a/doc/src/snippets/code/doc_src_qvarlengtharray.cpp b/doc/src/snippets/code/doc_src_qvarlengtharray.cpp deleted file mode 100644 index 027faa41dc..0000000000 --- a/doc/src/snippets/code/doc_src_qvarlengtharray.cpp +++ /dev/null @@ -1,78 +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] -int myfunc(int n) -{ - int table[n + 1]; // WRONG - ... - return table[n]; -} -//! [0] - - -//! [1] -int myfunc(int n) -{ - int *table = new int[n + 1]; - ... - int ret = table[n]; - delete[] table; - return ret; -} -//! [1] - - -//! [2] -int myfunc(int n) -{ - QVarLengthArray<int, 1024> array(n + 1); - ... - return array[n]; -} -//! [2] - - -//! [3] -QVarLengthArray<int> array(10); -int *data = array.data(); -for (int i = 0; i < 10; ++i) - data[i] = 2 * i; -//! [3] diff --git a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp b/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp deleted file mode 100644 index 78abd5ba28..0000000000 --- a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp +++ /dev/null @@ -1,75 +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] -QByteArray encodedString = "..."; -QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); -QString string = codec->toUnicode(encodedString); -//! [0] - - -//! [1] -QString string = "..."; -QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); -QByteArray encodedString = codec->fromUnicode(string); -//! [1] - - -//! [2] -QTextCodec *codec = QTextCodec::codecForName("Shift-JIS"); -QTextDecoder *decoder = codec->makeDecoder(); - -QString string; -while (new_data_available()) { - QByteArray chunk = get_new_data(); - string += decoder->toUnicode(chunk); -} -delete decoder; -//! [2] - - -//! [3] -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - QTextCodec::setCodecForTr(QTextCodec::codecForName("eucKR")); - ... -} -//! [3] diff --git a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp b/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp deleted file mode 100644 index a8f9da3a7c..0000000000 --- a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp +++ /dev/null @@ -1,53 +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] -class HelloWorldTask : public QRunnable -{ - void run() - { - qDebug() << "Hello world from thread" << QThread::currentThread(); - } -} - -HelloWorldTask *hello = new HelloWorldTask(); -// QThreadPool takes ownership and deletes 'hello' automatically -QThreadPool::globalInstance()->start(hello); -//! [0] diff --git a/doc/src/snippets/code/src_corelib_global_qglobal.cpp b/doc/src/snippets/code/src_corelib_global_qglobal.cpp deleted file mode 100644 index 16f6783a52..0000000000 --- a/doc/src/snippets/code/src_corelib_global_qglobal.cpp +++ /dev/null @@ -1,585 +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] -label->setAlignment(Qt::AlignLeft | Qt::AlignTop); -//! [0] - - -//! [1] -class MyClass -{ -public: - enum Option { - NoOptions = 0x0, - ShowTabs = 0x1, - ShowAll = 0x2, - SqueezeBlank = 0x4 - }; - Q_DECLARE_FLAGS(Options, Option) - ... -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(MyClass::Options) -//! [1] - -//! [meta-object flags] -Q_FLAGS(Options) -//! [meta-object flags] - -//! [2] -typedef QFlags<Enum> Flags; -//! [2] - - -//! [3] -int myValue = 10; -int minValue = 2; -int maxValue = 6; - -int boundedValue = qBound(minValue, myValue, maxValue); -// boundedValue == 6 -//! [3] - - -//! [4] -if (!driver()->isOpen() || driver()->isOpenError()) { - qWarning("QSqlQuery::exec: database not open"); - return false; -} -//! [4] - - -//! [5] -qint64 value = Q_INT64_C(932838457459459); -//! [5] - - -//! [6] -quint64 value = Q_UINT64_C(932838457459459); -//! [6] - - -//! [7] -void myMsgHandler(QtMsgType, const char *); -//! [7] - - -//! [8] -qint64 value = Q_INT64_C(932838457459459); -//! [8] - - -//! [9] -quint64 value = Q_UINT64_C(932838457459459); -//! [9] - - -//! [10] -int absoluteValue; -int myValue = -4; - -absoluteValue = qAbs(myValue); -// absoluteValue == 4 -//! [10] - - -//! [11] -qreal valueA = 2.3; -qreal valueB = 2.7; - -int roundedValueA = qRound(valueA); -// roundedValueA = 2 -int roundedValueB = qRound(valueB); -// roundedValueB = 3 -//! [11] - - -//! [12] -qreal valueA = 42949672960.3; -qreal valueB = 42949672960.7; - -int roundedValueA = qRound(valueA); -// roundedValueA = 42949672960 -int roundedValueB = qRound(valueB); -// roundedValueB = 42949672961 -//! [12] - - -//! [13] -int myValue = 6; -int yourValue = 4; - -int minValue = qMin(myValue, yourValue); -// minValue == yourValue -//! [13] - - -//! [14] -int myValue = 6; -int yourValue = 4; - -int maxValue = qMax(myValue, yourValue); -// maxValue == myValue -//! [14] - - -//! [15] -int myValue = 10; -int minValue = 2; -int maxValue = 6; - -int boundedValue = qBound(minValue, myValue, maxValue); -// boundedValue == 6 -//! [15] - - -//! [16] -#if QT_VERSION >= 0x040100 - QIcon icon = style()->standardIcon(QStyle::SP_TrashIcon); -#else - QPixmap pixmap = style()->standardPixmap(QStyle::SP_TrashIcon); - QIcon icon(pixmap); -#endif -//! [16] - - -//! [17] -// File: div.cpp - -#include <QtGlobal> - -int divide(int a, int b) -{ - Q_ASSERT(b != 0); - return a / b; -} -//! [17] - - -//! [18] -ASSERT: "b == 0" in file div.cpp, line 7 -//! [18] - - -//! [19] -// File: div.cpp - -#include <QtGlobal> - -int divide(int a, int b) -{ - Q_ASSERT_X(b != 0, "divide", "division by zero"); - return a / b; -} -//! [19] - - -//! [20] -ASSERT failure in divide: "division by zero", file div.cpp, line 7 -//! [20] - - -//! [21] -int *a; - -Q_CHECK_PTR(a = new int[80]); // WRONG! - -a = new (nothrow) int[80]; // Right -Q_CHECK_PTR(a); -//! [21] - - -//! [22] -template<typename TInputType> -const TInputType &myMin(const TInputType &value1, const TInputType &value2) -{ - qDebug() << Q_FUNC_INFO << "was called with value1:" << value1 << "value2:" << value2; - - if(value1 < value2) - return value1; - else - return value2; -} -//! [22] - - -//! [23] -#include <qapplication.h> -#include <stdio.h> -#include <stdlib.h> - -void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const char *msg) -{ - switch (type) { - case QtDebugMsg: - fprintf(stderr, "Debug: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function); - break; - case QtWarningMsg: - fprintf(stderr, "Warning: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function); - break; - case QtCriticalMsg: - fprintf(stderr, "Critical: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function); - break; - case QtFatalMsg: - fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function); - abort(); - } -} - -int main(int argc, char **argv) -{ - qInstallMessageHandler(myMessageOutput); - QApplication app(argc, argv); - ... - return app.exec(); -} -//! [23] - - -//! [24] -qDebug("Items in list: %d", myList.size()); -//! [24] - - -//! [25] -qDebug() << "Brush:" << myQBrush << "Other value:" << i; -//! [25] - - -//! [26] -void f(int c) -{ - if (c > 200) - qWarning("f: bad argument, c == %d", c); -} -//! [26] - - -//! [27] -qWarning() << "Brush:" << myQBrush << "Other value:" -<< i; -//! [27] - - -//! [28] -void load(const QString &fileName) -{ - QFile file(fileName); - if (!file.exists()) - qCritical("File '%s' does not exist!", qPrintable(fileName)); -} -//! [28] - - -//! [29] -qCritical() << "Brush:" << myQBrush << "Other -value:" << i; -//! [29] - - -//! [30] -int divide(int a, int b) -{ - if (b == 0) // program error - qFatal("divide: cannot divide by zero"); - return a / b; -} -//! [30] - - -//! [31] -forever { - ... -} -//! [31] - - -//! [32] -CONFIG += no_keywords -//! [32] - - -//! [33] -CONFIG += no_keywords -//! [33] - - -//! [34] -QString FriendlyConversation::greeting(int type) -{ -static const char *greeting_strings[] = { - QT_TR_NOOP("Hello"), - QT_TR_NOOP("Goodbye") -}; -return tr(greeting_strings[type]); -} -//! [34] - - -//! [35] -static const char *greeting_strings[] = { - QT_TRANSLATE_NOOP("FriendlyConversation", "Hello"), - QT_TRANSLATE_NOOP("FriendlyConversation", "Goodbye") -}; - -QString FriendlyConversation::greeting(int type) -{ - return tr(greeting_strings[type]); -} - -QString global_greeting(int type) -{ - return qApp->translate("FriendlyConversation", - greeting_strings[type]); -} -//! [35] - - -//! [36] - -static { const char *source; const char *comment; } greeting_strings[] = -{ - QT_TRANSLATE_NOOP3("FriendlyConversation", "Hello", - "A really friendly hello"), - QT_TRANSLATE_NOOP3("FriendlyConversation", "Goodbye", - "A really friendly goodbye") -}; - -QString FriendlyConversation::greeting(int type) -{ - return tr(greeting_strings[type].source, - greeting_strings[type].comment); -} - -QString global_greeting(int type) -{ - return qApp->translate("FriendlyConversation", - greeting_strings[type].source, - greeting_strings[type].comment); -} -//! [36] - - -//! [qttrid] - //% "%n fooish bar(s) found.\n" - //% "Do you want to continue?" - QString text = qtTrId("qtn_foo_bar", n); -//! [qttrid] - - -//! [qttrid_noop] -static const char * const ids[] = { - //% "This is the first text." - QT_TRID_NOOP("qtn_1st_text"), - //% "This is the second text." - QT_TRID_NOOP("qtn_2nd_text"), - 0 -}; - -void TheClass::addLabels() -{ - for (int i = 0; ids[i]; ++i) - new QLabel(qtTrId(ids[i]), this); -} -//! [qttrid_noop] - - -//! [37] -qWarning("%s: %s", qPrintable(key), qPrintable(value)); -//! [37] - - -//! [38] -struct Point2D -{ - int x; - int y; -}; - -Q_DECLARE_TYPEINFO(Point2D, Q_PRIMITIVE_TYPE); -//! [38] - - -//! [39] -class Point2D -{ -public: - Point2D() { data = new int[2]; } - Point2D(const Point2D &other) { ... } - ~Point2D() { delete[] data; } - - Point2D &operator=(const Point2D &other) { ... } - - int x() const { return data[0]; } - int y() const { return data[1]; } - -private: - int *data; -}; - -Q_DECLARE_TYPEINFO(Point2D, Q_MOVABLE_TYPE); -//! [39] - - -//! [40] -#if Q_BYTE_ORDER == Q_BIG_ENDIAN -... -#endif - -or - -#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN -... -#endif - -//! [40] - - -//! [41] - -#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN -... -#endif - -//! [41] - - -//! [42] -#if Q_BYTE_ORDER == Q_BIG_ENDIAN -... -#endif - -//! [42] - -//! [begin namespace macro] -namespace QT_NAMESPACE { -//! [begin namespace macro] - -//! [end namespace macro] -} -//! [end namespace macro] - -//! [43] -class MyClass : public QObject -{ - - private: - Q_DISABLE_COPY(MyClass) -}; - -//! [43] - -//! [44] -class MyClass : public QObject -{ - - private: - MyClass(const MyClass &); - MyClass &operator=(const MyClass &); -}; -//! [44] - -//! [45] - QWidget w = QWidget(); -//! [45] - -//! [46] - // Instead of comparing with 0.0 - qFuzzyCompare(0.0,1.0e-200); // This will return false - // Compare adding 1 to both values will fix the problem - qFuzzyCompare(1 + 0.0, 1 + 1.0e-200); // This will return true -//! [46] - -//! [47] -CApaApplication *myApplicationFactory(); -//! [47] - - -//! [49] -void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *); -//! [49] - -//! [qlikely] - // the condition inside the "if" will be successful most of the times - for (int i = 1; i <= 365; i++) { - if (Q_LIKELY(isWorkingDay(i))) { - ... - } - ... - } -//! [qlikely] - -//! [qunlikely] -bool readConfiguration(const QFile &file) -{ - // We expect to be asked to read an existing file - if (Q_UNLIKELY(!file.exists())) { - qWarning() << "File not found"; - return false; - } - - ... - return true; -} -//! [qunlikely] - -//! [qunreachable-enum] - enum Shapes { - Rectangle, - Triangle, - Circle, - NumShapes - }; -//! [qunreachable-enum] - -//! [qunreachable-switch] - switch (shape) { - case Rectangle: - return rectangle(); - case Triangle: - return triangle(); - case Circle: - return circle(); - case NumShapes: - Q_UNREACHABLE(); - break; - } -//! [qunreachable-switch] diff --git a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp b/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp deleted file mode 100644 index 8893fbd08c..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp +++ /dev/null @@ -1,120 +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] -class ZipEngineHandler : public QAbstractFileEngineHandler -{ -public: - QAbstractFileEngine *create(const QString &fileName) const; -}; - -QAbstractFileEngine *ZipEngineHandler::create(const QString &fileName) const -{ - // ZipEngineHandler returns a ZipEngine for all .zip files - return fileName.toLower().endsWith(".zip") ? new ZipEngine(fileName) : 0; -} - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - ZipEngineHandler engine; - - MainWindow window; - window.show(); - - return app.exec(); -} -//! [0] - - -//! [1] -QAbstractSocketEngine *ZipEngineHandler::create(const QString &fileName) const -{ - // ZipEngineHandler returns a ZipEngine for all .zip files - return fileName.toLower().endsWith(".zip") ? new ZipEngine(fileName) : 0; -} -//! [1] - - -//! [2] -QAbstractFileEngineIterator * -CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) -{ - return new CustomFileEngineIterator(filters, filterNames); -} -//! [2] - - -//! [3] -class CustomIterator : public QAbstractFileEngineIterator -{ -public: - CustomIterator(const QStringList &nameFilters, QDir::Filters filters) - : QAbstractFileEngineIterator(nameFilters, filters), index(0) - { - // In a real iterator, these entries are fetched from the - // file system based on the value of path(). - entries << "entry1" << "entry2" << "entry3"; - } - - bool hasNext() const - { - return index < entries.size() - 1; - } - - QString next() - { - if (!hasNext()) - return QString(); - ++index; - return currentFilePath(); - } - - QString currentFileName() - { - return entries.at(index); - } - -private: - QStringList entries; - int index; -}; -//! [3] diff --git a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp b/doc/src/snippets/code/src_corelib_io_qdatastream.cpp deleted file mode 100644 index af2d7d24bf..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp +++ /dev/null @@ -1,121 +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$ -** -****************************************************************************/ - -void wrapInFunction() -{ - -//! [0] -QFile file("file.dat"); -file.open(QIODevice::WriteOnly); -QDataStream out(&file); // we will serialize the data into the file -out << QString("the answer is"); // serialize a string -out << (qint32)42; // serialize an integer -//! [0] - - -//! [1] -QFile file("file.dat"); -file.open(QIODevice::ReadOnly); -QDataStream in(&file); // read the data serialized from the file -QString str; -qint32 a; -in >> str >> a; // extract "the answer is" and 42 -//! [1] - - -//! [2] -stream.setVersion(QDataStream::Qt_4_0); -//! [2] - - -//! [3] -QFile file("file.xxx"); -file.open(QIODevice::WriteOnly); -QDataStream out(&file); - -// Write a header with a "magic number" and a version -out << (quint32)0xA0B0C0D0; -out << (qint32)123; - -out.setVersion(QDataStream::Qt_4_0); - -// Write the data -out << lots_of_interesting_data; -//! [3] - - -//! [4] -QFile file("file.xxx"); -file.open(QIODevice::ReadOnly); -QDataStream in(&file); - -// Read and check the header -quint32 magic; -in >> magic; -if (magic != 0xA0B0C0D0) - return XXX_BAD_FILE_FORMAT; - -// Read the version -qint32 version; -in >> version; -if (version < 100) - return XXX_BAD_FILE_TOO_OLD; -if (version > 123) - return XXX_BAD_FILE_TOO_NEW; - -if (version <= 110) - in.setVersion(QDataStream::Qt_3_2); -else - in.setVersion(QDataStream::Qt_4_0); - -// Read the data -in >> lots_of_interesting_data; -if (version >= 120) - in >> data_new_in_XXX_version_1_2; -in >> other_interesting_data; -//! [4] - - -//! [5] -QDataStream out(file); -out.setVersion(QDataStream::Qt_4_0); -//! [5] - -} diff --git a/doc/src/snippets/code/src_corelib_io_qdir.cpp b/doc/src/snippets/code/src_corelib_io_qdir.cpp deleted file mode 100644 index 3c333e5642..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qdir.cpp +++ /dev/null @@ -1,175 +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$ -** -****************************************************************************/ - - -void wrapInFunction() -{ - -//! [0] -QDir("/home/user/Documents") -QDir("C:/Documents and Settings") -//! [0] - - -//! [1] -QDir("images/landscape.png") -//! [1] - - -//! [2] -QDir("Documents/Letters/Applications").dirName() // "Applications" -QDir().dirName() // "." -//! [2] - - -//! [3] -QDir directory("Documents/Letters"); -QString path = directory.filePath("contents.txt"); -QString absolutePath = directory.absoluteFilePath("contents.txt"); -//! [3] - - -//! [4] -QDir dir("example"); -if (!dir.exists()) - qWarning("Cannot find the example directory"); -//! [4] - - -//! [5] -QDir dir = QDir::root(); // "/" -if (!dir.cd("tmp")) { // "/tmp" - qWarning("Cannot find the \"/tmp\" directory"); -} else { - QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt" - if (!file.open(QIODevice::ReadWrite)) - qWarning("Cannot create the file %s", file.name()); -} -//! [5] - - -//! [6] -QString bin = "/local/bin"; // where /local/bin is a symlink to /usr/bin -QDir binDir(bin); -QString canonicalBin = binDir.canonicalPath(); -// canonicalBin now equals "/usr/bin" - -QString ls = "/local/bin/ls"; // where ls is the executable "ls" -QDir lsDir(ls); -QString canonicalLs = lsDir.canonicalPath(); -// canonicalLS now equals "/usr/bin/ls". -//! [6] - - -//! [7] -QDir dir("/home/bob"); -QString s; - -s = dir.relativeFilePath("images/file.jpg"); // s is "images/file.jpg" -s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt" -//! [7] - - -//! [8] -QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images")); -QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments")); -... -QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images" -QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path -//! [8] - - -//! [9] -QDir dir("/tmp/root_link"); -dir = dir.canonicalPath(); -if (dir.isRoot()) - qWarning("It is a root link"); -//! [9] - - -//! [10] -// The current directory is "/usr/local" -QDir d1("/usr/local/bin"); -QDir d2("bin"); -if (d1 == d2) - qDebug("They're the same"); -//! [10] - - -//! [11] -// The current directory is "/usr/local" -QDir d1("/usr/local/bin"); -d1.setFilter(QDir::Executable); -QDir d2("bin"); -if (d1 != d2) - qDebug("They differ"); -//! [11] - - -//! [12] -C:/Documents and Settings/Username -//! [12] - - -//! [13] -Q_INIT_RESOURCE(myapp); -//! [13] - - -//! [14] -inline void initMyResource() { Q_INIT_RESOURCE(myapp); } - -namespace MyNamespace -{ - ... - - void myFunction() - { - initMyResource(); - } -} -//! [14] - - -//! [15] -Q_CLEANUP_RESOURCE(myapp); -//! [15] - -} diff --git a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp b/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp deleted file mode 100644 index bf38bb1627..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp +++ /dev/null @@ -1,52 +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] -QDirIterator it("/etc", QDirIterator::Subdirectories); -while (it.hasNext()) { - qDebug() << it.next(); - - // /etc/. - // /etc/.. - // /etc/X11 - // /etc/X11/fs - // ... -} -//! [0] diff --git a/doc/src/snippets/code/src_corelib_io_qfile.cpp b/doc/src/snippets/code/src_corelib_io_qfile.cpp deleted file mode 100644 index 7ad24b30f1..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qfile.cpp +++ /dev/null @@ -1,75 +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] -QFile file; -QDir::setCurrent("/tmp"); -file.setFileName("readme.txt"); -QDir::setCurrent("/home"); -file.open(QIODevice::ReadOnly); // opens "/home/readme.txt" under Unix -//! [0] - - -//! [1] -QByteArray myEncoderFunc(const QString &fileName); -//! [1] - - -//! [2] -QString myDecoderFunc(const QByteArray &localFileName); -//! [2] - - -//! [3] -#include <stdio.h> - -void printError(const char* msg) -{ - QFile file; - file.open(stderr, QIODevice::WriteOnly); - file.write(msg, qstrlen(msg)); // write to stderr - file.close(); -} -//! [3] - - -//! [4] -CONFIG += console -//! [4] diff --git a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp b/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp deleted file mode 100644 index f565786934..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp +++ /dev/null @@ -1,146 +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$ -** -****************************************************************************/ - - -//![newstuff] - QFileInfo fi("c:/temp/foo"); => fi.absoluteFilePath() => "C:/temp/foo" -//![newstuff] - -//! [0] -#ifdef Q_OS_UNIX - -QFileInfo info1("/home/bob/bin/untabify"); -info1.isSymLink(); // returns true -info1.absoluteFilePath(); // returns "/home/bob/bin/untabify" -info1.size(); // returns 56201 -info1.symLinkTarget(); // returns "/opt/pretty++/bin/untabify" - -QFileInfo info2(info1.symLinkTarget()); -info2.isSymLink(); // returns false -info2.absoluteFilePath(); // returns "/opt/pretty++/bin/untabify" -info2.size(); // returns 56201 - -#endif -//! [0] - - -//! [1] -#ifdef Q_OS_WIN - -QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk"); -info1.isSymLink(); // returns true -info1.absoluteFilePath(); // returns "C:/Documents and Settings/Bob/untabify.lnk" -info1.size(); // returns 743 -info1.symLinkTarget(); // returns "C:/Pretty++/untabify" - -QFileInfo info2(info1.symLinkTarget()); -info2.isSymLink(); // returns false -info2.absoluteFilePath(); // returns "C:/Pretty++/untabify" -info2.size(); // returns 63942 - -#endif -//! [1] - - -//! [2] -QString absolute = "/local/bin"; -QString relative = "local/bin"; -QFileInfo absFile(absolute); -QFileInfo relFile(relative); - -QDir::setCurrent(QDir::rootPath()); -// absFile and relFile now point to the same file - -QDir::setCurrent("/tmp"); -// absFile now points to "/local/bin", -// while relFile points to "/tmp/local/bin" -//! [2] - - -//! [3] -QFileInfo fi("/tmp/archive.tar.gz"); -QString name = fi.fileName(); // name = "archive.tar.gz" -//! [3] - - -//! [4] -QFileInfo fi("/Applications/Safari.app"); -QString bundle = fi.bundleName(); // name = "Safari" -//! [4] - - -//! [5] -QFileInfo fi("/tmp/archive.tar.gz"); -QString base = fi.baseName(); // base = "archive" -//! [5] - - -//! [6] -QFileInfo fi("/tmp/archive.tar.gz"); -QString base = fi.completeBaseName(); // base = "archive.tar" -//! [6] - - -//! [7] -QFileInfo fi("/tmp/archive.tar.gz"); -QString ext = fi.completeSuffix(); // ext = "tar.gz" -//! [7] - - -//! [8] -QFileInfo fi("/tmp/archive.tar.gz"); -QString ext = fi.suffix(); // ext = "gz" -//! [8] - - -//! [9] -QFileInfo info(fileName); -if (info.isSymLink()) - fileName = info.symLinkTarget(); -//! [9] - - -//! [10] -QFileInfo fi("/tmp/archive.tar.gz"); -if (fi.permission(QFile::WriteUser | QFile::ReadGroup)) - qWarning("I can change the file; my group can read the file"); -if (fi.permission(QFile::WriteGroup | QFile::WriteOther)) - qWarning("The group or others can change the file"); -//! [10] diff --git a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp b/doc/src/snippets/code/src_corelib_io_qiodevice.cpp deleted file mode 100644 index 6018a21f89..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp +++ /dev/null @@ -1,99 +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] -QProcess gzip; -gzip.start("gzip", QStringList() << "-c"); -if (!gzip.waitForStarted()) - return false; - -gzip.write("uncompressed data"); - -QByteArray compressed; -while (gzip.waitForReadyRead()) - compressed += gzip.readAll(); -//! [0] - - -//! [1] -qint64 CustomDevice::bytesAvailable() const -{ - return buffer.size() + QIODevice::bytesAvailable(); -} -//! [1] - - -//! [2] -QFile file("box.txt"); -if (file.open(QFile::ReadOnly)) { - char buf[1024]; - qint64 lineLength = file.readLine(buf, sizeof(buf)); - if (lineLength != -1) { - // the line is available in buf - } -} -//! [2] - - -//! [3] -bool CustomDevice::canReadLine() const -{ - return buffer.contains('\n') || QIODevice::canReadLine(); -} -//! [3] - - -//! [4] -bool isExeFile(QFile *file) -{ - char buf[2]; - if (file->peek(buf, sizeof(buf)) == sizeof(buf)) - return (buf[0] == 'M' && buf[1] == 'Z'); - return false; -} -//! [4] - - -//! [5] -bool isExeFile(QFile *file) -{ - return file->peek(2) == "MZ"; -} -//! [5] diff --git a/doc/src/snippets/code/src_corelib_io_qprocess.cpp b/doc/src/snippets/code/src_corelib_io_qprocess.cpp deleted file mode 100644 index 16878f41e1..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qprocess.cpp +++ /dev/null @@ -1,134 +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$ -** -****************************************************************************/ - - -void wrapInFunction() -{ - -//! [0] -QProcess builder; -builder.setProcessChannelMode(QProcess::MergedChannels); -builder.start("make", QStringList() << "-j2"); - -if (!builder.waitForFinished()) - qDebug() << "Make failed:" << builder.errorString(); -else - qDebug() << "Make output:" << builder.readAll(); -//! [0] - - -//! [1] -QProcess more; -more.start("more"); -more.write("Text to display"); -more.closeWriteChannel(); -// QProcess will emit readyRead() once "more" starts printing -//! [1] - - -//! [2] -command1 | command2 -//! [2] - - -//! [3] -QProcess process1; -QProcess process2; - -process1.setStandardOutputProcess(&process2); - -process1.start("command1"); -process2.start("command2"); -//! [3] - - -//! [4] -class SandboxProcess : public QProcess -{ - ... - protected: - void setupChildProcess(); - ... -}; - -void SandboxProcess::setupChildProcess() -{ - // Drop all privileges in the child process, and enter - // a chroot jail. -#if defined Q_OS_UNIX - ::setgroups(0, 0); - ::chroot("/etc/safe"); - ::chdir("/"); - ::setgid(safeGid); - ::setuid(safeUid); - ::umask(0); -#endif -} - -//! [4] - - -//! [5] -QProcess process; -process.start("del /s *.txt"); -// same as process.start("del", QStringList() << "/s" << "*.txt"); -... -//! [5] - - -//! [6] -QProcess process; -process.start("dir \"My Documents\""); -//! [6] - - -//! [7] -QProcess process; -process.start("dir \"\"\"My Documents\"\"\""); -//! [7] - - -//! [8] -QStringList environment = QProcess::systemEnvironment(); -// environment = {"PATH=/usr/bin:/usr/local/bin", -// "USER=greg", "HOME=/home/greg"} -//! [8] - -} diff --git a/doc/src/snippets/code/src_corelib_io_qsettings.cpp b/doc/src/snippets/code/src_corelib_io_qsettings.cpp deleted file mode 100644 index c9ce7561ff..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qsettings.cpp +++ /dev/null @@ -1,316 +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] -QSettings settings("MySoft", "Star Runner"); -QColor color = settings.value("DataPump/bgcolor").value<QColor>(); -//! [0] - - -//! [1] -QSettings settings("MySoft", "Star Runner"); -QColor color = palette().background().color(); -settings.setValue("DataPump/bgcolor", color); -//! [1] - - -//! [2] -QSettings settings("/home/petra/misc/myapp.ini", - QSettings::IniFormat); -//! [2] - - -//! [3] -QSettings settings("/Users/petra/misc/myapp.plist", - QSettings::NativeFormat); -//! [3] - - -//! [4] -QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Office", - QSettings::NativeFormat); -//! [4] - - -//! [5] -settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0); -//! [5] - - -//! [6] -settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy", "Milkyway"); -settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Sun", "OurStar"); -settings.value("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Default"); // returns "Milkyway" -//! [6] - - -//! [7] -#ifdef Q_WS_MAC - QSettings settings("grenoullelogique.fr", "Squash"); -#else - QSettings settings("Grenoulle Logique", "Squash"); -#endif -//! [7] - - -//! [8] -pos = @Point(100 100) -//! [8] - - -//! [9] -windir = C:\Windows -//! [9] - - -//! [10] -QSettings settings("Moose Tech", "Facturo-Pro"); -//! [10] - - -//! [11] -QSettings settings("Moose Soft", "Facturo-Pro"); -//! [11] - - -//! [12] -QCoreApplication::setOrganizationName("Moose Soft"); -QCoreApplication::setApplicationName("Facturo-Pro"); -QSettings settings; -//! [12] - - -//! [13] -settings.beginGroup("mainwindow"); -settings.setValue("size", win->size()); -settings.setValue("fullScreen", win->isFullScreen()); -settings.endGroup(); - -settings.beginGroup("outputpanel"); -settings.setValue("visible", panel->isVisible()); -settings.endGroup(); -//! [13] - - -//! [14] -settings.beginGroup("alpha"); -// settings.group() == "alpha" - -settings.beginGroup("beta"); -// settings.group() == "alpha/beta" - -settings.endGroup(); -// settings.group() == "alpha" - -settings.endGroup(); -// settings.group() == "" -//! [14] - - -//! [15] -struct Login { - QString userName; - QString password; -}; -QList<Login> logins; -... - -QSettings settings; -int size = settings.beginReadArray("logins"); -for (int i = 0; i < size; ++i) { - settings.setArrayIndex(i); - Login login; - login.userName = settings.value("userName").toString(); - login.password = settings.value("password").toString(); - logins.append(login); -} -settings.endArray(); -//! [15] - - -//! [16] -struct Login { - QString userName; - QString password; -}; -QList<Login> logins; -... - -QSettings settings; -settings.beginWriteArray("logins"); -for (int i = 0; i < logins.size(); ++i) { - settings.setArrayIndex(i); - settings.setValue("userName", list.at(i).userName); - settings.setValue("password", list.at(i).password); -} -settings.endArray(); -//! [16] - - -//! [17] -QSettings settings; -settings.setValue("fridge/color", Qt::white); -settings.setValue("fridge/size", QSize(32, 96)); -settings.setValue("sofa", true); -settings.setValue("tv", false); - -QStringList keys = settings.allKeys(); -// keys: ["fridge/color", "fridge/size", "sofa", "tv"] -//! [17] - - -//! [18] -settings.beginGroup("fridge"); -keys = settings.allKeys(); -// keys: ["color", "size"] -//! [18] - - -//! [19] -QSettings settings; -settings.setValue("fridge/color", Qt::white); -settings.setValue("fridge/size", QSize(32, 96)); -settings.setValue("sofa", true); -settings.setValue("tv", false); - -QStringList keys = settings.childKeys(); -// keys: ["sofa", "tv"] -//! [19] - - -//! [20] -settings.beginGroup("fridge"); -keys = settings.childKeys(); -// keys: ["color", "size"] -//! [20] - - -//! [21] -QSettings settings; -settings.setValue("fridge/color", Qt::white); -settings.setValue("fridge/size", QSize(32, 96)); -settings.setValue("sofa", true); -settings.setValue("tv", false); - -QStringList groups = settings.childGroups(); -// groups: ["fridge"] -//! [21] - - -//! [22] -settings.beginGroup("fridge"); -groups = settings.childGroups(); -// groups: [] -//! [22] - - -//! [23] -QSettings settings; -settings.setValue("interval", 30); -settings.value("interval").toInt(); // returns 30 - -settings.setValue("interval", 6.55); -settings.value("interval").toDouble(); // returns 6.55 -//! [23] - - -//! [24] -QSettings settings; -settings.setValue("ape"); -settings.setValue("monkey", 1); -settings.setValue("monkey/sea", 2); -settings.setValue("monkey/doe", 4); - -settings.remove("monkey"); -QStringList keys = settings.allKeys(); -// keys: ["ape"] -//! [24] - - -//! [25] -QSettings settings; -settings.setValue("ape"); -settings.setValue("monkey", 1); -settings.setValue("monkey/sea", 2); -settings.setValue("monkey/doe", 4); - -settings.beginGroup("monkey"); -settings.remove(""); -settings.endGroup(); - -QStringList keys = settings.allKeys(); -// keys: ["ape"] -//! [25] - - -//! [26] -QSettings settings; -settings.setValue("animal/snake", 58); -settings.value("animal/snake", 1024).toInt(); // returns 58 -settings.value("animal/zebra", 1024).toInt(); // returns 1024 -settings.value("animal/zebra").toInt(); // returns 0 -//! [26] - - -//! [27] -bool myReadFunc(QIODevice &device, QSettings::SettingsMap &map); -//! [27] - - -//! [28] -bool myWriteFunc(QIODevice &device, const QSettings::SettingsMap &map); -//! [28] - - -//! [29] -bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map); -bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map); - -int main(int argc, char *argv[]) -{ - const QSettings::Format XmlFormat = - QSettings::registerFormat("xml", readXmlFile, writeXmlFile); - - QSettings settings(XmlFormat, QSettings::UserScope, "MySoft", - "Star Runner"); - - ... -} -//! [29] diff --git a/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp b/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp deleted file mode 100644 index 4e855f72f0..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp +++ /dev/null @@ -1,53 +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] - // Within a function/method... - - QTemporaryDir dir; - if (dir.isValid()) { - // dir.path() returns the unique directory path - } - - // The QTemporaryDir destructor removes the temporary directory - // as it goes out of scope. -//! [0] -} diff --git a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp b/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp deleted file mode 100644 index 2db3aace56..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp +++ /dev/null @@ -1,53 +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] - // Within a function/method... - - QTemporaryFile file; - if (file.open()) { - // file.fileName() returns the unique file name - } - - // The QTemporaryFile destructor removes the temporary file - // as it goes out of scope. -//! [0] -} diff --git a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp b/doc/src/snippets/code/src_corelib_io_qtextstream.cpp deleted file mode 100644 index c46cbb23d3..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp +++ /dev/null @@ -1,129 +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] -QFile data("output.txt"); -if (data.open(QFile::WriteOnly | QFile::Truncate)) { - QTextStream out(&data); - out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7; - // writes "Result: 3.14 2.7 " -} -//! [0] - - -//! [1] -QTextStream stream(stdin); -QString line; -do { - line = stream.readLine(); -} while (!line.isNull()); -//! [1] - - -//! [2] -QTextStream in("0x50 0x20"); -int firstNumber, secondNumber; - -in >> firstNumber; // firstNumber == 80 -in >> dec >> secondNumber; // secondNumber == 0 - -char ch; -in >> ch; // ch == 'x' -//! [2] - - -//! [3] -int main(int argc, char *argv[]) -{ - // read numeric arguments (123, 0x20, 4.5...) - for (int i = 1; i < argc; ++i) { - int number; - QTextStream in(argv[i]); - in >> number; - ... - } -} -//! [3] - - -//! [4] -QString str; -QTextStream in(stdin); -in >> str; -//! [4] - - -//! [5] -QString s; -QTextStream out(&s); -out.setFieldWidth(10); -out.setFieldAlignment(QTextStream::AlignCenter); -out.setPadChar('-'); -out << "Qt" << "rocks!"; -//! [5] - - -//! [6] -----Qt------rocks!-- -//! [6] - - -//! [7] -QTextStream in(file); -QChar ch1, ch2, ch3; -in >> ch1 >> ch2 >> ch3; -//! [7] - - -//! [8] -QTextStream out(stdout); -out << "Qt rocks!" << endl; -//! [8] - - -//! [9] -stream << '\n' << flush; -//! [9] - - -//! [10] -QTextStream out(&file); -out.setCodec("UTF-8"); -//! [10] diff --git a/doc/src/snippets/code/src_corelib_io_qurl.cpp b/doc/src/snippets/code/src_corelib_io_qurl.cpp deleted file mode 100644 index 8fd4b8ee9f..0000000000 --- a/doc/src/snippets/code/src_corelib_io_qurl.cpp +++ /dev/null @@ -1,87 +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] -QUrl url("http://www.example.com/List of holidays.xml"); -// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml" -//! [0] - - -//! [1] -QUrl url = QUrl::fromEncoded("http://qt.nokia.com/List%20of%20holidays.xml"); -//! [1] - - -//! [2] -bool checkUrl(const QUrl &url) { - if (!url.isValid()) { - qDebug(QString("Invalid URL: %1").arg(url.toString())); - return false; - } - - return true; -} -//! [2] - - -//! [3] -QTcpSocket sock; -sock.connectToHost(url.host(), url.port(80)); -//! [3] - - -//! [4] -http://www.example.com/cgi-bin/drawgraph.cgi?type(pie)color(green) -//! [4] - - -//! [5] -QUrl baseUrl("http://qt.nokia.com/support"); -QUrl relativeUrl("../products/solutions"); -qDebug(baseUrl.resolved(relativeUrl).toString()); -// prints "http://qt.nokia.com/products/solutions" -//! [5] - - -//! [6] -QByteArray ba = QUrl::toPercentEncoding("{a fishy string?}", "{}", "s"); -qDebug(ba.constData()); -// prints "{a fi%73hy %73tring%3F}" -//! [6] diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp deleted file mode 100644 index eba007e947..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp +++ /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] -bool myEventFilter(void *message); -//! [0] diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp deleted file mode 100644 index aa5b23265e..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp +++ /dev/null @@ -1,99 +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] -beginInsertRows(parent, 2, 4); -//! [0] - - -//! [1] -beginInsertRows(parent, 4, 5); -//! [1] - - -//! [2] -beginRemoveRows(parent, 2, 3); -//! [2] - - -//! [3] -beginInsertColumns(parent, 4, 6); -//! [3] - - -//! [4] -beginInsertColumns(parent, 6, 8); -//! [4] - - -//! [5] -beginRemoveColumns(parent, 4, 6); -//! [5] - - -//! [6] -beginMoveRows(sourceParent, 2, 4, destinationParent, 2); -//! [6] - - -//! [7] -beginMoveRows(sourceParent, 2, 4, destinationParent, 6); -//! [7] - - -//! [8] -beginMoveRows(parent, 2, 2, parent, 0); -//! [8] - - -//! [9] -beginMoveRows(parent, 2, 2, parent, 4); -//! [9] - -//! [10] -myData.clear(); -reset(); -//! [10] - -//! [11] -beginResetModel(); -myData.clear(); -endResetModel(); -//! [11] diff --git a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp b/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp deleted file mode 100644 index 8023e6a218..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp +++ /dev/null @@ -1,126 +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] -QMouseEvent event(QEvent::MouseButtonPress, pos, 0, 0, 0); -QApplication::sendEvent(mainWindow, &event); -//! [0] - - -//! [1] -QPushButton *quitButton = new QPushButton("Quit"); -connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit())); -//! [1] - - -//! [2] -foreach (const QString &path, app.libraryPaths()) - do_something(path); -//! [2] - - -//! [3] -bool myEventFilter(void *message, long *result); -//! [3] - - -//! [4] -static int *global_ptr = 0; - -static void cleanup_ptr() -{ - delete [] global_ptr; - global_ptr = 0; -} - -void init_ptr() -{ - global_ptr = new int[100]; // allocate data - qAddPostRoutine(cleanup_ptr); // delete later -} -//! [4] - - -//! [5] -class MyPrivateInitStuff : public QObject -{ -public: - static MyPrivateInitStuff *initStuff(QObject *parent) - { - if (!p) - p = new MyPrivateInitStuff(parent); - return p; - } - - ~MyPrivateInitStuff() - { - // cleanup goes here - } - -private: - MyPrivateInitStuff(QObject *parent) - : QObject(parent) - { - // initialization goes here - } - - MyPrivateInitStuff *p; -}; -//! [5] - - -//! [6] -static inline QString tr(const char *sourceText, - const char *comment = 0); -static inline QString trUtf8(const char *sourceText, - const char *comment = 0); -//! [6] - - -//! [7] -class MyMfcView : public CView -{ - Q_DECLARE_TR_FUNCTIONS(MyMfcView) - -public: - MyMfcView(); - ... -}; -//! [7] diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp deleted file mode 100644 index 7c0c2c2122..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp +++ /dev/null @@ -1,136 +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$ -** -****************************************************************************/ - - -void wrapInFunction() -{ - -//! [0] -class MyClass : public QObject -{ - Q_OBJECT - Q_CLASSINFO("author", "Sabrina Schweinsteiger") - Q_CLASSINFO("url", "http://doc.moosesoft.co.uk/1.0/") - -public: - ... -}; -//! [0] - - -//! [1] -QByteArray normType = QMetaObject::normalizedType(" int const *"); -// normType is now "const int*" -//! [1] - - -//! [2] -QMetaObject::invokeMethod(pushButton, "animateClick", - Qt::QueuedConnection); -//! [2] - - -//! [3] -QMetaObject::invokeMethod: Unable to handle unregistered datatype 'MyType' -//! [3] - - -//! [4] -QString retVal; -QMetaObject::invokeMethod(obj, "compute", Qt::DirectConnection, - Q_RETURN_ARG(QString, retVal), - Q_ARG(QString, "sqrt"), - Q_ARG(int, 42), - Q_ARG(double, 9.7)); -//! [4] - - -//! [5] -class MyClass -{ - Q_OBJECT - Q_CLASSINFO("author", "Sabrina Schweinsteiger") - Q_CLASSINFO("url", "http://doc.moosesoft.co.uk/1.0/") - -public: - ... -}; -//! [5] - - -//! [propertyCount] -const QMetaObject* metaObject = obj->metaObject(); -QStringList properties; -for(int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); ++i) - properties << QString::fromLatin1(metaObject->property(i).name()); -//! [propertyCount] - - -//! [methodCount] -const QMetaObject* metaObject = obj->metaObject(); -QStringList methods; -for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i) - methods << QString::fromLatin1(metaObject->method(i).methodSignature()); -//! [methodCount] - -//! [6] -int methodIndex = pushButton->metaObject()->indexOfMethod("animateClick()"); -QMetaMethod method = metaObject->method(methodIndex); -method.invoke(pushButton, Qt::QueuedConnection); -//! [6] - -//! [7] -QMetaMethod::invoke: Unable to handle unregistered datatype 'MyType' -//! [7] - -//! [8] -QString retVal; -QByteArray normalizedSignature = QMetaObject::normalizedSignature("compute(QString, int, double)"); -int methodIndex = obj->metaObject()->indexOfMethod(normalizedSignature); -QMetaMethod method = metaObject->method(methodIndex); -method.invoke(obj, - Qt::DirectConnection, - Q_RETURN_ARG(QString, retVal), - Q_ARG(QString, "sqrt"), - Q_ARG(int, 42), - Q_ARG(double, 9.7)); -//! [8] - -} diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp deleted file mode 100644 index d0a7a69884..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp +++ /dev/null @@ -1,114 +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] -struct MyStruct -{ - int i; - ... -}; - -Q_DECLARE_METATYPE(MyStruct) -//! [0] - - -//! [1] -namespace MyNamespace -{ - ... -} - -Q_DECLARE_METATYPE(MyNamespace::MyStruct) -//! [1] - - -//! [2] -MyStruct s; -QVariant var; -var.setValue(s); // copy s into the variant - -... - -// retrieve the value -MyStruct s2 = var.value<MyStruct>(); -//! [2] - - -//! [3] -int id = QMetaType::type("MyClass"); -if (id != QMetaType::UnknownType) { - void *myClassPtr = QMetaType::create(id); - ... - QMetaType::destroy(id, myClassPtr); - myClassPtr = 0; -} -//! [3] - - -//! [4] -qRegisterMetaType<MyClass>("MyClass"); -//! [4] - - -//! [5] -qRegisterMetaTypeStreamOperators<MyClass>("MyClass"); -//! [5] - - -//! [6] -QDataStream &operator<<(QDataStream &out, const MyClass &myObj); -QDataStream &operator>>(QDataStream &in, MyClass &myObj); -//! [6] - - -//! [7] -int id = qRegisterMetaType<MyStruct>(); -//! [7] - - -//! [8] -int id = qMetaTypeId<QString>(); // id is now QMetaType::QString -id = qMetaTypeId<MyStruct>(); // compile error if MyStruct not declared -//! [8] - -//! [9] -typedef QString CustomString; -qRegisterMetaType<CustomString>("CustomString"); -//! [9] diff --git a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp b/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp deleted file mode 100644 index de683cf463..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp +++ /dev/null @@ -1,108 +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] -void MyWidget::dragEnterEvent(QDragEnterEvent *event) -{ - if (event->mimeData()->hasUrls()) - event->acceptProposedAction(); -} - -void MyWidget::dropEvent(QDropEvent *event) -{ - if (event->mimeData()->hasUrls()) { - foreach (QUrl url, event->mimeData()->urls()) { - ... - } - } -} -//! [0] - - -//! [1] -QByteArray csvData = ...; - -QMimeData *mimeData = new QMimeData; -mimeData->setData("text/csv", csvData); -//! [1] - - -//! [2] -void MyWidget::dropEvent(QDropEvent *event) -{ - const MyMimeData *myData = - qobject_cast<const MyMimeData *>(event->mimeData()); - if (myData) { - // access myData's data directly (not through QMimeData's API) - } -} -//! [2] - - -//! [3] -application/x-qt-windows-mime;value="<custom type>" -//! [3] - - -//! [4] -application/x-qt-windows-mime;value="FileGroupDescriptor" -application/x-qt-windows-mime;value="FileContents" -//! [4] - - -//! [5] -if (event->mimeData()->hasImage()) { - QImage image = qvariant_cast<QImage>(event->mimeData()->imageData()); - ... -} -//! [5] - - -//! [6] -mimeData->setImageData(QImage("beautifulfjord.png")); -//! [6] - - -//! [7] -if (event->mimeData()->hasColor()) { - QColor color = qvariant_cast<QColor>(event->mimeData()->colorData()); - ... -} -//! [7] diff --git a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qobject.cpp deleted file mode 100644 index 5b27775322..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp +++ /dev/null @@ -1,493 +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] -QLineEdit *lineEdit = static_cast<QLineEdit *>( - qt_find_obj_child(myWidget, "QLineEdit", "my line edit")); -if (lineEdit) - lineEdit->setText("Default"); -//! [0] - - -//! [1] -QObject *obj = new QPushButton; -obj->metaObject()->className(); // returns "QPushButton" - -QPushButton::staticMetaObject.className(); // returns "QPushButton" -//! [1] - - -//! [2] -QPushButton::staticMetaObject.className(); // returns "QPushButton" - -QObject *obj = new QPushButton; -obj->metaObject()->className(); // returns "QPushButton" -//! [2] - - -//! [3] -QObject *obj = new QTimer; // QTimer inherits QObject - -QTimer *timer = qobject_cast<QTimer *>(obj); -// timer == (QObject *)obj - -QAbstractButton *button = qobject_cast<QAbstractButton *>(obj); -// button == 0 -//! [3] - - -//! [4] -QTimer *timer = new QTimer; // QTimer inherits QObject -timer->inherits("QTimer"); // returns true -timer->inherits("QObject"); // returns true -timer->inherits("QAbstractButton"); // returns false - -// QVBoxLayout inherits QObject and QLayoutItem -QVBoxLayout *layout = new QVBoxLayout; -layout->inherits("QObject"); // returns true -layout->inherits("QLayoutItem"); // returns true (even though QLayoutItem is not a QObject) -//! [4] - - -//! [5] -qDebug("MyClass::setPrecision(): (%s) invalid precision %f", - qPrintable(objectName()), newPrecision); -//! [5] - - -//! [6] -class MainWindow : public QMainWindow -{ -public: - MainWindow(); - -protected: - bool eventFilter(QObject *obj, QEvent *ev); - -private: - QTextEdit *textEdit; -}; - -MainWindow::MainWindow() -{ - textEdit = new QTextEdit; - setCentralWidget(textEdit); - - textEdit->installEventFilter(this); -} - -bool MainWindow::eventFilter(QObject *obj, QEvent *event) -{ - if (obj == textEdit) { - if (event->type() == QEvent::KeyPress) { - QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); - qDebug() << "Ate key press" << keyEvent->key(); - return true; - } else { - return false; - } - } else { - // pass the event on to the parent class - return QMainWindow::eventFilter(obj, event); - } -} -//! [6] - - -//! [7] -myObject->moveToThread(QApplication::instance()->thread()); -//! [7] - - -//! [8] -class MyObject : public QObject -{ - Q_OBJECT - -public: - MyObject(QObject *parent = 0); - -protected: - void timerEvent(QTimerEvent *event); -}; - -MyObject::MyObject(QObject *parent) - : QObject(parent) -{ - startTimer(50); // 50-millisecond timer - startTimer(1000); // 1-second timer - startTimer(60000); // 1-minute timer -} - -void MyObject::timerEvent(QTimerEvent *event) -{ - qDebug() << "Timer ID:" << event->timerId(); -} -//! [8] - - -//! [9] -QList<QObject *> list = window()->queryList("QAbstractButton")); -foreach (QObject *obj, list) - static_cast<QAbstractButton *>(obj)->setEnabled(false); -//! [9] - - -//! [10] -QPushButton *button = parentWidget->findChild<QPushButton *>("button1"); -//! [10] - - -//! [11] -QListWidget *list = parentWidget->findChild<QListWidget *>(); -//! [11] - - -//! [12] -QList<QWidget *> widgets = parentWidget.findChildren<QWidget *>("widgetname"); -//! [12] - - -//! [13] -QList<QPushButton *> allPButtons = parentWidget.findChildren<QPushButton *>(); -//! [13] - - -//! [14] -monitoredObj->installEventFilter(filterObj); -//! [14] - - -//! [15] -class KeyPressEater : public QObject -{ - Q_OBJECT - ... - -protected: - bool eventFilter(QObject *obj, QEvent *event); -}; - -bool KeyPressEater::eventFilter(QObject *obj, QEvent *event) -{ - if (event->type() == QEvent::KeyPress) { - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); - qDebug("Ate key press %d", keyEvent->key()); - return true; - } else { - // standard event processing - return QObject::eventFilter(obj, event); - } -} -//! [15] - - -//! [16] -KeyPressEater *keyPressEater = new KeyPressEater(this); -QPushButton *pushButton = new QPushButton(this); -QListView *listView = new QListView(this); - -pushButton->installEventFilter(keyPressEater); -listView->installEventFilter(keyPressEater); -//! [16] - - -//! [17] -MyWindow::MyWindow() -{ - QLabel *senderLabel = new QLabel(tr("Name:")); - QLabel *recipientLabel = new QLabel(tr("Name:", "recipient")); -//! [17] -} - - -//! [18] -int n = messages.count(); -showMessage(tr("%n message(s) saved", "", n)); -//! [18] - - -//! [19] -n == 1 ? tr("%n message saved") : tr("%n messages saved") -//! [19] - - -//! [20] -label->setText(tr("F\374r \310lise")); -//! [20] - - -//! [21] -if (receivers(SIGNAL(valueChanged(QByteArray))) > 0) { - QByteArray data; - get_the_value(&data); // expensive operation - emit valueChanged(data); -} -//! [21] - - -//! [22] -QLabel *label = new QLabel; -QScrollBar *scrollBar = new QScrollBar; -QObject::connect(scrollBar, SIGNAL(valueChanged(int)), - label, SLOT(setNum(int))); -//! [22] - - -//! [23] -// WRONG -QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), - label, SLOT(setNum(int value))); -//! [23] - - -//! [24] -class MyWidget : public QWidget -{ - Q_OBJECT - -public: - MyWidget(); - -signals: - void buttonClicked(); - -private: - QPushButton *myButton; -}; - -MyWidget::MyWidget() -{ - myButton = new QPushButton(this); - connect(myButton, SIGNAL(clicked()), - this, SIGNAL(buttonClicked())); -} -//! [24] - - -//! [25] -QObject::connect: Cannot queue arguments of type 'MyType' -(Make sure 'MyType' is registered using qRegisterMetaType().) -//! [25] - - -//! [26] -disconnect(myObject, 0, 0, 0); -//! [26] - - -//! [27] -myObject->disconnect(); -//! [27] - - -//! [28] -disconnect(myObject, SIGNAL(mySignal()), 0, 0); -//! [28] - - -//! [29] -myObject->disconnect(SIGNAL(mySignal())); -//! [29] - - -//! [30] -disconnect(myObject, 0, myReceiver, 0); -//! [30] - - -//! [31] -myObject->disconnect(myReceiver); -//! [31] - - -//! [32] -if (QLatin1String(signal) == SIGNAL(valueChanged(int))) { - // signal is valueChanged(int) -} -//! [32] - - -//! [33] -void on_<object name>_<signal name>(<signal parameters>); -//! [33] - - -//! [34] -void on_button1_clicked(); -//! [34] - - -//! [35] -class MyClass : public QObject -{ - Q_OBJECT - Q_CLASSINFO("Author", "Pierre Gendron") - Q_CLASSINFO("URL", "http://www.my-organization.qc.ca") - -public: - ... -}; -//! [35] - - -//! [36] -Q_PROPERTY(type name - READ getFunction - [WRITE setFunction] - [RESET resetFunction] - [NOTIFY notifySignal] - [DESIGNABLE bool] - [SCRIPTABLE bool] - [STORED bool] - [USER bool] - [CONSTANT] - [FINAL]) -//! [36] - - -//! [37] -Q_PROPERTY(QString title READ title WRITE setTitle USER true) -//! [37] - - -//! [38] -class MyClass : public QObject -{ - Q_OBJECT - Q_ENUMS(Priority) - -public: - MyClass(QObject *parent = 0); - ~MyClass(); - - enum Priority { High, Low, VeryHigh, VeryLow }; - void setPriority(Priority priority); - Priority priority() const; -}; -//! [38] - - -//! [39a] -class QLibrary : public QObject -{ - ... - Q_FLAGS(LoadHint LoadHints) - ... -//! [39a] - -//! [39b] - ... -public: - enum LoadHint { - ResolveAllSymbolsHint = 0x01, - ExportExternalSymbolsHint = 0x02, - LoadArchiveMemberHint = 0x04 - }; - Q_DECLARE_FLAGS(LoadHints, LoadHint) - ... -//! [39b] - - -//! [40] -//: This name refers to a host name. -hostNameLabel->setText(tr("Name:")); - -/*: This text refers to a C++ code example. */ -QString example = tr("Example"); -//! [40] - -//! [41] -QPushButton *button = parentWidget->findChild<QPushButton *>("button1", Qt::FindDirectChildOnly); -//! [41] - - -//! [42] -QListWidget *list = parentWidget->findChild<QListWidget *>(QString(), Qt::FindDirectChildOnly); -//! [42] - - -//! [43] -QList<QPushButton *> childButtons = parentWidget.findChildren<QPushButton *>(QString(), Qt::FindDirectChildOnly); -//! [43] - -//! [44] -QLabel *label = new QLabel; -QLineEdit *lineEdit = new QLineEdit; -QObject::connect(lineEdit, &QLineEdit::textChanged, - label, &QLabel::setText); -//! [44] - -//! [45] -void someFunction(); -QPushButton *button = new QPushButton; -QObject::connect(button, &QPushButton::clicked, someFunction); -//! [45] - -//! [46] -QByteArray page = ...; -QTcpSocket *socket = new QTcpSocket; -socket->connectToHost("qt-project.org", 80); -QObject::connect(socket, &QTcpSocket::connected, [=] () { - socket->write("GET " + page + "\r\n"); - }); -//! [46] - -//! [47] -disconnect(myObject, &MyObject::mySignal(), 0, 0); -//! [47] - -//! [48] -QObject::disconnect(lineEdit, &QLineEdit::textChanged, - label, &QLabel::setText); -//! [48] - -//! [meta data] -//: This is a comment for the translator. -//= qtn_foo_bar -//~ loc-layout_id foo_dialog -//~ loc-blank False -//~ magic-stuff This might mean something magic. -QString text = MyMagicClass::tr("Sim sala bim."); -//! [meta data] - -//! [explicit tr context] -QString text = QScrollBar::tr("Page up"); -//! [explicit tr context] diff --git a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp b/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp deleted file mode 100644 index da6e9fca8e..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp +++ /dev/null @@ -1,61 +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] -QSystemSemaphore sem("market", 3, QSystemSemaphore::Create); - // resources available == 3 -sem.acquire(); // resources available == 2 -sem.acquire(); // resources available == 1 -sem.acquire(); // resources available == 0 -sem.release(); // resources available == 1 -sem.release(2); // resources available == 3 -//! [0] - - -//! [1] -QSystemSemaphore sem("market", 5, QSystemSemaphore::Create); -sem.acquire(5); // acquire all 5 resources -sem.release(5); // release the 5 resources -//! [1] - - -//! [2] -sem.release(10); // "create" 10 new resources -//! [2] diff --git a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp b/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp deleted file mode 100644 index dfdef73e75..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp +++ /dev/null @@ -1,52 +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] -#include <QApplication> -#include <QTimer> - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - QTimer::singleShot(600000, &app, SLOT(quit())); - ... - return app.exec(); -} -//! [0] diff --git a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp b/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp deleted file mode 100644 index ae38c8372f..0000000000 --- a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp +++ /dev/null @@ -1,136 +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] -QDataStream out(...); -QVariant v(123); // The variant now contains an int -int x = v.toInt(); // x = 123 -out << v; // Writes a type tag and an int to out -v = QVariant("hello"); // The variant now contains a QByteArray -v = QVariant(tr("hello")); // The variant now contains a QString -int y = v.toInt(); // y = 0 since v cannot be converted to an int -QString s = v.toString(); // s = tr("hello") (see QObject::tr()) -out << v; // Writes a type tag and a QString to out -... -QDataStream in(...); // (opening the previously written stream) -in >> v; // Reads an Int variant -int z = v.toInt(); // z = 123 -qDebug("Type is %s", // prints "Type is int" - v.typeName()); -v = v.toInt() + 100; // The variant now hold the value 223 -v = QVariant(QStringList()); -//! [0] - - -//! [1] -QVariant x, y(QString()), z(QString("")); -x.convert(QVariant::Int); -// x.isNull() == true -// y.isNull() == true, z.isNull() == false -//! [1] - - -//! [2] -QVariant variant; -... -QColor color = variant.value<QColor>(); -//! [2] - - -//! [3] -QColor color = palette().background().color(); -QVariant variant = color; -//! [3] - - -//! [4] -QVariant v; - -v.setValue(5); -int i = v.toInt(); // i is now 5 -QString s = v.toString() // s is now "5" - -MyCustomStruct c; -v.setValue(c); - -... - -MyCustomStruct c2 = v.value<MyCustomStruct>(); -//! [4] - - -//! [5] -QVariant v; - -MyCustomStruct c; -if (v.canConvert<MyCustomStruct>()) - c = v.value<MyCustomStruct>(); - -v = 7; -int i = v.value<int>(); // same as v.toInt() -QString s = v.value<QString>(); // same as v.toString(), s is now "7" -MyCustomStruct c2 = v.value<MyCustomStruct>(); // conversion failed, c2 is empty -//! [5] - - -//! [6] -QVariant v = 42; - -v.canConvert<int>(); // returns true -v.canConvert<QString>(); // returns true - -MyCustomStruct s; -v.setValue(s); - -v.canConvert<int>(); // returns false -v.canConvert<MyCustomStruct>(); // returns true -//! [6] - - -//! [7] -MyCustomStruct s; -return QVariant::fromValue(s); -//! [7] - - -//! [8] -QObject *object = getObjectFromSomewhere(); -QVariant data = QVariant::fromValue(object); -//! [8] diff --git a/doc/src/snippets/code/src_corelib_mimetype_qmimedatabase.cpp b/doc/src/snippets/code/src_corelib_mimetype_qmimedatabase.cpp deleted file mode 100644 index e59a96b87a..0000000000 --- a/doc/src/snippets/code/src_corelib_mimetype_qmimedatabase.cpp +++ /dev/null @@ -1,47 +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] -QMimeDatabase db; -QMimeType mime = db.mimeTypeForFile(fileName); -if (mime.inherits("text/plain")) { - // The file is plain text, we can display it in a QTextEdit -} -//! [0] diff --git a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp b/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp deleted file mode 100644 index 9de685a7b5..0000000000 --- a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp +++ /dev/null @@ -1,84 +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] -QLibrary myLib("mylib"); -typedef void (*MyPrototype)(); -MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol"); -if (myFunction) - myFunction(); -//! [0] - - -//! [1] -typedef void (*MyPrototype)(); -MyPrototype myFunction = - (MyPrototype) QLibrary::resolve("mylib", "mysymbol"); -if (myFunction) - myFunction(); -//! [1] - - -//! [2] -typedef int (*AvgFunction)(int, int); - -AvgFunction avg = (AvgFunction) library->resolve("avg"); -if (avg) - return avg(5, 8); -else - return -1; -//! [2] - - -//! [3] -extern "C" MY_EXPORT int avg(int a, int b) -{ - return (a + b) / 2; -} -//! [3] - - -//! [4] -#ifdef Q_OS_WIN -#define MY_EXPORT __declspec(dllexport) -#else -#define MY_EXPORT -#endif -//! [4] diff --git a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp b/doc/src/snippets/code/src_corelib_plugin_quuid.cpp deleted file mode 100644 index 5c8f6ae091..0000000000 --- a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp +++ /dev/null @@ -1,44 +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] -// {67C8770B-44F1-410A-AB9A-F9B5446F13EE} -QUuid IID_MyInterface(0x67c8770b, 0x44f1, 0x410a, 0xab, 0x9a, 0xf9, 0xb5, 0x44, 0x6f, 0x13, 0xee) -//! [0] diff --git a/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp b/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp deleted file mode 100644 index e212470b75..0000000000 --- a/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp +++ /dev/null @@ -1,55 +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$ -** -****************************************************************************/ - -//! [simple state machine] -QPushButton button; - -QStateMachine machine; -QState *s1 = new QState(); -s1->assignProperty(&button, "text", "Click me"); - -QFinalState *s2 = new QFinalState(); -s1->addTransition(&button, SIGNAL(clicked()), s2); - -machine.addState(s1); -machine.addState(s2); -machine.setInitialState(s1); -machine.start(); -//! [simple state machine] diff --git a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp b/doc/src/snippets/code/src_corelib_thread_qatomic.cpp deleted file mode 100644 index 7e3d7dc7e4..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp +++ /dev/null @@ -1,98 +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] -MySharedType &MySharedType::operator=(const MySharedType &other) -{ - (void) other.data->atomicInt.ref(); - if (!data->atomicInt.deref()) { - // The last reference has been released - delete d; - } - d = other.d; - return *this; -} -//! [0] - - -//! [1] -if (currentValue == expectedValue) { - currentValue = newValue; - return true; -} -return false; -//! [1] - - -//! [2] -int originalValue = currentValue; -currentValue = newValue; -return originalValue; -//! [2] - - -//! [3] -int originalValue = currentValue; -currentValue += valueToAdd; -return originalValue; -//! [3] - - -//! [4] -if (currentValue == expectedValue) { - currentValue = newValue; - return true; -} -return false; -//! [4] - - -//! [5] -T *originalValue = currentValue; -currentValue = newValue; -return originalValue; -//! [5] - - -//! [6] -T *originalValue = currentValue; -currentValue += valueToAdd; -return originalValue; -//! [6] diff --git a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp b/doc/src/snippets/code/src_corelib_thread_qmutex.cpp deleted file mode 100644 index f5fbeb8419..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp +++ /dev/null @@ -1,193 +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] -int number = 6; - -void method1() -{ - number *= 5; - number /= 4; -} - -void method2() -{ - number *= 3; - number /= 2; -} -//! [0] - - -//! [1] -// method1() -number *= 5; // number is now 30 -number /= 4; // number is now 7 - -// method2() -number *= 3; // number is now 21 -number /= 2; // number is now 10 -//! [1] - - -//! [2] -// Thread 1 calls method1() -number *= 5; // number is now 30 - -// Thread 2 calls method2(). -// -// Most likely Thread 1 has been put to sleep by the operating -// system to allow Thread 2 to run. -number *= 3; // number is now 90 -number /= 2; // number is now 45 - -// Thread 1 finishes executing. -number /= 4; // number is now 11, instead of 10 -//! [2] - - -//! [3] -QMutex mutex; -int number = 6; - -void method1() -{ - mutex.lock(); - number *= 5; - number /= 4; - mutex.unlock(); -} - -void method2() -{ - mutex.lock(); - number *= 3; - number /= 2; - mutex.unlock(); -} -//! [3] - - -//! [4] -int complexFunction(int flag) -{ - mutex.lock(); - - int retVal = 0; - - switch (flag) { - case 0: - case 1: - retVal = moreComplexFunction(flag); - break; - case 2: - { - int status = anotherFunction(); - if (status < 0) { - mutex.unlock(); - return -2; - } - retVal = status + flag; - } - break; - default: - if (flag > 10) { - mutex.unlock(); - return -1; - } - break; - } - - mutex.unlock(); - return retVal; -} -//! [4] - - -//! [5] -int complexFunction(int flag) -{ - QMutexLocker locker(&mutex); - - int retVal = 0; - - switch (flag) { - case 0: - case 1: - return moreComplexFunction(flag); - case 2: - { - int status = anotherFunction(); - if (status < 0) - return -2; - retVal = status + flag; - } - break; - default: - if (flag > 10) - return -1; - break; - } - - return retVal; -} -//! [5] - - -//! [6] -class SignalWaiter -{ -private: - QMutexLocker locker; - -public: - SignalWaiter(QMutex *mutex) - : locker(mutex) - { - } - - void waitForSignal() - { - ... - while (!signalled) - waitCondition.wait(locker.mutex()); - ... - } -}; -//! [6] diff --git a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp b/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp deleted file mode 100644 index 29076db91c..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp +++ /dev/null @@ -1,61 +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] -class Number { -public: - Number(double n) : num (n) { } - - void setNumber(double n) { num = n; } - double number() const { return num; } - -private: - double num; -}; -//! [0] - - -//! [1] -void calcSquare(Number *num) -{ - QMutexLocker locker(mutexpool.get(num)); - num.setNumber(num.number() * num.number()); -} -//! [1] diff --git a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp b/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp deleted file mode 100644 index bd42c01905..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp +++ /dev/null @@ -1,109 +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] -QReadWriteLock lock; - -void ReaderThread::run() -{ - ... - lock.lockForRead(); - read_file(); - lock.unlock(); - ... -} - -void WriterThread::run() -{ - ... - lock.lockForWrite(); - write_file(); - lock.unlock(); - ... -} -//! [0] - - -//! [1] -QReadWriteLock lock; - -QByteArray readData() -{ - QReadLocker locker(&lock); - ... - return data; -} -//! [1] - - -//! [2] -QReadWriteLock lock; - -QByteArray readData() -{ - lock.lockForRead(); - ... - lock.unlock(); - return data; -} -//! [2] - - -//! [3] -QReadWriteLock lock; - -void writeData(const QByteArray &data) -{ - QWriteLocker locker(&lock); - ... -} -//! [3] - - -//! [4] -QReadWriteLock lock; - -void writeData(const QByteArray &data) -{ - lock.lockForWrite(); - ... - lock.unlock(); -} -//! [4] diff --git a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp b/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp deleted file mode 100644 index fd4ff98314..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp +++ /dev/null @@ -1,73 +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] -QSemaphore sem(5); // sem.available() == 5 - -sem.acquire(3); // sem.available() == 2 -sem.acquire(2); // sem.available() == 0 -sem.release(5); // sem.available() == 5 -sem.release(5); // sem.available() == 10 - -sem.tryAcquire(1); // sem.available() == 9, returns true -sem.tryAcquire(250); // sem.available() == 9, returns false -//! [0] - - -//! [1] -QSemaphore sem(5); // a semaphore that guards 5 resources -sem.acquire(5); // acquire all 5 resources -sem.release(5); // release the 5 resources -sem.release(10); // "create" 10 new resources -//! [1] - - -//! [2] -QSemaphore sem(5); // sem.available() == 5 -sem.tryAcquire(250); // sem.available() == 5, returns false -sem.tryAcquire(3); // sem.available() == 2, returns true -//! [2] - - -//! [3] -QSemaphore sem(5); // sem.available() == 5 -sem.tryAcquire(250, 1000); // sem.available() == 5, waits 1000 milliseconds and returns false -sem.tryAcquire(3, 30000); // sem.available() == 2, returns true without waiting -//! [3] diff --git a/doc/src/snippets/code/src_corelib_thread_qthread.cpp b/doc/src/snippets/code/src_corelib_thread_qthread.cpp deleted file mode 100644 index 681023c91b..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qthread.cpp +++ /dev/null @@ -1,56 +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] -class MyThread : public QThread -{ -public: - void run(); -}; - -void MyThread::run() -{ - QTcpSocket socket; - // connect QTcpSocket's signals somewhere meaningful - ... - socket.connectToHost(hostName, portNumber); - exec(); -} -//! [0] diff --git a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp b/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp deleted file mode 100644 index 149cae5bf6..0000000000 --- a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp +++ /dev/null @@ -1,89 +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] -forever { - mutex.lock(); - keyPressed.wait(&mutex); - do_something(); - mutex.unlock(); -} -//! [0] - - -//! [1] -forever { - getchar(); - keyPressed.wakeAll(); -} -//! [1] - - -//! [2] -forever { - mutex.lock(); - keyPressed.wait(&mutex); - ++count; - mutex.unlock(); - - do_something(); - - mutex.lock(); - --count; - mutex.unlock(); -} -//! [2] - - -//! [3] -forever { - getchar(); - - mutex.lock(); - // Sleep until there are no busy worker threads - while (count > 0) { - mutex.unlock(); - sleep(1); - mutex.lock(); - } - keyPressed.wakeAll(); - mutex.unlock(); -} -//! [3] diff --git a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp b/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp deleted file mode 100644 index cfaa6ef485..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp +++ /dev/null @@ -1,176 +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] -QBitArray ba(200); -//! [0] - - -//! [1] -QBitArray ba; -ba.resize(3); -ba[0] = true; -ba[1] = false; -ba[2] = true; -//! [1] - - -//! [2] -QBitArray ba(3); -ba.setBit(0, true); -ba.setBit(1, false); -ba.setBit(2, true); -//! [2] - - -//! [3] -QBitArray x(5); -x.setBit(3, true); -// x: [ 0, 0, 0, 1, 0 ] - -QBitArray y(5); -y.setBit(4, true); -// y: [ 0, 0, 0, 0, 1 ] - -x |= y; -// x: [ 0, 0, 0, 1, 1 ] -//! [3] - - -//! [4] -QBitArray().isNull(); // returns true -QBitArray().isEmpty(); // returns true - -QBitArray(0).isNull(); // returns false -QBitArray(0).isEmpty(); // returns true - -QBitArray(3).isNull(); // returns false -QBitArray(3).isEmpty(); // returns false -//! [4] - - -//! [5] -QBitArray().isNull(); // returns true -QBitArray(0).isNull(); // returns false -QBitArray(3).isNull(); // returns false -//! [5] - - -//! [6] -QBitArray ba(8); -ba.fill(true); -// ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ] - -ba.fill(false, 2); -// ba: [ 0, 0 ] -//! [6] - - -//! [7] -QBitArray a(3); -a[0] = false; -a[1] = true; -a[2] = a[0] ^ a[1]; -//! [7] - - -//! [8] -QBitArray a(3); -QBitArray b(2); -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -a &= b; // a: [ 1, 0, 0 ] -//! [8] - - -//! [9] -QBitArray a(3); -QBitArray b(2); -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -a |= b; // a: [ 1, 1, 1 ] -//! [9] - - -//! [10] -QBitArray a(3); -QBitArray b(2); -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -a ^= b; // a: [ 0, 1, 1 ] -//! [10] - - -//! [11] -QBitArray a(3); -QBitArray b; -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b = ~a; // b: [ 0, 1, 0 ] -//! [11] - - -//! [12] -QBitArray a(3); -QBitArray b(2); -QBitArray c; -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -c = a & b; // c: [ 1, 0, 0 ] -//! [12] - - -//! [13] -QBitArray a(3); -QBitArray b(2); -QBitArray c; -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -c = a | b; // c: [ 1, 1, 1 ] -//! [13] - - -//! [14] -QBitArray a(3); -QBitArray b(2); -QBitArray c; -a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ] -b[0] = 1; b[1] = 0; // b: [ 1, 1 ] -c = a ^ b; // c: [ 0, 1, 1 ] -//! [14] diff --git a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp b/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp deleted file mode 100644 index a232f490b2..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp +++ /dev/null @@ -1,421 +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$ -** -****************************************************************************/ - - -void wrapInFunction() -{ - -//! [0] -QByteArray ba("Hello"); -//! [0] - - -//! [1] -QByteArray ba; -ba.resize(5); -ba[0] = 0x3c; -ba[1] = 0xb8; -ba[2] = 0x64; -ba[3] = 0x18; -ba[4] = 0xca; -//! [1] - - -//! [2] -for (int i = 0; i < ba.size(); ++i) { - if (ba.at(i) >= 'a' && ba.at(i) <= 'f') - cout << "Found character in range [a-f]" << endl; -} -//! [2] - - -//! [3] -QByteArray x("and"); -x.prepend("rock "); // x == "rock and" -x.append(" roll"); // x == "rock and roll" -x.replace(5, 3, "&"); // x == "rock & roll" -//! [3] - - -//! [4] -QByteArray ba("We must be <b>bold</b>, very <b>bold</b>"); -int j = 0; -while ((j = ba.indexOf("<b>", j)) != -1) { - cout << "Found <b> tag at index position " << j << endl; - ++j; -} -//! [4] - - -//! [5] -QByteArray().isNull(); // returns true -QByteArray().isEmpty(); // returns true - -QByteArray("").isNull(); // returns false -QByteArray("").isEmpty(); // returns true - -QByteArray("abc").isNull(); // returns false -QByteArray("abc").isEmpty(); // returns false -//! [5] - - -//! [6] -QByteArray ba("Hello"); -int n = ba.size(); // n == 5 -ba.data()[0]; // returns 'H' -ba.data()[4]; // returns 'o' -ba.data()[5]; // returns '\0' -//! [6] - - -//! [7] -QByteArray().isEmpty(); // returns true -QByteArray("").isEmpty(); // returns true -QByteArray("abc").isEmpty(); // returns false -//! [7] - - -//! [8] -QByteArray ba("Hello world"); -char *data = ba.data(); -while (*data) { - cout << "[" << *data << "]" << endl; - ++data; -} -//! [8] - - -//! [9] -QByteArray ba; -for (int i = 0; i < 10; ++i) - ba[i] = 'A' + i; -// ba == "ABCDEFGHIJ" -//! [9] - - -//! [10] -QByteArray ba("Stockholm"); -ba.truncate(5); // ba == "Stock" -//! [10] - - -//! [11] -QByteArray ba("STARTTLS\r\n"); -ba.chop(2); // ba == "STARTTLS" -//! [11] - - -//! [12] -QByteArray x("free"); -QByteArray y("dom"); -x += y; -// x == "freedom" -//! [12] - - -//! [13] -QByteArray().isNull(); // returns true -QByteArray("").isNull(); // returns false -QByteArray("abc").isNull(); // returns false -//! [13] - - -//! [14] -QByteArray ba("Istambul"); -ba.fill('o'); -// ba == "oooooooo" - -ba.fill('X', 2); -// ba == "XX" -//! [14] - - -//! [15] -QByteArray x("ship"); -QByteArray y("air"); -x.prepend(y); -// x == "airship" -//! [15] - - -//! [16] -QByteArray x("free"); -QByteArray y("dom"); -x.append(y); -// x == "freedom" -//! [16] - - -//! [17] -QByteArray ba("Meal"); -ba.insert(1, QByteArray("ontr")); -// ba == "Montreal" -//! [17] - - -//! [18] -QByteArray ba("Montreal"); -ba.remove(1, 4); -// ba == "Meal" -//! [18] - - -//! [19] -QByteArray x("Say yes!"); -QByteArray y("no"); -x.replace(4, 3, y); -// x == "Say no!" -//! [19] - - -//! [20] -QByteArray ba("colour behaviour flavour neighbour"); -ba.replace(QByteArray("ou"), QByteArray("o")); -// ba == "color behavior flavor neighbor" -//! [20] - - -//! [21] -QByteArray x("sticky question"); -QByteArray y("sti"); -x.indexOf(y); // returns 0 -x.indexOf(y, 1); // returns 10 -x.indexOf(y, 10); // returns 10 -x.indexOf(y, 11); // returns -1 -//! [21] - - -//! [22] -QByteArray ba("ABCBA"); -ba.indexOf("B"); // returns 1 -ba.indexOf("B", 1); // returns 1 -ba.indexOf("B", 2); // returns 3 -ba.indexOf("X"); // returns -1 -//! [22] - - -//! [23] -QByteArray x("crazy azimuths"); -QByteArray y("az"); -x.lastIndexOf(y); // returns 6 -x.lastIndexOf(y, 6); // returns 6 -x.lastIndexOf(y, 5); // returns 2 -x.lastIndexOf(y, 1); // returns -1 -//! [23] - - -//! [24] -QByteArray ba("ABCBA"); -ba.lastIndexOf("B"); // returns 3 -ba.lastIndexOf("B", 3); // returns 3 -ba.lastIndexOf("B", 2); // returns 1 -ba.lastIndexOf("X"); // returns -1 -//! [24] - - -//! [25] -QByteArray url("ftp://ftp.qt.nokia.com/"); -if (url.startsWith("ftp:")) - ... -//! [25] - - -//! [26] -QByteArray url("http://qt.nokia.com/index.html"); -if (url.endsWith(".html")) - ... -//! [26] - - -//! [27] -QByteArray x("Pineapple"); -QByteArray y = x.left(4); -// y == "Pine" -//! [27] - - -//! [28] -QByteArray x("Pineapple"); -QByteArray y = x.right(5); -// y == "apple" -//! [28] - - -//! [29] -QByteArray x("Five pineapples"); -QByteArray y = x.mid(5, 4); // y == "pine" -QByteArray z = x.mid(5); // z == "pineapples" -//! [29] - - -//! [30] -QByteArray x("Qt by NOKIA"); -QByteArray y = x.toLower(); -// y == "qt by nokia" -//! [30] - - -//! [31] -QByteArray x("Qt by NOKIA"); -QByteArray y = x.toUpper(); -// y == "QT BY NOKIA" -//! [31] - - -//! [32] -QByteArray ba(" lots\t of\nwhitespace\r\n "); -ba = ba.simplified(); -// ba == "lots of whitespace"; -//! [32] - - -//! [33] -QByteArray ba(" lots\t of\nwhitespace\r\n "); -ba = ba.trimmed(); -// ba == "lots\t of\nwhitespace"; -//! [33] - - -//! [34] -QByteArray x("apple"); -QByteArray y = x.leftJustified(8, '.'); // y == "apple..." -//! [34] - - -//! [35] -QByteArray x("apple"); -QByteArray y = x.rightJustified(8, '.'); // y == "...apple" -//! [35] - - -//! [36] -QByteArray str("FF"); -bool ok; -int hex = str.toInt(&ok, 16); // hex == 255, ok == true -int dec = str.toInt(&ok, 10); // dec == 0, ok == false -//! [36] - - -//! [37] -QByteArray str("FF"); -bool ok; -long hex = str.toLong(&ok, 16); // hex == 255, ok == true -long dec = str.toLong(&ok, 10); // dec == 0, ok == false -//! [37] - - -//! [38] -QByteArray string("1234.56"); -double a = string.toDouble(); // a == 1234.56 -//! [38] - - -//! [39] -QByteArray text("Qt is great!"); -text.toBase64(); // returns "UXQgaXMgZ3JlYXQh" -//! [39] - - -//! [40] -QByteArray ba; -int n = 63; -ba.setNum(n); // ba == "63" -ba.setNum(n, 16); // ba == "3f" -//! [40] - - -//! [41] -int n = 63; -QByteArray::number(n); // returns "63" -QByteArray::number(n, 16); // returns "3f" -QByteArray::number(n, 16).toUpper(); // returns "3F" -//! [41] - - -//! [42] -QByteArray ba = QByteArray::number(12.3456, 'E', 3); -// ba == 1.235E+01 -//! [42] - - -//! [43] - static const char mydata[] = { - 0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76, - 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99, - ... - 0x6d, 0x5b -}; - -QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata)); -QDataStream in(&data, QIODevice::ReadOnly); -... -//! [43] - - -//! [44] -QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh"); -text.data(); // returns "Qt is great!" -//! [44] - - -//! [45] -QByteArray text = QByteArray::fromHex("517420697320677265617421"); -text.data(); // returns "Qt is great!" -//! [45] - -//! [46] -QString tmp = "test"; -QByteArray text = tmp.toLocal8Bit(); -char *data = new char[text.size()] -strcpy(data, text.data()); -delete [] data; -//! [46] - -//! [47] -QString tmp = "test"; -QByteArray text = tmp.toLocal8Bit(); -char *data = new char[text.size() + 1] -strcpy(data, text.data()); -delete [] data; -//! [47] - -} - - diff --git a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp b/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp deleted file mode 100644 index 59cd67fe6d..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp +++ /dev/null @@ -1,146 +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] -QDate d1(1995, 5, 17); // May 17, 1995 -QDate d2(1995, 5, 20); // May 20, 1995 -d1.daysTo(d2); // returns 3 -d2.daysTo(d1); // returns -3 -//! [0] - - -//! [1] -QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy"); -// date is 1 December 2003 -//! [1] - - -//! [2] -QDate date = QDate::fromString("130", "Md"); // invalid -//! [2] - - -//! [3] -QDate::fromString("1.30", "M.d"); // January 30 1900 -QDate::fromString("20000110", "yyyyMMdd"); // January 10, 2000 -QDate::fromString("20000110", "yyyyMd"); // January 10, 2000 -//! [3] - - -//! [4] -QDate::isValid(2002, 5, 17); // true -QDate::isValid(2002, 2, 30); // false (Feb 30 does not exist) -QDate::isValid(2004, 2, 29); // true (2004 is a leap year) -QDate::isValid(2000, 2, 29); // true (2000 is a leap year) -QDate::isValid(2006, 2, 29); // false (2006 is not a leap year) -QDate::isValid(2100, 2, 29); // false (2100 is not a leap year) -QDate::isValid(1202, 6, 6); // true (even though 1202 is pre-Gregorian) -//! [4] - - -//! [5] -QTime n(14, 0, 0); // n == 14:00:00 -QTime t; -t = n.addSecs(70); // t == 14:01:10 -t = n.addSecs(-70); // t == 13:58:50 -t = n.addSecs(10 * 60 * 60 + 5); // t == 00:00:05 -t = n.addSecs(-15 * 60 * 60); // t == 23:00:00 -//! [5] - - -//! [6] -QTime time = QTime::fromString("1mm12car00", "m'mm'hcarss"); -// time is 12:01.00 -//! [6] - - -//! [7] -QTime time = QTime::fromString("00:710", "hh:ms"); // invalid -//! [7] - - -//! [8] -QTime time = QTime::fromString("1.30", "m.s"); -// time is 00:01:30.000 -//! [8] - - -//! [9] -QTime::isValid(21, 10, 30); // returns true -QTime::isValid(22, 5, 62); // returns false -//! [9] - - -//! [10] -QTime t; -t.start(); -some_lengthy_task(); -qDebug("Time elapsed: %d ms", t.elapsed()); -//! [10] - - -//! [11] -QDateTime now = QDateTime::currentDateTime(); -QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); -qDebug("There are %d seconds to Christmas", now.secsTo(xmas)); -//! [11] - - -//! [12] -QTime time1 = QTime::fromString("131", "HHh"); -// time1 is 13:00:00 -QTime time1 = QTime::fromString("1apA", "1amAM"); -// time1 is 01:00:00 - -QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02", - "'M'M'd'd'y'yyhh:mm:ss"); -// dateTime is 1 January 1998 00:01:02 -//! [12] - - -//! [13] -QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid -//! [13] - - -//! [14] -QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s"); -// dateTime is January 30 in 1900 at 00:00:01. -//! [14] diff --git a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp b/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp deleted file mode 100644 index 3aa0d986af..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp +++ /dev/null @@ -1,44 +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] -qreal myEasingFunction(qreal progress); -//! [0] - diff --git a/doc/src/snippets/code/src_corelib_tools_qhash.cpp b/doc/src/snippets/code/src_corelib_tools_qhash.cpp deleted file mode 100644 index 2fa73bac46..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qhash.cpp +++ /dev/null @@ -1,299 +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] -QHash<QString, int> hash; -//! [0] - - -//! [1] -hash["one"] = 1; -hash["three"] = 3; -hash["seven"] = 7; -//! [1] - - -//! [2] -hash.insert("twelve", 12); -//! [2] - - -//! [3] -int num1 = hash["thirteen"]; -int num2 = hash.value("thirteen"); -//! [3] - - -//! [4] -int timeout = 30; -if (hash.contains("TIMEOUT")) - timeout = hash.value("TIMEOUT"); -//! [4] - - -//! [5] -int timeout = hash.value("TIMEOUT", 30); -//! [5] - - -//! [6] -// WRONG -QHash<int, QWidget *> hash; -... -for (int i = 0; i < 1000; ++i) { - if (hash[i] == okButton) - cout << "Found button at index " << i << endl; -} -//! [6] - - -//! [7] -QHashIterator<QString, int> i(hash); -while (i.hasNext()) { - i.next(); - cout << i.key() << ": " << i.value() << endl; -} -//! [7] - - -//! [8] -QHash<QString, int>::const_iterator i = hash.constBegin(); -while (i != hash.constEnd()) { - cout << i.key() << ": " << i.value() << endl; - ++i; -} -//! [8] - - -//! [9] -hash.insert("plenty", 100); -hash.insert("plenty", 2000); -// hash.value("plenty") == 2000 -//! [9] - - -//! [10] -QList<int> values = hash.values("plenty"); -for (int i = 0; i < values.size(); ++i) - cout << values.at(i) << endl; -//! [10] - - -//! [11] -QHash<QString, int>::iterator i = hash.find("plenty"); -while (i != hash.end() && i.key() == "plenty") { - cout << i.value() << endl; - ++i; -} -//! [11] - - -//! [12] -QHash<QString, int> hash; -... -foreach (int value, hash) - cout << value << endl; -//! [12] - - -//! [13] -#ifndef EMPLOYEE_H -#define EMPLOYEE_H - -class Employee -{ -public: - Employee() {} - Employee(const QString &name, const QDate &dateOfBirth); - ... - -private: - QString myName; - QDate myDateOfBirth; -}; - -inline bool operator==(const Employee &e1, const Employee &e2) -{ - return e1.name() == e2.name() - && e1.dateOfBirth() == e2.dateOfBirth(); -} - -inline uint qHash(const Employee &key, uint seed) -{ - return qHash(key.name(), seed) ^ key.dateOfBirth().day(); -} - -#endif // EMPLOYEE_H -//! [13] - - -//! [14] -QHash<QString, int> hash; -hash.reserve(20000); -for (int i = 0; i < 20000; ++i) - hash.insert(keys[i], values[i]); -//! [14] - - -//! [15] -QHash<QObject *, int> objectHash; -... -QHash<QObject *, int>::iterator i = objectHash.find(obj); -while (i != objectHash.end() && i.key() == obj) { - if (i.value() == 0) { - i = objectHash.erase(i); - } else { - ++i; - } -} -//! [15] - - -//! [16] -QHash<QString, int> hash; -... -QHash<QString, int>::const_iterator i = hash.find("HDR"); -while (i != hash.end() && i.key() == "HDR") { - cout << i.value() << endl; - ++i; -} -//! [16] - - -//! [17] -QHash<QString, int> hash; -hash.insert("January", 1); -hash.insert("February", 2); -... -hash.insert("December", 12); - -QHash<QString, int>::iterator i; -for (i = hash.begin(); i != hash.end(); ++i) - cout << i.key() << ": " << i.value() << endl; -//! [17] - - -//! [18] -QHash<QString, int>::iterator i; -for (i = hash.begin(); i != hash.end(); ++i) - i.value() += 2; -//! [18] - - -//! [19] -QHash<QString, int>::iterator i = hash.begin(); -while (i != hash.end()) { - if (i.key().startsWith("_")) - i = hash.erase(i); - else - ++i; -} -//! [19] - - -//! [20] -QHash<QString, int>::iterator i = hash.begin(); -while (i != hash.end()) { - QHash<QString, int>::iterator prev = i; - ++i; - if (prev.key().startsWith("_")) - hash.erase(prev); -} -//! [20] - - -//! [21] -// WRONG -while (i != hash.end()) { - if (i.key().startsWith("_")) - hash.erase(i); - ++i; -} -//! [21] - - -//! [22] -if (i.key() == "Hello") - i.value() = "Bonjour"; -//! [22] - - -//! [23] -QHash<QString, int> hash; -hash.insert("January", 1); -hash.insert("February", 2); -... -hash.insert("December", 12); - -QHash<QString, int>::const_iterator i; -for (i = hash.constBegin(); i != hash.constEnd(); ++i) - cout << i.key() << ": " << i.value() << endl; -//! [23] - - -//! [24] -QMultiHash<QString, int> hash1, hash2, hash3; - -hash1.insert("plenty", 100); -hash1.insert("plenty", 2000); -// hash1.size() == 2 - -hash2.insert("plenty", 5000); -// hash2.size() == 1 - -hash3 = hash1 + hash2; -// hash3.size() == 3 -//! [24] - - -//! [25] -QList<int> values = hash.values("plenty"); -for (int i = 0; i < values.size(); ++i) - cout << values.at(i) << endl; -//! [25] - - -//! [26] -QMultiHash<QString, int>::iterator i = hash.find("plenty"); -while (i != hash.end() && i.key() == "plenty") { - cout << i.value() << endl; - ++i; -} -//! [26] diff --git a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp b/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp deleted file mode 100644 index b9861f16c0..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp +++ /dev/null @@ -1,204 +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] -QLinkedList<int> integerList; -QLinkedList<QTime> timeList; -//! [0] - - -//! [1] -QLinkedList<QString> list; -list << "one" << "two" << "three"; -// list: ["one", "two", "three"] -//! [1] - - -//! [2] -QLinkedList<QWidget *> list; -... -while (!list.isEmpty()) - delete list.takeFirst(); -//! [2] - - -//! [3] -QLinkedList<QString> list; -list.append("one"); -list.append("two"); -list.append("three"); -// list: ["one", "two", "three"] -//! [3] - - -//! [4] -QLinkedList<QString> list; -list.prepend("one"); -list.prepend("two"); -list.prepend("three"); -// list: ["three", "two", "one"] -//! [4] - - -//! [5] -QList<QString> list; -list << "sun" << "cloud" << "sun" << "rain"; -list.removeAll("sun"); -// list: ["cloud", "rain"] -//! [5] - - -//! [6] -QList<QString> list; -list << "sun" << "cloud" << "sun" << "rain"; -list.removeOne("sun"); -// list: ["cloud", "sun", "rain"] -//! [6] - - -//! [7] -QLinkedList<QString> list; -list.append("January"); -list.append("February"); -... -list.append("December"); - -QLinkedList<QString>::iterator i; -for (i = list.begin(); i != list.end(); ++i) - cout << *i << endl; -//! [7] - - -//! [8] -QLinkedList<QString> list; -... -QLinkedList<QString>::iterator it = qFind(list.begin(), - list.end(), "Joel"); -if (it != list.end()) - cout << "Found Joel" << endl; -//! [8] - - -//! [9] -QLinkedList<int>::iterator i; -for (i = list.begin(); i != list.end(); ++i) - *i += 2; -//! [9] - - -//! [10] -QLinkedList<QString> list; -... -QLinkedList<QString>::iterator i = list.begin(); -while (i != list.end()) { - if ((*i).startsWith("_")) - i = list.erase(i); - else - ++i; -} -//! [10] - - -//! [11] -QLinkedList<QString>::iterator i = list.begin(); -while (i != list.end()) { - QLinkedList<QString>::iterator previous = i; - ++i; - if ((*previous).startsWith("_")) - list.erase(previous); -} -//! [11] - - -//! [12] -// WRONG -while (i != list.end()) { - if ((*i).startsWith("_")) - list.erase(i); - ++i; -} -//! [12] - - -//! [13] -if (*it == "Hello") - *it = "Bonjour"; -//! [13] - - -//! [14] -QLinkedList<QString> list; -list.append("January"); -list.append("February"); -... -list.append("December"); - -QLinkedList<QString>::const_iterator i; -for (i = list.constBegin(); i != list.constEnd(); ++i) - cout << *i << endl; -//! [14] - - -//! [15] -QLinkedList<QString> list; -... -QLinkedList<QString>::iterator it = qFind(list.constBegin(), - list.constEnd(), "Joel"); -if (it != list.constEnd()) - cout << "Found Joel" << endl; -//! [15] - - -//! [16] -std::list<double> stdlist; -list.push_back(1.2); -list.push_back(0.5); -list.push_back(3.14); - -QLinkedList<double> list = QLinkedList<double>::fromStdList(stdlist); -//! [16] - - -//! [17] -QLinkedList<double> list; -list << 1.2 << 0.5 << 3.14; - -std::list<double> stdlist = list.toStdList(); -//! [17] diff --git a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp b/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp deleted file mode 100644 index dca5473cd6..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp +++ /dev/null @@ -1,267 +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] -QList<int> integerList; -QList<QDate> dateList; -//! [0] - - -//! [1] -QList<QString> list; -list << "one" << "two" << "three"; -// list: ["one", "two", "three"] -//! [1] - - -//! [2] -if (list[0] == "Bob") - list[0] = "Robert"; -//! [2] - - -//! [3] -for (int i = 0; i < list.size(); ++i) { - if (list.at(i) == "Jane") - cout << "Found Jane at position " << i << endl; -} -//! [3] - - -//! [4] -QList<QWidget *> list; -... -while (!list.isEmpty()) - delete list.takeFirst(); -//! [4] - - -//! [5] -int i = list.indexOf("Jane"); -if (i != -1) - cout << "First occurrence of Jane is at position " << i << endl; -//! [5] - - -//! [6] -QList<QString> list; -list.append("one"); -list.append("two"); -list.append("three"); -// list: ["one", "two", "three"] -//! [6] - - -//! [7] -QList<QString> list; -list.prepend("one"); -list.prepend("two"); -list.prepend("three"); -// list: ["three", "two", "one"] -//! [7] - - -//! [8] -QList<QString> list; -list << "alpha" << "beta" << "delta"; -list.insert(2, "gamma"); -// list: ["alpha", "beta", "gamma", "delta"] -//! [8] - - -//! [9] -QList<QString> list; -list << "sun" << "cloud" << "sun" << "rain"; -list.removeAll("sun"); -// list: ["cloud", "rain"] -//! [9] - - -//! [10] -QList<QString> list; -list << "sun" << "cloud" << "sun" << "rain"; -list.removeOne("sun"); -// list: ["cloud", ,"sun", "rain"] -//! [10] - - -//! [11] -QList<QString> list; -list << "A" << "B" << "C" << "D" << "E" << "F"; -list.move(1, 4); -// list: ["A", "C", "D", "E", "B", "F"] -//! [11] - - -//! [12] -QList<QString> list; -list << "A" << "B" << "C" << "D" << "E" << "F"; -list.swap(1, 4); -// list: ["A", "E", "C", "D", "B", "F"] -//! [12] - - -//! [13] -QList<QString> list; -list << "A" << "B" << "C" << "B" << "A"; -list.indexOf("B"); // returns 1 -list.indexOf("B", 1); // returns 1 -list.indexOf("B", 2); // returns 3 -list.indexOf("X"); // returns -1 -//! [13] - - -//! [14] -QList<QString> list; -list << "A" << "B" << "C" << "B" << "A"; -list.lastIndexOf("B"); // returns 3 -list.lastIndexOf("B", 3); // returns 3 -list.lastIndexOf("B", 2); // returns 1 -list.lastIndexOf("X"); // returns -1 -//! [14] - - -//! [15] -QList<QString> list; -list.append("January"); -list.append("February"); -... -list.append("December"); - -QList<QString>::iterator i; -for (i = list.begin(); i != list.end(); ++i) - cout << *i << endl; -//! [15] - - -//! [16] -QList<int>::iterator i; -for (i = list.begin(); i != list.end(); ++i) - *i += 2; -//! [16] - - -//! [17] -QList<QWidget *> list; -... -qDeleteAll(list.begin(), list.end()); -//! [17] - - -//! [18] -if (*it == "Hello") - *it = "Bonjour"; -//! [18] - - -//! [19] -QList<QString> list; -list.append("January"); -list.append("February"); -... -list.append("December"); - -QList<QString>::const_iterator i; -for (i = list.constBegin(); i != list.constEnd(); ++i) - cout << *i << endl; -//! [19] - - -//! [20] -QList<QWidget *> list; -... -qDeleteAll(list.constBegin(), list.constEnd()); -//! [20] - - -//! [21] -QVector<double> vect; -vect << 20.0 << 30.0 << 40.0 << 50.0; - -QList<double> list = QVector<T>::fromVector(vect); -// list: [20.0, 30.0, 40.0, 50.0] -//! [21] - - -//! [22] -QStringList list; -list << "Sven" << "Kim" << "Ola"; - -QVector<QString> vect = list.toVector(); -// vect: ["Sven", "Kim", "Ola"] -//! [22] - - -//! [23] -QSet<int> set; -set << 20 << 30 << 40 << ... << 70; - -QList<int> list = QList<int>::fromSet(set); -qSort(list); -//! [23] - - -//! [24] -QStringList list; -list << "Julia" << "Mike" << "Mike" << "Julia" << "Julia"; - -QSet<QString> set = list.toSet(); -set.contains("Julia"); // returns true -set.contains("Mike"); // returns true -set.size(); // returns 2 -//! [24] - - -//! [25] -std::list<double> stdlist; -list.push_back(1.2); -list.push_back(0.5); -list.push_back(3.14); - -QList<double> list = QList<double>::fromStdList(stdlist); -//! [25] - - -//! [26] -QList<double> list; -list << 1.2 << 0.5 << 3.14; - -std::list<double> stdlist = list.toStdList(); -//! [26] diff --git a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp b/doc/src/snippets/code/src_corelib_tools_qlocale.cpp deleted file mode 100644 index 2e3b599910..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp +++ /dev/null @@ -1,95 +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] -QLocale egyptian(QLocale::Arabic, QLocale::Egypt); -QString s1 = egyptian.toString(1.571429E+07, 'e'); -QString s2 = egyptian.toString(10); - -double d = egyptian.toDouble(s1); -int i = egyptian.toInt(s2); -//! [0] - - -//! [1] -QLocale::setDefault(QLocale(QLocale::Hebrew, QLocale::Israel)); -QLocale hebrew; // Constructs a default QLocale -QString s1 = hebrew.toString(15714.3, 'e'); - -bool ok; -double d; - -QLocale::setDefault(QLocale::C); -d = QString("1234,56").toDouble(&ok); // ok == false -d = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56 - -QLocale::setDefault(QLocale::German); -d = QString("1234,56").toDouble(&ok); // ok == true, d == 1234.56 -d = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56 - -QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates)); -str = QString("%1 %L2 %L3") - .arg(12345).arg(12345).arg(12345, 0, 16); -// str == "12345 12,345 3039" -//! [1] - - -//! [2] -QLocale korean("ko"); -QLocale swiss("de_CH"); -//! [2] - - -//! [3] -bool ok; -double d; - -QLocale c(QLocale::C); -d = c.toDouble( "1234.56", &ok ); // ok == true, d == 1234.56 -d = c.toDouble( "1,234.56", &ok ); // ok == true, d == 1234.56 -d = c.toDouble( "1234,56", &ok ); // ok == false - -QLocale german(QLocale::German); -d = german.toDouble( "1234,56", &ok ); // ok == true, d == 1234.56 -d = german.toDouble( "1.234,56", &ok ); // ok == true, d == 1234.56 -d = german.toDouble( "1234.56", &ok ); // ok == false - -d = german.toDouble( "1.234", &ok ); // ok == true, d == 1234.0 -//! [3] diff --git a/doc/src/snippets/code/src_corelib_tools_qmap.cpp b/doc/src/snippets/code/src_corelib_tools_qmap.cpp deleted file mode 100644 index 2b9c1fb73e..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qmap.cpp +++ /dev/null @@ -1,313 +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] -QMap<QString, int> map; -//! [0] - - -//! [1] -map["one"] = 1; -map["three"] = 3; -map["seven"] = 7; -//! [1] - - -//! [2] -map.insert("twelve", 12); -//! [2] - - -//! [3] -int num1 = map["thirteen"]; -int num2 = map.value("thirteen"); -//! [3] - - -//! [4] -int timeout = 30; -if (map.contains("TIMEOUT")) - timeout = map.value("TIMEOUT"); -//! [4] - - -//! [5] -int timeout = map.value("TIMEOUT", 30); -//! [5] - - -//! [6] -// WRONG -QMap<int, QWidget *> map; -... -for (int i = 0; i < 1000; ++i) { - if (map[i] == okButton) - cout << "Found button at index " << i << endl; -} -//! [6] - - -//! [7] -QMapIterator<QString, int> i(map); -while (i.hasNext()) { - i.next(); - cout << i.key() << ": " << i.value() << endl; -} -//! [7] - - -//! [8] -QMap<QString, int>::const_iterator i = map.constBegin(); -while (i != map.constEnd()) { - cout << i.key() << ": " << i.value() << endl; - ++i; -} -//! [8] - - -//! [9] -map.insert("plenty", 100); -map.insert("plenty", 2000); -// map.value("plenty") == 2000 -//! [9] - - -//! [10] -QList<int> values = map.values("plenty"); -for (int i = 0; i < values.size(); ++i) - cout << values.at(i) << endl; -//! [10] - - -//! [11] -QMap<QString, int>::iterator i = map.find("plenty"); -while (i != map.end() && i.key() == "plenty") { - cout << i.value() << endl; - ++i; -} -//! [11] - - -//! [12] -QMap<QString, int> map; -... -foreach (int value, map) - cout << value << endl; -//! [12] - - -//! [13] -#ifndef EMPLOYEE_H -#define EMPLOYEE_H - -class Employee -{ -public: - Employee() {} - Employee(const QString &name, const QDate &dateOfBirth); - ... - -private: - QString myName; - QDate myDateOfBirth; -}; - -inline bool operator<(const Employee &e1, const Employee &e2) -{ - if (e1.name() != e2.name()) - return e1.name() < e2.name(); - return e1.dateOfBirth() < e2.dateOfBirth(); -} - -#endif // EMPLOYEE_H -//! [13] - - -//! [14] -QMap<QString, int> map; -... -QMap<QString, int>::const_iterator i = map.find("HDR"); -while (i != map.end() && i.key() == "HDR") { - cout << i.value() << endl; - ++i; -} -//! [14] - - -//! [15] -QMap<int, QString> map; -map.insert(1, "one"); -map.insert(5, "five"); -map.insert(10, "ten"); - -map.lowerBound(0); // returns iterator to (1, "one") -map.lowerBound(1); // returns iterator to (1, "one") -map.lowerBound(2); // returns iterator to (5, "five") -map.lowerBound(10); // returns iterator to (10, "ten") -map.lowerBound(999); // returns end() -//! [15] - - -//! [16] -QMap<QString, int> map; -... -QMap<QString, int>::const_iterator i = map.lowerBound("HDR"); -QMap<QString, int>::const_iterator upperBound = map.upperBound("HDR"); -while (i != upperBound) { - cout << i.value() << endl; - ++i; -} -//! [16] - - -//! [17] -QMap<int, QString> map; -map.insert(1, "one"); -map.insert(5, "five"); -map.insert(10, "ten"); - -map.upperBound(0); // returns iterator to (1, "one") -map.upperBound(1); // returns iterator to (5, "five") -map.upperBound(2); // returns iterator to (5, "five") -map.upperBound(10); // returns end() -map.upperBound(999); // returns end() -//! [17] - - -//! [18] -QMap<QString, int> map; -map.insert("January", 1); -map.insert("February", 2); -... -map.insert("December", 12); - -QMap<QString, int>::iterator i; -for (i = map.begin(); i != map.end(); ++i) - cout << i.key() << ": " << i.value() << endl; -//! [18] - - -//! [19] -QMap<QString, int>::iterator i; -for (i = map.begin(); i != map.end(); ++i) - i.value() += 2; -//! [19] - - -//! [20] -QMap<QString, int>::iterator i = map.begin(); -while (i != map.end()) { - if (i.key().startsWith("_")) - i = map.erase(i); - else - ++i; -} -//! [20] - - -//! [21] -QMap<QString, int>::iterator i = map.begin(); -while (i != map.end()) { - QMap<QString, int>::iterator prev = i; - ++i; - if (prev.key().startsWith("_")) - map.erase(prev); -} -//! [21] - - -//! [22] -// WRONG -while (i != map.end()) { - if (i.key().startsWith("_")) - map.erase(i); - ++i; -} -//! [22] - - -//! [23] -if (i.key() == "Hello") - i.value() = "Bonjour"; -//! [23] - - -//! [24] -QMap<QString, int> map; -map.insert("January", 1); -map.insert("February", 2); -... -map.insert("December", 12); - -QMap<QString, int>::const_iterator i; -for (i = map.constBegin(); i != map.constEnd(); ++i) - cout << i.key() << ": " << i.value() << endl; -//! [24] - - -//! [25] -QMultiMap<QString, int> map1, map2, map3; - -map1.insert("plenty", 100); -map1.insert("plenty", 2000); -// map1.size() == 2 - -map2.insert("plenty", 5000); -// map2.size() == 1 - -map3 = map1 + map2; -// map3.size() == 3 -//! [25] - - -//! [26] -QList<int> values = map.values("plenty"); -for (int i = 0; i < values.size(); ++i) - cout << values.at(i) << endl; -//! [26] - - -//! [27] -QMultiMap<QString, int>::iterator i = map.find("plenty"); -while (i != map.end() && i.key() == "plenty") { - cout << i.value() << endl; - ++i; -} -//! [27] diff --git a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp b/doc/src/snippets/code/src_corelib_tools_qpoint.cpp deleted file mode 100644 index 4f48fcbcb1..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp +++ /dev/null @@ -1,149 +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] -QPoint p; - -p.setX(p.x() + 1); -p += QPoint(1, 0); -p.rx()++; -//! [0] - - -//! [1] -QPoint p(1, 2); -p.rx()--; // p becomes (0, 2) -//! [1] - - -//! [2] -QPoint p(1, 2); -p.ry()++; // p becomes (1, 3) -//! [2] - - -//! [3] -QPoint p( 3, 7); -QPoint q(-1, 4); -p += q; // p becomes (2, 11) -//! [3] - - -//! [4] -QPoint p( 3, 7); -QPoint q(-1, 4); -p -= q; // p becomes (4, 3) -//! [4] - - -//! [5] -QPoint p(-1, 4); -p *= 2.5; // p becomes (-3, 10) -//! [5] - - -//! [6] -QPoint p(-3, 10); -p /= 2.5; // p becomes (-1, 4) -//! [6] - - -//! [7] -QPoint oldPosition; - -MyWidget::mouseMoveEvent(QMouseEvent *event) -{ - QPoint point = event->pos() - oldPosition; - if (point.manhattanLength() > 3) - // the mouse has moved more than 3 pixels since the oldPosition -} -//! [7] - - -//! [8] -double trueLength = sqrt(pow(x(), 2) + pow(y(), 2)); -//! [8] - - -//! [9] -QPointF p; - -p.setX(p.x() + 1.0); -p += QPointF(1.0, 0.0); -p.rx()++; -//! [9] - - -//! [10] - QPointF p(1.1, 2.5); - p.rx()--; // p becomes (0.1, 2.5) -//! [10] - - -//! [11] -QPointF p(1.1, 2.5); -p.ry()++; // p becomes (1.1, 3.5) -//! [11] - - -//! [12] -QPointF p( 3.1, 7.1); -QPointF q(-1.0, 4.1); -p += q; // p becomes (2.1, 11.2) -//! [12] - - -//! [13] -QPointF p( 3.1, 7.1); -QPointF q(-1.0, 4.1); -p -= q; // p becomes (4.1, 3.0) -//! [13] - - -//! [14] -QPointF p(-1.1, 4.1); -p *= 2.5; // p becomes (-2.75, 10.25) -//! [14] - - -//! [15] -QPointF p(-2.75, 10.25); -p /= 2.5; // p becomes (-1.1, 4.1) -//! [15] diff --git a/doc/src/snippets/code/src_corelib_tools_qrect.cpp b/doc/src/snippets/code/src_corelib_tools_qrect.cpp deleted file mode 100644 index ebf9118c20..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qrect.cpp +++ /dev/null @@ -1,50 +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] -QRect r1(100, 200, 11, 16); -QRect r2(QPoint(100, 200), QSize(11, 16)); -//! [0] - - -//! [1] -QRectF r1(100, 200, 11, 16); -QRectF r2(QPoint(100, 200), QSize(11, 16)); -//! [1] diff --git a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp b/doc/src/snippets/code/src_corelib_tools_qregexp.cpp deleted file mode 100644 index 002ae96f23..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp +++ /dev/null @@ -1,224 +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] -QRegExp rx("(\\d+)"); -QString str = "Offsets: 12 14 99 231 7"; -QStringList list; -int pos = 0; - -while ((pos = rx.indexIn(str, pos)) != -1) { - list << rx.cap(1); - pos += rx.matchedLength(); -} -// list: ["12", "14", "99", "231", "7"] -//! [0] - - -//! [1] -QRegExp rx("*.txt"); -rx.setPatternSyntax(QRegExp::Wildcard); -rx.exactMatch("README.txt"); // returns true -rx.exactMatch("welcome.txt.bak"); // returns false -//! [1] - - -//! [2] -QRegExp rx("ro+m"); -rx.setMinimal(true); -//! [2] - - -//! [3] -QRegExp mark("\\b" // word boundary - "[Mm]ark" // the word we want to match - ); -//! [3] - - -//! [4] -QRegExp rx("^\\d\\d?$"); // match integers 0 to 99 -rx.indexIn("123"); // returns -1 (no match) -rx.indexIn("-6"); // returns -1 (no match) -rx.indexIn("6"); // returns 0 (matched as position 0) -//! [4] - - -//! [5] -QRegExp rx("^\\S+$"); // match strings without whitespace -rx.indexIn("Hello world"); // returns -1 (no match) -rx.indexIn("This_is-OK"); // returns 0 (matched at position 0) -//! [5] - - -//! [6] -QRegExp rx("\\b(mail|letter|correspondence)\\b"); -rx.indexIn("I sent you an email"); // returns -1 (no match) -rx.indexIn("Please write the letter"); // returns 17 -//! [6] - - -//! [7] -QString captured = rx.cap(1); // captured == "letter" -//! [7] - - -//! [8] -QRegExp rx("&(?!amp;)"); // match ampersands but not & -QString line1 = "This & that"; -line1.replace(rx, "&"); -// line1 == "This & that" -QString line2 = "His & hers & theirs"; -line2.replace(rx, "&"); -// line2 == "His & hers & theirs" -//! [8] - - -//! [9] -QString str = "One Eric another Eirik, and an Ericsson. " - "How many Eiriks, Eric?"; -QRegExp rx("\\b(Eric|Eirik)\\b"); // match Eric or Eirik -int pos = 0; // where we are in the string -int count = 0; // how many Eric and Eirik's we've counted -while (pos >= 0) { - pos = rx.indexIn(str, pos); - if (pos >= 0) { - ++pos; // move along in str - ++count; // count our Eric or Eirik - } -} -//! [9] - - -//! [10] -str = "Nokia Corporation\tqt.nokia.com\tNorway"; -QString company, web, country; -rx.setPattern("^([^\t]+)\t([^\t]+)\t([^\t]+)$"); -if (rx.indexIn(str) != -1) { - company = rx.cap(1); - web = rx.cap(2); - country = rx.cap(3); -} -//! [10] - - -//! [11] -QStringList field = str.split("\t"); -//! [11] - - -//! [12] -QRegExp rx("*.html"); -rx.setPatternSyntax(QRegExp::Wildcard); -rx.exactMatch("index.html"); // returns true -rx.exactMatch("default.htm"); // returns false -rx.exactMatch("readme.txt"); // returns false -//! [12] - - -//! [13] -QString str = "offsets: 1.23 .50 71.00 6.00"; -QRegExp rx("\\d*\\.\\d+"); // primitive floating point matching -int count = 0; -int pos = 0; -while ((pos = rx.indexIn(str, pos)) != -1) { - ++count; - pos += rx.matchedLength(); -} -// pos will be 9, 14, 18 and finally 24; count will end up as 4 -//! [13] - - -//! [14] -QRegExp rx("(\\d+)(\\s*)(cm|inch(es)?)"); -int pos = rx.indexIn("Length: 36 inches"); -QStringList list = rx.capturedTexts(); -// list is now ("36 inches", "36", " ", "inches", "es") -//! [14] - - -//! [15] -QRegExp rx("(\\d+)(?:\\s*)(cm|inch(?:es)?)"); -int pos = rx.indexIn("Length: 36 inches"); -QStringList list = rx.capturedTexts(); -// list is now ("36 inches", "36", "inches") -//! [15] - - -//! [16] -QStringList list = rx.capturedTexts(); -QStringList::iterator it = list.begin(); -while (it != list.end()) { - myProcessing(*it); - ++it; -} -//! [16] - - -//! [17] -QRegExp rxlen("(\\d+)(?:\\s*)(cm|inch)"); -int pos = rxlen.indexIn("Length: 189cm"); -if (pos > -1) { - QString value = rxlen.cap(1); // "189" - QString unit = rxlen.cap(2); // "cm" - // ... -} -//! [17] - - -//! [18] -QRegExp rx("/([a-z]+)/([a-z]+)"); -rx.indexIn("Output /dev/null"); // returns 7 (position of /dev/null) -rx.pos(0); // returns 7 (position of /dev/null) -rx.pos(1); // returns 8 (position of dev) -rx.pos(2); // returns 12 (position of null) -//! [18] - - -//! [19] -s1 = QRegExp::escape("bingo"); // s1 == "bingo" -s2 = QRegExp::escape("f(x)"); // s2 == "f\\(x\\)" -//! [19] - - -//! [20] -QRegExp rx("(" + QRegExp::escape(name) + - "|" + QRegExp::escape(alias) + ")"); -//! [20] diff --git a/doc/src/snippets/code/src_corelib_tools_qregularexpression.cpp b/doc/src/snippets/code/src_corelib_tools_qregularexpression.cpp deleted file mode 100644 index cab89d9c9e..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qregularexpression.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>. -** 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] -QRegularExpression re("a pattern"); -//! [0] - - -//! [1] -QRegularExpression re; -re.setPattern("another pattern"); -//! [1] - - -//! [2] -// matches two digits followed by a space and a word -QRegularExpression re("\\d\\d \\w+"); - -// matches a backslash -QRegularExpression re2("\\\\"); -//! [2] - - -//! [3] -QRegularExpression re("a third pattern"); -QString pattern = re.pattern(); // pattern == "a third pattern" -//! [3] - - -//! [4] -// matches "Qt rocks", but also "QT rocks", "QT ROCKS", "qT rOcKs", etc. -QRegularExpression re("Qt rocks", QRegularExpression::CaseInsensitiveOption); -//! [4] - - -//! [5] -QRegularExpression re("^\\d+$"); -re.setPatternOptions(QRegularExpression::MultilineOption); -// re matches any line in the subject string that contains only digits (but at least one) -//! [5] - - -//! [6] -QRegularExpression re = QRegularExpression("^two.*words$", QRegularExpression::MultilineOption - | QRegularExpression::DotMatchesEverythingOption); - -QRegularExpression::PatternOptions options = re.patternOptions(); -// options == QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption -//! [6] - - -//! [7] -// match two digits followed by a space and a word -QRegularExpression re("\\d\\d \\w+"); -QRegularExpressionMatch match = re.match("abc123 def"); -bool hasMatch = match.hasMatch(); // true -//! [7] - - -//! [8] -QRegularExpression re("\\d\\d \\w+"); -QRegularExpressionMatch match = re.match("abc123 def"); -if (match.hasMatch()) { - QString matched = match.captured(0); // matched == "23 def" - // ... -} -//! [8] - - -//! [9] -QRegularExpression re("\\d\\d \\w+"); -QRegularExpressionMatch match = re.match("12 abc 45 def", 1); -if (match.hasMatch()) { - QString matched = match.captured(0); // matched == "45 def" - // ... -} -//! [9] - - -//! [10] -QRegularExpression re("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$"); -QRegularExpressionMatch match = re.match("08/12/1985"); -if (match.hasMatch()) { - QString day = re.captured(1); // day == "08" - QString month = re.captured(2); // month == "12" - QString year = re.captured(3); // year == "1985" - // ... -} -//! [10] - - -//! [11] -QRegularExpression re("abc(\\d+)def"); -QRegularExpressionMatch match = re.match("XYZabc123defXYZ"); -if (match.hasMatch()) { - int startOffset = re.capturedStart(1); // startOffset == 6 - int endOffset = re.capturedEnd(1); // endOffset == 9 - // ... -} -//! [11] - - -//! [12] -QRegularExpression re("^(?<date>\\d\\d)/(?<month>\\d\\d)/(?<year>\\d\\d\\d\\d)$"); -QRegularExpressionMatch match = re.match("08/12/1985"); -if (match.hasMatch()) { - QString date = match.captured("date"); // date == "08" - QString month = match.captured("month"); // month == "12" - QString year = match.captured("year"); // year == 1985 -} -//! [12] - - -//! [13] -QRegularExpression re("(\\w+)"); -QRegularExpressionMatchIterator i = re.globalMatch("the quick fox"); -//! [13] - - -//! [14] -QStringList words; -while (i.hasNext()) { - QRegularExpressionMatch match = i.next(); - QString word = match.captured(1); - words << word; -} -// words contains "the", "quick", "fox" -//! [14] - - -//! [15] -QString pattern("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d\\d?, \\d\\d\\d\\d$"); -QRegularExpression re(pattern); - -QString input("Jan 21,"); -QRegularExpressionMatch match = re.match(input, 0, QRegularExpressionMatch::PartialPreferCompleteMatch); -bool hasMatch = match.hasMatch(); // false -bool hasPartialMatch = match.hasPartialMatch(); // true -//! [15] - - -//! [16] -QString input("Dec 8, 1985"); -QRegularExpressionMatch match = re.match(input, 0, QRegularExpressionMatch::PartialPreferCompleteMatch); -bool hasMatch = match.hasMatch(); // true -bool hasPartialMatch = match.hasPartialMatch(); // false -//! [16] - - -//! [17] -QRegularExpression re("abc\\w+X|def"); -QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpressionMatch::PartialPreferCompleteMatch); -bool hasMatch = match.hasMatch(); // true -bool hasPartialMatch = match.hasPartialMatch(); // false -QString captured = match.captured(0); // captured == "def" -//! [17] - - -//! [18] -QRegularExpression re("abc\\w+X|defY"); -QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpressionMatch::PartialPreferCompleteMatch); -bool hasMatch = match.hasMatch(); // false -bool hasPartialMatch = match.hasPartialMatch(); // true -QString captured = match.captured(0); // captured == "abcdef" -//! [18] - - -//! [19] -QRegularExpression re("abc|ab"); -QRegularExpressionMatch match = re.match("ab", 0, QRegularExpressionMatch::PartialPreferFirstMatch); -bool hasMatch = match.hasMatch(); // false -bool hasPartialMatch = match.hasPartialMatch(); // true -//! [19] - - -//! [20] -QRegularExpression re("abc(def)?"); -QRegularExpressionMatch match = re.match("abc", 0, QRegularExpressionMatch::PartialPreferFirstMatch); -bool hasMatch = match.hasMatch(); // false -bool hasPartialMatch = match.hasPartialMatch(); // true -//! [20] - -//! [21] -QRegularExpression re("(abc)*"); -QRegularExpressionMatch match = re.match("abc", 0, QRegularExpressionMatch::PartialPreferFirstMatch); -bool hasMatch = match.hasMatch(); // false -bool hasPartialMatch = match.hasPartialMatch(); // true -//! [21] - -//! [22] -QRegularExpression invalidRe("(unmatched|parenthesis"); -bool isValid = invalidRe.isValid(); // false -//! [22] - -//! [23] -QRegularExpression invalidRe("(unmatched|parenthesis"); -if (!invalidRe.isValid()) { - QString errorString = invalidRe.errorString(); // errorString == "missing )" - int errorOffset = invalidRe.patternErrorOffset(); // errorOffset == 22 - // ... -} -//! [23] - -//! [24] -QRegularExpression re("^this pattern must match exactly$"); -//! [24] - -//! [25] -QString p("a .*|pattern"); -QRegularExpression re("\\A(?:" + p + ")\\z"); // re matches exactly the pattern string p -//! [25] - -//! [26] -QString escaped = QRegularExpression::escape("a(x) = f(x) + g(x)"); -// escaped == "a\\(x\\)\\ \\=\\ f\\(x\\)\\ \\+\\ g\\(x\\)" -//! [26] - -//! [27] -QString pattern = "(" + QRegularExpression::escape(name) + - "|" + QRegularExpression::escape(nickname) + ")"; -QRegularExpression re(pattern); -//! [27] - -//! [28] -QRegularExpressionMatch match = re.match(...); -for (int i = 0; i <= match.lastCapturedIndex(); ++i) { - QString captured = match.captured(i); - // ... -} -//! [28] - -//! [29] -QRegularExpression("(\d\d) (?<name>\w+)"); -QRegularExpressionMatch match = re.match("23 Jordan"); -if (match.hasMatch()) { - QString number = match.captured(1); // first == "23" - QString name = match.captured("name"); // name == "Jordan" -} -//! [29] - -//! [30] -// extracts the words -QRegularExpression re("(\w+)"); -QString subject("the quick fox"); -QRegularExpressionMatchIterator i = re.globalMatch(subject); -while (i.hasNext()) { - QRegularExpressionMatch match = i.next(); - // ... -} -//! [30] - - diff --git a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp deleted file mode 100644 index fd9cd3e4b0..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp +++ /dev/null @@ -1,138 +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] -void myFunction(bool useSubClass) -{ - MyClass *p = useSubClass ? new MyClass() : new MySubClass; - QIODevice *device = handsOverOwnership(); - - if (m_value > 3) { - delete p; - delete device; - return; - } - - try { - process(device); - } - catch (...) { - delete p; - delete device; - throw; - } - - delete p; - delete device; -} -//! [0] - -//! [1] -void myFunction(bool useSubClass) -{ - // assuming that MyClass has a virtual destructor - QScopedPointer<MyClass> p(useSubClass ? new MyClass() : new MySubClass); - QScopedPointer<QIODevice> device(handsOverOwnership()); - - if (m_value > 3) - return; - - process(device); -} -//! [1] - -//! [2] - const QWidget *const p = new QWidget(); - // is equivalent to: - const QScopedPointer<const QWidget> p(new QWidget()); - - QWidget *const p = new QWidget(); - // is equivalent to: - const QScopedPointer<QWidget> p(new QWidget()); - - const QWidget *p = new QWidget(); - // is equivalent to: - QScopedPointer<const QWidget> p(new QWidget()); -//! [2] - -//! [3] -if (scopedPointer) { - ... -} -//! [3] - -//! [4] -class MyPrivateClass; // forward declare MyPrivateClass - -class MyClass -{ -private: - QScopedPointer<MyPrivateClass> privatePtr; // QScopedPointer to forward declared class - -public: - MyClass(); // OK - inline ~MyClass() {} // VIOLATION - Destructor must not be inline - -private: - Q_DISABLE_COPY(MyClass) // OK - copy constructor and assignment operators - // are now disabled, so the compiler won't implicitely - // generate them. -}; -//! [4] - -//! [5] -// this QScopedPointer deletes its data using the delete[] operator: -QScopedPointer<int, QScopedPointerArrayDeleter<int> > arrayPointer(new int[42]); - -// this QScopedPointer frees its data using free(): -QScopedPointer<int, QScopedPointerPodDeleter> podPointer(reinterpret_cast<int *>(malloc(42))); - -// this struct calls "myCustomDeallocator" to delete the pointer -struct ScopedPointerCustomDeleter -{ - static inline void cleanup(MyCustomClass *pointer) - { - myCustomDeallocator(pointer); - } -}; - -// QScopedPointer using a custom deleter: -QScopedPointer<MyCustomClass, ScopedPointerCustomDeleter> customPointer(new MyCustomClass); -//! [5] diff --git a/doc/src/snippets/code/src_corelib_tools_qsize.cpp b/doc/src/snippets/code/src_corelib_tools_qsize.cpp deleted file mode 100644 index 8772152ad6..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qsize.cpp +++ /dev/null @@ -1,136 +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] -QSize t1(10, 12); -t1.scale(60, 60, Qt::IgnoreAspectRatio); -// t1 is (60, 60) - -QSize t2(10, 12); -t2.scale(60, 60, Qt::KeepAspectRatio); -// t2 is (50, 60) - -QSize t3(10, 12); -t3.scale(60, 60, Qt::KeepAspectRatioByExpanding); -// t3 is (60, 72) -//! [0] - - -//! [1] -QSize size(100, 10); -size.rwidth() += 20; - -// size becomes (120,10) -//! [1] - - -//! [2] -QSize size(100, 10); -size.rheight() += 5; - -// size becomes (100,15) -//! [2] - - -//! [3] -QSize s( 3, 7); -QSize r(-1, 4); -s += r; - -// s becomes (2,11) -//! [3] - - -//! [4] -QSize s( 3, 7); -QSize r(-1, 4); -s -= r; - -// s becomes (4,3) -//! [4] - - -//! [5] -QSizeF t1(10, 12); -t1.scale(60, 60, Qt::IgnoreAspectRatio); -// t1 is (60, 60) - -QSizeF t2(10, 12); -t2.scale(60, 60, Qt::KeepAspectRatio); -// t2 is (50, 60) - -QSizeF t3(10, 12); -t3.scale(60, 60, Qt::KeepAspectRatioByExpanding); -// t3 is (60, 72) -//! [5] - - -//! [6] -QSizeF size(100.3, 10); -size.rwidth() += 20.5; - - // size becomes (120.8,10) -//! [6] - - -//! [7] -QSizeF size(100, 10.2); -size.rheight() += 5.5; - -// size becomes (100,15.7) -//! [7] - - -//! [8] -QSizeF s( 3, 7); -QSizeF r(-1, 4); -s += r; - -// s becomes (2,11) -//! [8] - - -//! [9] -QSizeF s( 3, 7); -QSizeF r(-1, 4); -s -= r; - -// s becomes (4,3) -//! [9] diff --git a/doc/src/snippets/code/src_corelib_tools_qstring.cpp b/doc/src/snippets/code/src_corelib_tools_qstring.cpp deleted file mode 100644 index 507e929f47..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qstring.cpp +++ /dev/null @@ -1,94 +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] -DEFINES += QT_NO_CAST_FROM_ASCII \ - QT_NO_CAST_TO_ASCII -//! [0] - - -//! [1] -QString url = QLatin1String("http://www.unicode.org/"); -//! [1] - - -//! [2] -double d = 12.34; -QString str = QString("delta: %1").arg(d, 0, 'E', 3); -// str == "delta: 1.234E+01" -//! [2] - - -//! [3] -if (str == "auto" || str == "extern" - || str == "static" || str == "register") { - ... -} -//! [3] - - -//! [4] -if (str == QString("auto") || str == QString("extern") - || str == QString("static") || str == QString("register")) { - ... -} -//! [4] - - -//! [5] -if (str == QLatin1String("auto") - || str == QLatin1String("extern") - || str == QLatin1String("static") - || str == QLatin1String("register") { - ... -} -//! [5] - - -//! [6] -QLabel *label = new QLabel(QLatin1String("MOD"), this); -//! [6] - - -//! [7] -QString plain = "#include <QtCore>" -QString html = plain.toHtmlEscaped(); -// html == "#include <QtCore>" -//! [7] diff --git a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp b/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp deleted file mode 100644 index e33c94efda..0000000000 --- a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp +++ /dev/null @@ -1,55 +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] -... -progressBar = new QProgressBar(this); -progressBar->setRange(0, 100); - -// Construct a 1-second timeline with a frame range of 0 - 100 -QTimeLine *timeLine = new QTimeLine(1000, this); -timeLine->setFrameRange(0, 100); -connect(timeLine, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int))); - -// Clicking the push button will start the progress bar animation -pushButton = new QPushButton(tr("Start animation"), this); -connect(pushButton, SIGNAL(clicked()), timeLine, SLOT(start())); -... -//! [0] diff --git a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp b/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp deleted file mode 100644 index 9f40777df1..0000000000 --- a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp +++ /dev/null @@ -1,67 +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] - QXmlStreamReader xml; - ... - while (!xml.atEnd()) { - xml.readNext(); - ... // do processing - } - if (xml.hasError()) { - ... // do error handling - } -//! [0] - - -//! [1] - writeStartElement(qualifiedName); - writeCharacters(text); - writeEndElement(); -//! [1] - - -//! [2] - writeStartElement(namespaceUri, name); - writeCharacters(text); - writeEndElement(); -//! [2] - - diff --git a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp b/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp deleted file mode 100644 index 90bc2e9b0a..0000000000 --- a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp +++ /dev/null @@ -1,148 +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] -int ret = QMessageBox::warning(this, tr("My Application"), - tr("The document has been modified.\n" - "Do you want to save your changes?"), - QMessageBox::Save | QMessageBox::Discard - | QMessageBox::Cancel, - QMessageBox::Save); -//! [0] - - -//! [1] -QMessageBox msgBox; -msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); -switch (msgBox.exec()) { -case QMessageBox::Yes: - // yes was clicked - break; -case QMessageBox::No: - // no was clicked - break; -default: - // should never be reached - break; -} -//! [1] - - -//! [2] -QMessageBox msgBox; -QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole); -QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort); - -msgBox.exec(); - -if (msgBox.clickedButton() == connectButton) { - // connect -} else if (msgBox.clickedButton() == abortButton) { - // abort -} -//! [2] - - -//! [3] -QMessageBox messageBox(this); -QAbstractButton *disconnectButton = - messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole); -... -messageBox.exec(); -if (messageBox.clickedButton() == disconnectButton) { - ... -} -//! [3] - - -//! [4] -#include <QApplication> -#include <QMessageBox> - -int main(int argc, char *argv[]) -{ - QT_REQUIRE_VERSION(argc, argv, "4.0.2") - - QApplication app(argc, argv); - ... - return app.exec(); -} -//! [4] - -//! [5] -QMessageBox msgBox; -msgBox.setText("The document has been modified."); -msgBox.exec(); -//! [5] - -//! [6] -QMessageBox msgBox; -msgBox.setText("The document has been modified."); -msgBox.setInformativeText("Do you want to save your changes?"); -msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); -msgBox.setDefaultButton(QMessageBox::Save); -int ret = msgBox.exec(); -//! [6] - -//! [7] -switch (ret) { - case QMessageBox::Save: - // Save was clicked - break; - case QMessageBox::Discard: - // Don't Save was clicked - break; - case QMessageBox::Cancel: - // Cancel was clicked - break; - default: - // should never be reached - break; -} -//! [7] - -//! [9] -QMessageBox msgBox(this); -msgBox.setText(tr("The document has been modified.\n" - "Do you want to save your changes?")); -msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard - | QMessageBox::Cancel); -msgBox.setDefaultButton(QMessageBox::Save); -//! [9] diff --git a/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp deleted file mode 100644 index cf4707cbeb..0000000000 --- a/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com> -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtGui module 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] -class DateFormatProxyModel : public QIdentityProxyModel -{ - // ... - - void setDateFormatString(const QString &formatString) - { - m_formatString = formatString; - } - - QVariant data(const QModelIndex &index, int role) - { - if (role != Qt::DisplayRole) - return QIdentityProxyModel::data(index, role); - - const QDateTime dateTime = sourceModel()->data(SourceClass::DateRole).toDateTime(); - - return dateTime.toString(m_formatString); - } - -private: - QString m_formatString; -}; -//! [0] diff --git a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp deleted file mode 100644 index ba81221e9c..0000000000 --- a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp +++ /dev/null @@ -1,50 +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] -QItemSelection *selection = new QItemSelection(topLeft, bottomRight); -//! [0] - - -//! [1] -QItemSelection *selection = new QItemSelection(); -... -selection->select(topLeft, bottomRight); -//! [1] diff --git a/doc/src/snippets/file/file.cpp b/doc/src/snippets/file/file.cpp deleted file mode 100644 index f03c6e6847..0000000000 --- a/doc/src/snippets/file/file.cpp +++ /dev/null @@ -1,123 +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$ -** -****************************************************************************/ - -#include <QFile> -#include <QTextStream> - -static void process_line(const QByteArray &) -{ -} - -static void process_line(const QString &) -{ -} - -static void noStream_snippet() -{ -//! [0] - QFile file("in.txt"); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; - - while (!file.atEnd()) { - QByteArray line = file.readLine(); - process_line(line); - } -//! [0] -} - -static void readTextStream_snippet() -{ -//! [1] - QFile file("in.txt"); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; - - QTextStream in(&file); - while (!in.atEnd()) { - QString line = in.readLine(); - process_line(line); - } -//! [1] -} - -static void writeTextStream_snippet() -{ -//! [2] - QFile file("out.txt"); - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) - return; - - QTextStream out(&file); - out << "The magic number is: " << 49 << "\n"; -//! [2] -} - -static void writeTextStream_snippet() -{ - QFile file("out.dat"); - if (!file.open(QIODevice::WriteOnly)) - return; - - QDataStream out(&file); - out << "The magic number is: " << 49 << "\n"; -} - -static void readRegularEmptyFile_snippet() -{ -//! [3] - QFile file("/proc/modules"); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; - - QTextStream in(&file); - QString line = in.readLine(); - while (!line.isNull()) { - process_line(line); - line = in.readLine(); - } -//! [3] -} - -int main() -{ - lineByLine_snippet(); - writeStream_snippet(); -} diff --git a/doc/src/snippets/fileinfo/main.cpp b/doc/src/snippets/fileinfo/main.cpp deleted file mode 100644 index 48d8223d79..0000000000 --- a/doc/src/snippets/fileinfo/main.cpp +++ /dev/null @@ -1,92 +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$ -** -****************************************************************************/ - -#include <QApplication> -#include <QPushButton> -#include <QFileInfo> -#include <QDir> -#include <QGroupBox> -#include <QVBoxLayout> -#include <QDebug> - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - -//! [0] - QFileInfo fileInfo1("~/examples/191697/."); - QFileInfo fileInfo2("~/examples/191697/.."); - QFileInfo fileInfo3("~/examples/191697/main.cpp"); -//! [0] -//! [1] - QFileInfo fileInfo4("."); - QFileInfo fileInfo5(".."); - QFileInfo fileInfo6("main.cpp"); -//! [1] - - qDebug() << fileInfo1.fileName(); - qDebug() << fileInfo2.fileName(); - qDebug() << fileInfo3.fileName(); - qDebug() << fileInfo4.fileName(); - qDebug() << fileInfo5.fileName(); - qDebug() << fileInfo6.fileName(); - - QPushButton* button1 = new QPushButton(fileInfo1.dir().path()); - QPushButton* button2 = new QPushButton(fileInfo2.dir().path()); - QPushButton* button3 = new QPushButton(fileInfo3.dir().path()); - QPushButton* button4 = new QPushButton(fileInfo4.dir().path()); - QPushButton* button5 = new QPushButton(fileInfo5.dir().path()); - QPushButton* button6 = new QPushButton(fileInfo6.dir().path()); - - QVBoxLayout* vbox = new QVBoxLayout; - vbox->addWidget(button1); - vbox->addWidget(button2); - vbox->addWidget(button3); - vbox->addWidget(button4); - vbox->addWidget(button5); - vbox->addWidget(button6); - vbox->addStretch(1); - - QGroupBox *groupBox = new QGroupBox("QFileInfo::dir() test"); - groupBox->setLayout(vbox); - groupBox->show(); - - return app.exec(); -} diff --git a/doc/src/snippets/ntfsp.cpp b/doc/src/snippets/ntfsp.cpp deleted file mode 100644 index 8f2ff1fc98..0000000000 --- a/doc/src/snippets/ntfsp.cpp +++ /dev/null @@ -1,50 +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] -extern Q_CORE_EXPORT int qt_ntfs_permission_lookup; -//! [0] - -//! [1] -qt_ntfs_permission_lookup++; // turn checking on -qt_ntfs_permission_lookup--; // turn it off again -//! [1] - diff --git a/doc/src/snippets/process/process.cpp b/doc/src/snippets/process/process.cpp deleted file mode 100644 index 19f241a695..0000000000 --- a/doc/src/snippets/process/process.cpp +++ /dev/null @@ -1,76 +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$ -** -****************************************************************************/ - -#include <QProcess> - -bool zip() -{ -//! [0] - QProcess gzip; - gzip.start("gzip", QStringList() << "-c"); - if (!gzip.waitForStarted()) - return false; - - gzip.write("Qt rocks!"); - gzip.closeWriteChannel(); - - if (!gzip.waitForFinished()) - return false; - - QByteArray result = gzip.readAll(); -//! [0] - - gzip.start("gzip", QStringList() << "-d" << "-c"); - gzip.write(result); - gzip.closeWriteChannel(); - - if (!gzip.waitForFinished()) - return false; - - qDebug("Result: %s", gzip.readAll().data()); - return true; -} - - -int main() -{ - zip(); - return 0; -} diff --git a/doc/src/snippets/qdebug/qdebugsnippet.cpp b/doc/src/snippets/qdebug/qdebugsnippet.cpp deleted file mode 100644 index 2dbfe49c7d..0000000000 --- a/doc/src/snippets/qdebug/qdebugsnippet.cpp +++ /dev/null @@ -1,73 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <QtDebug> - -class Coordinate : public QObject -{ -public: - int myX, myY; - - int x() const { return myX; }; - int y() const { return myY; }; -}; - -//! [0] -QDebug operator<<(QDebug dbg, const Coordinate &c) -{ - dbg.nospace() << "(" << c.x() << ", " << c.y() << ")"; - - return dbg.space(); -} -//! [0] - -int main(int argv, char **args) -{ - Coordinate coordinate; - coordinate.myX = 10; - coordinate.myY = 44; - -//! [1] - qDebug() << "Date:" << QDate::currentDate(); - qDebug() << "Types:" << QString("String") << QChar('x') << QRect(0, 10, 50, 40); - qDebug() << "Custom coordinate type:" << coordinate; -//! [1] -} diff --git a/doc/src/snippets/qdir-listfiles/main.cpp b/doc/src/snippets/qdir-listfiles/main.cpp deleted file mode 100644 index 599046aabd..0000000000 --- a/doc/src/snippets/qdir-listfiles/main.cpp +++ /dev/null @@ -1,62 +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] -#include <QDir> -#include <iostream> - -int main(int argc, char *argv[]) -{ - QCoreApplication app(argc, argv); - QDir dir; - dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); - dir.setSorting(QDir::Size | QDir::Reversed); - - QFileInfoList list = dir.entryInfoList(); - std::cout << " Bytes Filename" << std::endl; - for (int i = 0; i < list.size(); ++i) { - QFileInfo fileInfo = list.at(i); - std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10) - .arg(fileInfo.fileName())); - std::cout << std::endl; - } - return 0; -} -//! [0] diff --git a/doc/src/snippets/qdir-namefilters/main.cpp b/doc/src/snippets/qdir-namefilters/main.cpp deleted file mode 100644 index 7b48f7eaf7..0000000000 --- a/doc/src/snippets/qdir-namefilters/main.cpp +++ /dev/null @@ -1,65 +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$ -** -****************************************************************************/ - -#include <QDir> -#include <iostream> - -int main(int argc, char *argv[]) -{ - QDir dir; - dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); - dir.setSorting(QDir::Size | QDir::Reversed); - -//! [0] - QStringList filters; - filters << "*.cpp" << "*.cxx" << "*.cc"; - dir.setNameFilters(filters); -//! [0] - - QFileInfoList list = dir.entryInfoList(); - std::cout << " Bytes Filename" << std::endl; - for (int i = 0; i < list.size(); ++i) { - QFileInfo fileInfo = list.at(i); - std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10) - .arg(fileInfo.fileName())); - std::cout << std::endl; - } - return 0; -} diff --git a/doc/src/snippets/qelapsedtimer/main.cpp b/doc/src/snippets/qelapsedtimer/main.cpp deleted file mode 100644 index 7b4b6529e7..0000000000 --- a/doc/src/snippets/qelapsedtimer/main.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtNetwork module 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$ -** -****************************************************************************/ -#include <QtCore> - -void slowOperation1() -{ - static char buf[256]; - for (int i = 0; i < (1<<20); ++i) - buf[i % sizeof buf] = i; -} - -void slowOperation2(int) { slowOperation1(); } - -void startExample() -{ -//![0] - QElapsedTimer timer; - timer.start(); - - slowOperation1(); - - qDebug() << "The slow operation took" << timer.elapsed() << "milliseconds"; -//![0] -} - -//![1] -void executeSlowOperations(int timeout) -{ - QElapsedTimer timer; - timer.start(); - slowOperation1(); - - int remainingTime = timeout - timer.elapsed(); - if (remainingTime > 0) - slowOperation2(remainingTime); -} -//![1] - -//![2] -void executeOperationsForTime(int ms) -{ - QElapsedTimer timer; - timer.start(); - - while (!timer.hasExpired(ms)) - slowOperation1(); -} -//![2] - -int restartExample() -{ -//![3] - QElapsedTimer timer; - - int count = 1; - timer.start(); - do { - count *= 2; - slowOperation2(count); - } while (timer.restart() < 250); - - return count; -//![3] -} - -int main(int argc, char **argv) -{ - QCoreApplication app(argc, argv); - - startExample(); - restartExample(); - executeSlowOperations(5); - executeOperationsForTime(5); -} diff --git a/doc/src/snippets/qlogging/qloggingsnippet.cpp b/doc/src/snippets/qlogging/qloggingsnippet.cpp deleted file mode 100644 index 74892cdfba..0000000000 --- a/doc/src/snippets/qlogging/qloggingsnippet.cpp +++ /dev/null @@ -1,54 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <QtDebug> -#include <QDeclarativeComponent> - -//! [1] - void statusChanged(QDeclarativeComponent::Status status) { - if (status == QDeclarativeComponent::Error) { - foreach (const QDeclarativeError &error, component->errors()) { - const QByteArray file = error.url().toEncoded(); - QMessageLogger(file.constData(), error.line(), 0).debug() << error.description(); - } - } - } -//! [1] diff --git a/doc/src/snippets/qmetaobject-invokable/main.cpp b/doc/src/snippets/qmetaobject-invokable/main.cpp deleted file mode 100644 index b22df1ea15..0000000000 --- a/doc/src/snippets/qmetaobject-invokable/main.cpp +++ /dev/null @@ -1,52 +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$ -** -****************************************************************************/ - -#include <QApplication> -#include <QDebug> -#include "window.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Window window; - qDebug() << window.metaObject()->methodCount(); - window.show(); - return app.exec(); -} diff --git a/doc/src/snippets/qmetaobject-invokable/qmetaobject-invokable.pro b/doc/src/snippets/qmetaobject-invokable/qmetaobject-invokable.pro deleted file mode 100644 index 4df19215f0..0000000000 --- a/doc/src/snippets/qmetaobject-invokable/qmetaobject-invokable.pro +++ /dev/null @@ -1,3 +0,0 @@ -HEADERS = window.h -SOURCES = main.cpp \ - window.cpp diff --git a/doc/src/snippets/qmetaobject-invokable/window.cpp b/doc/src/snippets/qmetaobject-invokable/window.cpp deleted file mode 100644 index 5ab8d83f63..0000000000 --- a/doc/src/snippets/qmetaobject-invokable/window.cpp +++ /dev/null @@ -1,57 +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$ -** -****************************************************************************/ - -#include "window.h" - -Window::Window() -{ -} - -void Window::normalMethod() -{ - // Cannot be called by the meta-object system. - show(); -} - -void Window::invokableMethod() -{ - // Can be called by the meta-object system. - show(); -} diff --git a/doc/src/snippets/qmetaobject-invokable/window.h b/doc/src/snippets/qmetaobject-invokable/window.h deleted file mode 100644 index f2f34792e5..0000000000 --- a/doc/src/snippets/qmetaobject-invokable/window.h +++ /dev/null @@ -1,58 +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$ -** -****************************************************************************/ - -#ifndef WINDOW_H -#define WINDOW_H - -#include <QWidget> - -//! [Window class with invokable method] -class Window : public QWidget -{ - Q_OBJECT - -public: - Window(); - void normalMethod(); - Q_INVOKABLE void invokableMethod(); -}; -//! [Window class with invokable method] - -#endif diff --git a/doc/src/snippets/qprocess-environment/main.cpp b/doc/src/snippets/qprocess-environment/main.cpp deleted file mode 100644 index 124668a544..0000000000 --- a/doc/src/snippets/qprocess-environment/main.cpp +++ /dev/null @@ -1,73 +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$ -** -****************************************************************************/ - -#include <QtCore> - -void startProcess() -{ - { -//! [0] -QProcess process; -QStringList env = QProcess::systemEnvironment(); -env << "TMPDIR=C:\\MyApp\\temp"; // Add an environment variable -env.replaceInStrings(QRegExp("^PATH=(.*)", Qt::CaseInsensitive), "PATH=\\1;C:\\Bin"); -process.setEnvironment(env); -process.start("myapp"); -//! [0] - } - - { -//! [1] -QProcess process; -QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); -env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable -env.insert("PATH", env.value("Path") + ";C:\\Bin"); -process.setProcessEnvironment(env); -process.start("myapp"); -//! [1] - } -} - -int main(int argc, char *argv[]) -{ - QCoreApplication app(argc, argv); - startProcess(); - return app.exec(); -} diff --git a/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp b/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp deleted file mode 100644 index ea1892078e..0000000000 --- a/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp +++ /dev/null @@ -1,66 +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$ -** -****************************************************************************/ - -#include <QApplication> -#include <QtGui> - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); -//! [0] - QObject *parent; -//! [0] - parent = &app; - -//! [1] - QString program = "./path/to/Qt/examples/widgets/analogclock"; -//! [1] - program = "./../../../../examples/widgets/analogclock/analogclock"; - -//! [2] - QStringList arguments; - arguments << "-style" << "motif"; - - QProcess *myProcess = new QProcess(parent); - myProcess->start(program, arguments); -//! [2] - - return app.exec(); -} diff --git a/doc/src/snippets/qsignalmapper/buttonwidget.cpp b/doc/src/snippets/qsignalmapper/buttonwidget.cpp deleted file mode 100644 index cda905e3a2..0000000000 --- a/doc/src/snippets/qsignalmapper/buttonwidget.cpp +++ /dev/null @@ -1,66 +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$ -** -****************************************************************************/ - -#include <QtGui> - -#include "buttonwidget.h" - -//! [0] -ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent) - : QWidget(parent) -{ - signalMapper = new QSignalMapper(this); - - QGridLayout *gridLayout = new QGridLayout; - for (int i = 0; i < texts.size(); ++i) { - QPushButton *button = new QPushButton(texts[i]); - connect(button, SIGNAL(clicked()), signalMapper, SLOT(map())); -//! [0] //! [1] - signalMapper->setMapping(button, texts[i]); - gridLayout->addWidget(button, i / 3, i % 3); - } - - connect(signalMapper, SIGNAL(mapped(const QString &)), -//! [1] //! [2] - this, SIGNAL(clicked(const QString &))); - - setLayout(gridLayout); -} -//! [2] diff --git a/doc/src/snippets/qsignalmapper/buttonwidget.h b/doc/src/snippets/qsignalmapper/buttonwidget.h deleted file mode 100644 index 9204de935a..0000000000 --- a/doc/src/snippets/qsignalmapper/buttonwidget.h +++ /dev/null @@ -1,67 +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$ -** -****************************************************************************/ - -#ifndef BUTTONWIDGET_H -#define BUTTONWIDGET_H - -#include <qwidget.h> - -class QSignalMapper; -class QString; -class QStringList; - -//! [0] -class ButtonWidget : public QWidget -{ - Q_OBJECT - -public: - ButtonWidget(QStringList texts, QWidget *parent = 0); - -signals: - void clicked(const QString &text); - -private: - QSignalMapper *signalMapper; -//! [0] //! [1] -}; -//! [1] - -#endif diff --git a/doc/src/snippets/qsortfilterproxymodel-details/main.cpp b/doc/src/snippets/qsortfilterproxymodel-details/main.cpp deleted file mode 100644 index 549d24b249..0000000000 --- a/doc/src/snippets/qsortfilterproxymodel-details/main.cpp +++ /dev/null @@ -1,99 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <QApplication> -#include <QSortFilterProxyModel> - -class MyItemModel : public QStandardItemModel -{ -public: - MyItemModel(QWidget *parent = 0); -}; - -MyItemModel::MyItemModel(QWidget *parent) - : QStandardItemModel(parent) -{}; - -class Widget : public QWidget -{ -public: - Widget(QWidget *parent = 0); -}; - -Widget::Widget(QWidget *parent) - : QWidget(parent) -{ -//! [0] //! [1] - QTreeView *treeView = new QTreeView; -//! [0] - MyItemModel *model = new MyItemModel(this); - - treeView->setModel(model); -//! [1] - -//! [2] - MyItemModel *sourceModel = new MyItemModel(this); - QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this); - - proxyModel->setSourceModel(sourceModel); - treeView->setModel(proxyModel); -//! [2] - -//! [3] - treeView->setSortingEnabled(true); -//! [3] - -//! [4] - proxyModel->sort(2, Qt::AscendingOrder); -//! [4] //! [5] - proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive, - QRegExp::FixedString)); - proxyModel->setFilterKeyColumn(1); -//! [5] -} - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Widget widget; - widget.show(); - return app.exec(); -} diff --git a/doc/src/snippets/qstack/main.cpp b/doc/src/snippets/qstack/main.cpp deleted file mode 100644 index cc96f8c55d..0000000000 --- a/doc/src/snippets/qstack/main.cpp +++ /dev/null @@ -1,55 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <iostream> -using namespace std; - -int main(int argc, char *argv[]) -{ -//! [0] - QStack<int> stack; - stack.push(1); - stack.push(2); - stack.push(3); - while (!stack.isEmpty()) - cout << stack.pop() << endl; -//! [0] -} diff --git a/doc/src/snippets/qstring/main.cpp b/doc/src/snippets/qstring/main.cpp deleted file mode 100644 index d7299e80d5..0000000000 --- a/doc/src/snippets/qstring/main.cpp +++ /dev/null @@ -1,997 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <QApplication> -#include <stdio.h> - -class Widget : public QWidget -{ -public: - Widget(QWidget *parent = 0); - - void constCharPointer(); - void constCharArray(); - void characterReference(); - void atFunction(); - void stringLiteral(); - void modify(); - void index(); - QString boolToString(bool b); - void nullVsEmpty(); - - void appendFunction(); - void argFunction(); - void chopFunction(); - void compareFunction(); - void compareSensitiveFunction(); - void containsFunction(); - void countFunction(); - void dataFunction(); - void endsWithFunction(); - void fillFunction(); - void fromRawDataFunction(); - - void indexOfFunction(); - void firstIndexOfFunction(); - void insertFunction(); - void isNullFunction(); - void isEmptyFunction(); - void lastIndexOfFunction(); - void leftFunction(); - void leftJustifiedFunction(); - void leftRefFunction(); - void midFunction(); - void midRefFunction(); - void numberFunction(); - - void prependFunction(); - void removeFunction(); - void replaceFunction(); - void reserveFunction(); - void resizeFunction(); - void rightFunction(); - void rightJustifiedFunction(); - void rightRefFunction(); - void sectionFunction(); - void setNumFunction(); - void simplifiedFunction(); - - void sizeFunction(); - void splitFunction(); - void splitCaseSensitiveFunction(); - void sprintfFunction(); - void startsWithFunction(); - void toDoubleFunction(); - void toFloatFunction(); - void toIntFunction(); - void toLongFunction(); - void toLongLongFunction(); - - void toLowerFunction(); - void toShortFunction(); - void toUIntFunction(); - void toULongFunction(); - void toULongLongFunction(); - void toUShortFunction(); - void toUpperFunction(); - void trimmedFunction(); - void truncateFunction(); - - void plusEqualOperator(); - void arrayOperator(); -}; - -Widget::Widget(QWidget *parent) - : QWidget(parent) -{ -} - -void Widget::constCharPointer() -{ - //! [0] - QString str = "Hello"; - //! [0] -} - -void Widget::constCharArray() -{ - //! [1] - static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 }; - QString str(data, 4); - //! [1] -} - -void Widget::characterReference() -{ - //! [2] - QString str; - str.resize(4); - - str[0] = QChar('U'); - str[1] = QChar('n'); - str[2] = QChar(0x10e3); - str[3] = QChar(0x03a3); - //! [2] -} - -void Widget::atFunction() -{ - //! [3] - QString str; - - for (int i = 0; i < str.size(); ++i) { - if (str.at(i) >= QChar('a') && str.at(i) <= QChar('f')) - qDebug() << "Found character in range [a-f]"; - } - //! [3] -} - -void Widget::stringLiteral() -{ - //! [4] - QString str; - - if (str == "auto" || str == "extern" - || str == "static" || str == "register") { - // ... - } - //! [4] -} - -void Widget::modify() -{ - //! [5] - QString str = "and"; - str.prepend("rock "); // str == "rock and" - str.append(" roll"); // str == "rock and roll" - str.replace(5, 3, "&"); // str == "rock & roll" - //! [5] -} - -void Widget::index() -{ - //! [6] - QString str = "We must be <b>bold</b>, very <b>bold</b>"; - int j = 0; - - while ((j = str.indexOf("<b>", j)) != -1) { - qDebug() << "Found <b> tag at index position" << j; - ++j; - } - //! [6] -} - -//! [7] -QString Widget::boolToString(bool b) -{ - QString result; - if (b) - result = "True"; - else - result = "False"; - return result; -} -//! [7] - - -void Widget::nullVsEmpty() -{ - //! [8] - QString().isNull(); // returns true - QString().isEmpty(); // returns true - - QString("").isNull(); // returns false - QString("").isEmpty(); // returns true - - QString("abc").isNull(); // returns false - QString("abc").isEmpty(); // returns false - //! [8] -} - -void Widget::appendFunction() -{ - //! [9] - QString x = "free"; - QString y = "dom"; - - x.append(y); - // x == "freedom" - //! [9] - - //! [10] - x.insert(x.size(), y); - //! [10] -} - -void Widget::argFunction() -{ - //! [11] - QString i; // current file's number - QString total; // number of files to process - QString fileName; // current file's name - - QString status = QString("Processing file %1 of %2: %3") - .arg(i).arg(total).arg(fileName); - //! [11] - - //! [12] //! [13] - QString str; - //! [12] - str = "%1 %2"; - - str.arg("%1f", "Hello"); // returns "%1f Hello" - str.arg("%1f").arg("Hello"); // returns "Hellof %2" - //! [13] - - //! [14] - str = QString("Decimal 63 is %1 in hexadecimal") - .arg(63, 0, 16); - // str == "Decimal 63 is 3f in hexadecimal" - - QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates)); - str = QString("%1 %L2 %L3") - .arg(12345) - .arg(12345) - .arg(12345, 0, 16); - // str == "12345 12,345 3039" - //! [14] -} - -void Widget::chopFunction() -{ - //! [15] - QString str("LOGOUT\r\n"); - str.chop(2); - // str == "LOGOUT" - //! [15] -} - -void Widget::compareFunction() -{ - int x = QString::compare("auto", "auto"); // x == 0 - int y = QString::compare("auto", "car"); // y < 0 - int z = QString::compare("car", "auto"); // z > 0 -} - -void Widget::compareSensitiveFunction() -{ - //! [16] - int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive); // x == 0 - int y = QString::compare("auto", "Car", Qt::CaseSensitive); // y > 0 - int z = QString::compare("auto", "Car", Qt::CaseInsensitive); // z < 0 - //! [16] -} - -void Widget::containsFunction() -{ - //! [17] - QString str = "Peter Pan"; - str.contains("peter", Qt::CaseInsensitive); // returns true - //! [17] -} - -void Widget::countFunction() -{ - //! [18] - QString str = "banana and panama"; - str.count(QRegExp("a[nm]a")); // returns 4 - //! [18] - - //! [95] - QString str = "banana and panama"; - str.count(QRegularExpression("a[nm]a")); // returns 4 - //! [95] -} - -void Widget::dataFunction() -{ - //! [19] - QString str = "Hello world"; - QChar *data = str.data(); - while (!data->isNull()) { - qDebug() << data->unicode(); - ++data; - } - //! [19] -} - -void Widget::endsWithFunction() -{ - //! [20] - QString str = "Bananas"; - str.endsWith("anas"); // returns true - str.endsWith("pple"); // returns false - //! [20] -} - -void Widget::fillFunction() -{ - //! [21] - QString str = "Berlin"; - str.fill('z'); - // str == "zzzzzz" - - str.fill('A', 2); - // str == "AA" - //! [21] -} - -void Widget::fromRawDataFunction() -{ - //! [22] - QRegExp pattern; - static const QChar unicode[] = { - 0x005A, 0x007F, 0x00A4, 0x0060, - 0x1009, 0x0020, 0x0020}; - int size = sizeof(unicode) / sizeof(QChar); - - QString str = QString::fromRawData(unicode, size); - if (str.contains(QRegExp(pattern))) { - // ... - //! [22] //! [23] - } - //! [23] -} - -void Widget::indexOfFunction() -{ - //! [24] - QString x = "sticky question"; - QString y = "sti"; - x.indexOf(y); // returns 0 - x.indexOf(y, 1); // returns 10 - x.indexOf(y, 10); // returns 10 - x.indexOf(y, 11); // returns -1 - //! [24] -} - -void Widget::firstIndexOfFunction() -{ - //! [25] - QString str = "the minimum"; - str.indexOf(QRegExp("m[aeiou]"), 0); // returns 4 - //! [25] - - //! [93] - QString str = "the minimum"; - str.indexOf(QRegularExpression("m[aeiou]"), 0); // returns 4 - //! [93] -} - -void Widget::insertFunction() -{ - //! [26] - QString str = "Meal"; - str.insert(1, QString("ontr")); - // str == "Montreal" - //! [26] -} - -void Widget::isEmptyFunction() -{ - //! [27] - QString().isEmpty(); // returns true - QString("").isEmpty(); // returns true - QString("x").isEmpty(); // returns false - QString("abc").isEmpty(); // returns false - //! [27] -} - -void Widget::isNullFunction() -{ - //! [28] - QString().isNull(); // returns true - QString("").isNull(); // returns false - QString("abc").isNull(); // returns false - //! [28] -} - -void Widget::lastIndexOfFunction() -{ - //! [29] - QString x = "crazy azimuths"; - QString y = "az"; - x.lastIndexOf(y); // returns 6 - x.lastIndexOf(y, 6); // returns 6 - x.lastIndexOf(y, 5); // returns 2 - x.lastIndexOf(y, 1); // returns -1 - //! [29] - - //! [30] - QString str = "the minimum"; - str.lastIndexOf(QRegExp("m[aeiou]")); // returns 8 - //! [30] - - //! [94] - QString str = "the minimum"; - str.lastIndexOf(QRegularExpression("m[aeiou]")); // returns 8 - //! [94] -} - -void Widget::leftFunction() -{ - //! [31] - QString x = "Pineapple"; - QString y = x.left(4); // y == "Pine" - //! [31] -} - -void Widget::leftJustifiedFunction() -{ - //! [32] - QString s = "apple"; - QString t = s.leftJustified(8, '.'); // t == "apple..." - //! [32] - - //! [33] - QString str = "Pineapple"; - str = str.leftJustified(5, '.', true); // str == "Pinea" - //! [33] -} - -void Widget::midFunction() -{ - //! [34] - QString x = "Nine pineapples"; - QString y = x.mid(5, 4); // y == "pine" - QString z = x.mid(5); // z == "pineapples" - //! [34] -} - -void Widget::numberFunction() -{ - //! [35] - long a = 63; - QString s = QString::number(a, 16); // s == "3f" - QString t = QString::number(a, 16).toUpper(); // t == "3F" - //! [35] -} - -void Widget::prependFunction() -{ - //! [36] - QString x = "ship"; - QString y = "air"; - x.prepend(y); - // x == "airship" - //! [36] -} - -void Widget::removeFunction() -{ - //! [37] - QString s = "Montreal"; - s.remove(1, 4); - // s == "Meal" - //! [37] - - //! [38] - QString t = "Ali Baba"; - t.remove(QChar('a'), Qt::CaseInsensitive); - // t == "li Bb" - //! [38] - - //! [39] - QString r = "Telephone"; - r.remove(QRegExp("[aeiou].")); - // r == "The" - //! [39] - - //! [96] - QString r = "Telephone"; - r.remove(QRegularExpression("[aeiou].")); - // r == "The" - //! [96] -} - -void Widget::replaceFunction() -{ - //! [40] - QString x = "Say yes!"; - QString y = "no"; - x.replace(4, 3, y); - // x == "Say no!" - //! [40] - - //! [41] - QString str = "colour behaviour flavour neighbour"; - str.replace(QString("ou"), QString("o")); - // str == "color behavior flavor neighbor" - //! [41] - - //! [42] - QString s = "Banana"; - s.replace(QRegExp("a[mn]"), "ox"); - // s == "Boxoxa" - //! [42] - - //! [43] - QString t = "A <i>bon mot</i>."; - t.replace(QRegExp("<i>([^<]*)</i>"), "\\emph{\\1}"); - // t == "A \\emph{bon mot}." - //! [43] - - //! [86] - QString equis = "xxxxxx"; - equis.replace("xx", "x"); - // equis == "xxx" - //! [86] - - //! [87] - QString s = "Banana"; - s.replace(QRegularExpression("a[mn]"), "ox"); - // s == "Boxoxa" - //! [87] - - //! [88] - QString t = "A <i>bon mot</i>."; - t.replace(QRegularExpression("<i>([^<]*)</i>"), "\\emph{\\1}"); - // t == "A \\emph{bon mot}." - //! [88] -} - -void Widget::reserveFunction() -{ - //! [44] - QString result; - int maxSize; - bool condition; - QChar nextChar; - - result.reserve(maxSize); - - while (condition) - result.append(nextChar); - - result.squeeze(); - //! [44] -} - -void Widget::resizeFunction() -{ - //! [45] - QString s = "Hello world"; - s.resize(5); - // s == "Hello" - - s.resize(8); - // s == "Hello???" (where ? stands for any character) - //! [45] - - //! [46] - QString t = "Hello"; - t += QString(10, 'X'); - // t == "HelloXXXXXXXXXX" - //! [46] - - //! [47] - QString r = "Hello"; - r = r.leftJustified(10, ' '); - // r == "Hello " - //! [47] -} - -void Widget::rightFunction() -{ - //! [48] - QString x = "Pineapple"; - QString y = x.right(5); // y == "apple" - //! [48] -} - -void Widget::rightJustifiedFunction() -{ - //! [49] - QString s = "apple"; - QString t = s.rightJustified(8, '.'); // t == "...apple" - //! [49] - - //! [50] - QString str = "Pineapple"; - str = str.rightJustified(5, '.', true); // str == "Pinea" - //! [50] -} - -void Widget::sectionFunction() -{ - //! [51] //! [52] - QString str; - //! [51] - QString csv = "forename,middlename,surname,phone"; - QString path = "/usr/local/bin/myapp"; // First field is empty - QString::SectionFlag flag = QString::SectionSkipEmpty; - - - str = csv.section(',', 2, 2); // str == "surname" - str = path.section('/', 3, 4); // str == "bin/myapp" - str = path.section('/', 3, 3, flag); // str == "myapp" - //! [52] - - //! [53] - str = csv.section(',', -3, -2); // str == "middlename,surname" - str = path.section('/', -1); // str == "myapp" - //! [53] - - //! [54] - QString data = "forename**middlename**surname**phone"; - - str = data.section("**", 2, 2); // str == "surname" - str = data.section("**", -3, -2); // str == "middlename**surname" - //! [54] - - //! [55] - QString line = "forename\tmiddlename surname \t \t phone"; - QRegExp sep("\\s+"); - str = line.section(sep, 2, 2); // str == "surname" - str = line.section(sep, -3, -2); // str == "middlename surname" - //! [55] - - //! [89] - QString line = "forename\tmiddlename surname \t \t phone"; - QRegularExpression sep("\\s+"); - str = line.section(sep, 2, 2); // str == "surname" - str = line.section(sep, -3, -2); // str == "middlename surname" - //! [89] -} - -void Widget::setNumFunction() -{ - //! [56] - QString str; - str.setNum(1234); // str == "1234" - //! [56] -} - -void Widget::simplifiedFunction() -{ - //! [57] - QString str = " lots\t of\nwhitespace\r\n "; - str = str.simplified(); - // str == "lots of whitespace"; - //! [57] -} - -void Widget::sizeFunction() -{ - //! [58] - QString str = "World"; - int n = str.size(); // n == 5 - str.data()[0]; // returns 'W' - str.data()[4]; // returns 'd' - str.data()[5]; // returns '\0' - //! [58] -} - -void Widget::splitFunction() -{ - //! [59] - QString str; - QStringList list; - - str = "Some text\n\twith strange whitespace."; - list = str.split(QRegExp("\\s+")); - // list: [ "Some", "text", "with", "strange", "whitespace." ] - //! [59] - - //! [60] - str = "This time, a normal English sentence."; - list = str.split(QRegExp("\\W+"), QString::SkipEmptyParts); - // list: [ "This", "time", "a", "normal", "English", "sentence" ] - //! [60] - - //! [61] - str = "Now: this sentence fragment."; - list = str.split(QRegExp("\\b")); - // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ] - //! [61] - - //! [90] - QString str; - QStringList list; - - str = "Some text\n\twith strange whitespace."; - list = str.split(QRegularExpression("\\s+")); - // list: [ "Some", "text", "with", "strange", "whitespace." ] - //! [90] - - //! [91] - str = "This time, a normal English sentence."; - list = str.split(QRegularExpression("\\W+"), QString::SkipEmptyParts); - // list: [ "This", "time", "a", "normal", "English", "sentence" ] - //! [91] - - //! [92] - str = "Now: this sentence fragment."; - list = str.split(QRegularExpression("\\b")); - // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ] - //! [92] -} - -void Widget::splitCaseSensitiveFunction() -{ - //! [62] - QString str = "a,,b,c"; - - QStringList list1 = str.split(","); - // list1: [ "a", "", "b", "c" ] - - QStringList list2 = str.split(",", QString::SkipEmptyParts); - // list2: [ "a", "b", "c" ] - //! [62] -} - -void Widget::sprintfFunction() -{ - //! [63] - size_t BufSize; - char buf[BufSize]; - - ::snprintf(buf, BufSize, "%lld", 123456789LL); - QString str = QString::fromAscii(buf); - //! [63] - - //! [64] - QString result; - QTextStream(&result) << "pi = " << 3.14; - // result == "pi = 3.14" - //! [64] -} - -void Widget::startsWithFunction() -{ - //! [65] - QString str = "Bananas"; - str.startsWith("Ban"); // returns true - str.startsWith("Car"); // returns false - //! [65] -} - -void Widget::toDoubleFunction() -{ - //! [66] - QString str = "1234.56"; - double val = str.toDouble(); // val == 1234.56 - //! [66] - - //! [67] - bool ok; - double d; - - d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456 - //! [67] - - //! [68] - d = QString( "1234,56" ).toDouble(&ok); // ok == false - d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56 - //! [68] - - //! [69] - d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false - d = QString( "1234567.89" ).toDouble(&ok); // ok == true - //! [69] -} - -void Widget::toFloatFunction() -{ - //! [71] - QString str1 = "1234.56"; - str1.toFloat(); // returns 1234.56 - - bool ok; - QString str2 = "R2D2"; - str2.toFloat(&ok); // returns 0.0, sets ok to false - //! [71] -} - -void Widget::toIntFunction() -{ - //! [72] - QString str = "FF"; - bool ok; - int hex = str.toInt(&ok, 16); // hex == 255, ok == true - int dec = str.toInt(&ok, 10); // dec == 0, ok == false - //! [72] -} - -void Widget::toLongFunction() -{ - //! [73] - QString str = "FF"; - bool ok; - - long hex = str.toLong(&ok, 16); // hex == 255, ok == true - long dec = str.toLong(&ok, 10); // dec == 0, ok == false - //! [73] -} - -void Widget::toLongLongFunction() -{ - //! [74] - QString str = "FF"; - bool ok; - - qint64 hex = str.toLongLong(&ok, 16); // hex == 255, ok == true - qint64 dec = str.toLongLong(&ok, 10); // dec == 0, ok == false - //! [74] -} - -void Widget::toLowerFunction() -{ - //! [75] - QString str = "Qt by NOKIA"; - str = str.toLower(); // str == "qt by nokia" - //! [75] -} - -void Widget::toShortFunction() -{ - //! [76] - QString str = "FF"; - bool ok; - - short hex = str.toShort(&ok, 16); // hex == 255, ok == true - short dec = str.toShort(&ok, 10); // dec == 0, ok == false - //! [76] -} - -void Widget::toUIntFunction() -{ - //! [77] - QString str = "FF"; - bool ok; - - uint hex = str.toUInt(&ok, 16); // hex == 255, ok == true - uint dec = str.toUInt(&ok, 10); // dec == 0, ok == false - //! [77] -} - -void Widget::toULongFunction() -{ - //! [78] - QString str = "FF"; - bool ok; - - ulong hex = str.toULong(&ok, 16); // hex == 255, ok == true - ulong dec = str.toULong(&ok, 10); // dec == 0, ok == false - //! [78] -} - -void Widget::toULongLongFunction() -{ - //! [79] - QString str = "FF"; - bool ok; - - quint64 hex = str.toULongLong(&ok, 16); // hex == 255, ok == true - quint64 dec = str.toULongLong(&ok, 10); // dec == 0, ok == false - //! [79] -} - -void Widget::toUShortFunction() -{ - //! [80] - QString str = "FF"; - bool ok; - - ushort hex = str.toUShort(&ok, 16); // hex == 255, ok == true - ushort dec = str.toUShort(&ok, 10); // dec == 0, ok == false - //! [80] -} - -void Widget::toUpperFunction() -{ - //! [81] - QString str = "TeXt"; - str = str.toUpper(); // str == "TEXT" - //! [81] -} - -void Widget::trimmedFunction() -{ - //! [82] - QString str = " lots\t of\nwhitespace\r\n "; - str = str.trimmed(); - // str == "lots\t of\nwhitespace" - //! [82] -} - -void Widget::truncateFunction() -{ - //! [83] - QString str = "Vladivostok"; - str.truncate(4); - // str == "Vlad" - //! [83] -} - -void Widget::plusEqualOperator() -{ - //! [84] - QString x = "free"; - QString y = "dom"; - x += y; - // x == "freedom" - //! [84] -} - -void Widget::arrayOperator() -{ - //! [85] - QString str; - - if (str[0] == QChar('?')) - str[0] = QChar('_'); - //! [85] -} - -void Widget::midRefFunction() -{ - //! [midRef] - QString x = "Nine pineapples"; - QStringRef y = x.midRef(5, 4); // y == "pine" - QStringRef z = x.midRef(5); // z == "pineapples" - //! [midRef] -} - -void Widget::leftRefFunction() -{ - //! [leftRef] - QString x = "Pineapple"; - QStringRef y = x.leftRef(4); // y == "Pine" - //! [leftRef] -} - -void Widget::rightRefFunction() -{ - //! [rightRef] - QString x = "Pineapple"; - QStringRef y = x.rightRef(5); // y == "apple" - //! [rightRef] -} - - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Widget widget; - widget.show(); - return app.exec(); -} diff --git a/doc/src/snippets/qstring/stringbuilder.cpp b/doc/src/snippets/qstring/stringbuilder.cpp deleted file mode 100644 index 53cf0b7be0..0000000000 --- a/doc/src/snippets/qstring/stringbuilder.cpp +++ /dev/null @@ -1,62 +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] - QString foo; - QString type = "long"; - - foo->setText(QLatin1String("vector<") + type + QLatin1String(">::iterator")); - - if (foo.startsWith("(" + type + ") 0x")) - ... -//! [0] - -//! [3] - DEFINES *= QT_USE_QSTRINGBUILDER -//! [3] - -//! [5] - #include <QStringBuilder> - - QString hello("hello"); - QStringRef el(&hello, 2, 3); - QLatin1String world("world"); - QString message = hello % el % world % QChar('!'); -//! [5] diff --git a/doc/src/snippets/qstringlist/main.cpp b/doc/src/snippets/qstringlist/main.cpp deleted file mode 100644 index 8ca463371e..0000000000 --- a/doc/src/snippets/qstringlist/main.cpp +++ /dev/null @@ -1,170 +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$ -** -****************************************************************************/ - -#include <QtGui> -#include <iostream> -using namespace std; - -class Widget : public QWidget -{ -public: - Widget(QWidget *parent = 0); -}; - -Widget::Widget(QWidget *parent) - : QWidget(parent) -{ -//! [0] - QStringList fonts; - fonts << "Arial" << "Helvetica" << "Times" << "Courier"; -//! [0] - -//! [1] - for (int i = 0; i < fonts.size(); ++i) - cout << fonts.at(i).toLocal8Bit().constData() << endl; -//! [1] - -//! [2] - QStringListIterator javaStyleIterator(fonts); - while (javaStyleIterator.hasNext()) - cout << javaStyleIterator.next().toLocal8Bit().constData() << endl; -//! [2] - -//! [3] - QStringList::const_iterator constIterator; - for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd(); - ++constIterator) - cout << (*constIterator).toLocal8Bit().constData() << endl; -//! [3] - -//! [4] - QString str = fonts.join(","); - // str == "Arial,Helvetica,Times,Courier" -//! [4] - -//! [5] //! [6] - QStringList list; -//! [5] - list = str.split(","); - // list: ["Arial", "Helvetica", "Times", "Courier"] -//! [6] - -//! [7] - QStringList monospacedFonts = fonts.filter(QRegExp("Courier|Fixed")); -//! [7] - -//! [8] - QStringList files; - files << "$QTDIR/src/moc/moc.y" - << "$QTDIR/src/moc/moc.l" - << "$QTDIR/include/qconfig.h"; - - files.replaceInStrings("$QTDIR", "/usr/lib/qt"); - // files: [ "/usr/lib/qt/src/moc/moc.y", ...] -//! [8] - - QString str1, str2, str3; -//! [9] - QStringList longerList = (QStringList() << str1 << str2 << str3); -//! [9] - - list.clear(); -//! [10] - list << "Bill Murray" << "John Doe" << "Bill Clinton"; - -//! [11] - QStringList result; -//! [11] - result = list.filter("Bill"); - // result: ["Bill Murray", "Bill Clinton"] -//! [10] - - result.clear(); -//! [12] - foreach (const QString &str, list) { - if (str.contains("Bill")) - result += str; - } -//! [12] - - list.clear(); -//! [13] - list << "alpha" << "beta" << "gamma" << "epsilon"; - list.replaceInStrings("a", "o"); - // list == ["olpho", "beto", "gommo", "epsilon"] -//! [13] - - list.clear(); -//! [14] - list << "alpha" << "beta" << "gamma" << "epsilon"; - list.replaceInStrings(QRegExp("^a"), "o"); - // list == ["olpha", "beta", "gamma", "epsilon"] -//! [14] - - list.clear(); -//! [15] - list << "Bill Clinton" << "Murray, Bill"; - list.replaceInStrings(QRegExp("^(.*), (.*)$"), "\\2 \\1"); - // list == ["Bill Clinton", "Bill Murray"] -//! [15] - - list.clear(); -//! [16] - list << "alpha" << "beta" << "gamma" << "epsilon"; - list.replaceInStrings(QRegularExpression("^a"), "o"); - // list == ["olpha", "beta", "gamma", "epsilon"] -//! [16] - - list.clear(); -//! [17] - list << "Bill Clinton" << "Murray, Bill"; - list.replaceInStrings(QRegularExpression("^(.*), (.*)$"), "\\2 \\1"); - // list == ["Bill Clinton", "Bill Murray"] -//! [17] - -} - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Widget widget; - widget.show(); - return app.exec(); -} diff --git a/doc/src/snippets/qstringlistmodel/main.cpp b/doc/src/snippets/qstringlistmodel/main.cpp deleted file mode 100644 index 24de0fd0ae..0000000000 --- a/doc/src/snippets/qstringlistmodel/main.cpp +++ /dev/null @@ -1,66 +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$ -** -****************************************************************************/ - -#include <QtGui> - -class Widget : public QWidget -{ -public: - Widget(QWidget *parent = 0); -}; - -Widget::Widget(QWidget *parent) - : QWidget(parent) -{ -//! [0] - QStringListModel *model = new QStringListModel(); - QStringList list; - list << "a" << "b" << "c"; - model->setStringList(list); -//! [0] -} - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Widget widget; - widget.show(); - return app.exec(); -} diff --git a/doc/src/snippets/qtcast/qtcast.cpp b/doc/src/snippets/qtcast/qtcast.cpp deleted file mode 100644 index f0c3834bf0..0000000000 --- a/doc/src/snippets/qtcast/qtcast.cpp +++ /dev/null @@ -1,79 +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$ -** -****************************************************************************/ - -#include <QLabel> -#include <QPushButton> - -#include "qtcast.h" - -MyWidget::MyWidget() -{ -//! [0] - QObject *obj = new MyWidget; -//! [0] - -//! [1] - QWidget *widget = qobject_cast<QWidget *>(obj); -//! [1] - -//! [2] - MyWidget *myWidget = qobject_cast<MyWidget *>(obj); -//! [2] - -//! [3] - QLabel *label = qobject_cast<QLabel *>(obj); -//! [3] //! [4] - // label is 0 -//! [4] - -//! [5] - if (QLabel *label = qobject_cast<QLabel *>(obj)) { -//! [5] //! [6] - label->setText(tr("Ping")); - } else if (QPushButton *button = qobject_cast<QPushButton *>(obj)) { - button->setText(tr("Pong!")); - } -//! [6] -} - -int main() -{ - return 0; -} diff --git a/doc/src/snippets/qxmlstreamwriter/main.cpp b/doc/src/snippets/qxmlstreamwriter/main.cpp deleted file mode 100644 index 907d779357..0000000000 --- a/doc/src/snippets/qxmlstreamwriter/main.cpp +++ /dev/null @@ -1,76 +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$ -** -****************************************************************************/ - -#include <QCoreApplication> -#include <QFile> -#include <QXmlStreamWriter> -#include <stdio.h> - -int main(int argc, char *argv[]) -{ - QCoreApplication app(argc, argv); - QFile output; - output.open(stdout, QIODevice::WriteOnly); -//! [write output] -//! [start stream] - QXmlStreamWriter stream(&output); - stream.setAutoFormatting(true); - stream.writeStartDocument(); -//! [start stream] - stream.writeDTD("<!DOCTYPE xbel>"); - stream.writeStartElement("xbel"); - stream.writeAttribute("version", "1.0"); - stream.writeStartElement("folder"); - stream.writeAttribute("folded", "no"); -//! [write element] - stream.writeStartElement("bookmark"); - stream.writeAttribute("href", "http://qt.nokia.com/"); - stream.writeTextElement("title", "Qt Home"); - stream.writeEndElement(); // bookmark -//! [write element] - stream.writeEndElement(); // folder - stream.writeEndElement(); // xbel -//! [finish stream] - stream.writeEndDocument(); -//! [finish stream] -//! [write output] - output.close(); - return 0; -} diff --git a/doc/src/snippets/settings/settings.cpp b/doc/src/snippets/settings/settings.cpp deleted file mode 100644 index 8648843d43..0000000000 --- a/doc/src/snippets/settings/settings.cpp +++ /dev/null @@ -1,184 +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$ -** -****************************************************************************/ - -#include <QtGui> - -QWidget *win; -QWidget *panel; - -void snippet_ctor1() -{ -//! [0] - QSettings settings("MySoft", "Star Runner"); -//! [0] -} - -void snippet_ctor2() -{ -//! [1] - QCoreApplication::setOrganizationName("MySoft"); -//! [1] //! [2] - QCoreApplication::setOrganizationDomain("mysoft.com"); -//! [2] //! [3] - QCoreApplication::setApplicationName("Star Runner"); -//! [3] - -//! [4] - QSettings settings; -//! [4] - -//! [5] - settings.setValue("editor/wrapMargin", 68); -//! [5] //! [6] - int margin = settings.value("editor/wrapMargin").toInt(); -//! [6] - { -//! [7] - int margin = settings.value("editor/wrapMargin", 80).toInt(); -//! [7] - } - -//! [8] - settings.setValue("mainwindow/size", win->size()); -//! [8] //! [9] - settings.setValue("mainwindow/fullScreen", win->isFullScreen()); -//! [9] //! [10] - settings.setValue("outputpanel/visible", panel->isVisible()); -//! [10] - -//! [11] - settings.beginGroup("mainwindow"); - settings.setValue("size", win->size()); - settings.setValue("fullScreen", win->isFullScreen()); - settings.endGroup(); -//! [11] - -//! [12] - settings.beginGroup("outputpanel"); - settings.setValue("visible", panel->isVisible()); - settings.endGroup(); -//! [12] -} - -void snippet_locations() -{ -//! [13] - QSettings obj1("MySoft", "Star Runner"); -//! [13] //! [14] - QSettings obj2("MySoft"); - QSettings obj3(QSettings::SystemScope, "MySoft", "Star Runner"); - QSettings obj4(QSettings::SystemScope, "MySoft"); -//! [14] - - { -//! [15] - QSettings settings(QSettings::IniFormat, QSettings::UserScope, - "MySoft", "Star Runner"); -//! [15] - } - - { - QSettings settings("starrunner.ini", QSettings::IniFormat); - } - - { - QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft", - QSettings::NativeFormat); - } -} - -class MainWindow : public QMainWindow -{ -public: - MainWindow(); - - void writeSettings(); - void readSettings(); - -protected: - void closeEvent(QCloseEvent *event); -}; - -//! [16] -void MainWindow::writeSettings() -{ - QSettings settings("Moose Soft", "Clipper"); - - settings.beginGroup("MainWindow"); - settings.setValue("size", size()); - settings.setValue("pos", pos()); - settings.endGroup(); -} -//! [16] - -//! [17] -void MainWindow::readSettings() -{ - QSettings settings("Moose Soft", "Clipper"); - - settings.beginGroup("MainWindow"); - resize(settings.value("size", QSize(400, 400)).toSize()); - move(settings.value("pos", QPoint(200, 200)).toPoint()); - settings.endGroup(); -} -//! [17] - -//! [18] -MainWindow::MainWindow() -{ -//! [18] //! [19] - readSettings(); -//! [19] //! [20] -} -//! [20] - -bool userReallyWantsToQuit() { return true; } - -//! [21] -void MainWindow::closeEvent(QCloseEvent *event) -{ - if (userReallyWantsToQuit()) { - writeSettings(); - event->accept(); - } else { - event->ignore(); - } -} -//! [21] diff --git a/doc/src/snippets/sharedemployee/employee.h b/doc/src/snippets/sharedemployee/employee.h deleted file mode 100644 index efb1d32000..0000000000 --- a/doc/src/snippets/sharedemployee/employee.h +++ /dev/null @@ -1,94 +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$ -** -****************************************************************************/ - -#ifndef EMPLOYEE_H -#define EMPLOYEE_H - -//! [0] -#include <QSharedData> -#include <QString> - -class EmployeeData : public QSharedData -{ - public: - EmployeeData() : id(-1) { } - EmployeeData(const EmployeeData &other) - : QSharedData(other), id(other.id), name(other.name) { } - ~EmployeeData() { } - - int id; - QString name; -}; - -class Employee -{ - public: -//! [1] - Employee() { d = new EmployeeData; } -//! [1] //! [2] - Employee(int id, QString name) { - d = new EmployeeData; - setId(id); - setName(name); - } -//! [2] //! [7] - Employee(const Employee &other) - : d (other.d) - { - } -//! [7] -//! [3] - void setId(int id) { d->id = id; } -//! [3] //! [4] - void setName(QString name) { d->name = name; } -//! [4] - -//! [5] - int id() const { return d->id; } -//! [5] //! [6] - QString name() const { return d->name; } -//! [6] - - private: - QSharedDataPointer<EmployeeData> d; -}; -//! [0] - -#endif diff --git a/doc/src/snippets/sharedemployee/main.cpp b/doc/src/snippets/sharedemployee/main.cpp deleted file mode 100644 index 6e840ab5e6..0000000000 --- a/doc/src/snippets/sharedemployee/main.cpp +++ /dev/null @@ -1,50 +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] -#include "employee.h" - -int main() -{ - Employee e1(1001, "Albrecht Durer"); - Employee e2 = e1; - e1.setName("Hans Holbein"); -} -//! [0] diff --git a/doc/src/snippets/signalmapper/filereader.cpp b/doc/src/snippets/signalmapper/filereader.cpp deleted file mode 100644 index 067ba8280e..0000000000 --- a/doc/src/snippets/signalmapper/filereader.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the config.tests 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$ -** -****************************************************************************/ - -#include <QtGui> -#include "filereader.h" - - -FileReader::FileReader(QWidget *parent) - : QWidget(parent) -{ - textEdit = new QTextEdit; - - taxFileButton = new QPushButton("Tax File"); - accountFileButton = new QPushButton("Accounts File"); - reportFileButton = new QPushButton("Report File"); - -//! [0] - signalMapper = new QSignalMapper(this); - signalMapper->setMapping(taxFileButton, QString("taxfile.txt")); - signalMapper->setMapping(accountFileButton, QString("accountsfile.txt")); - signalMapper->setMapping(reportFileButton, QString("reportfile.txt")); - - connect(taxFileButton, &QPushButton::clicked, - signalMapper, &QSignalMapper::map); - connect(accountFileButton, &QPushButton::clicked, - signalMapper, &QSignalMapper::map); - connect(reportFileButton, &QPushButton::clicked, - signalMapper, &QSignalMapper::map); -//! [0] - -//! [1] - connect(signalMapper, SIGNAL(mapped(QString)), - this, SLOT(readFile(QString))); -//! [1] - -/* -//! [2] - //slower due to signature normalization at runtime - - connect(signalMapper, SIGNAL(mapped(const QString &)), - this, SLOT(readFile(const QString &))); -//! [2] -*/ - QHBoxLayout *buttonLayout = new QHBoxLayout; - buttonLayout->addWidget(taxFileButton); - buttonLayout->addWidget(accountFileButton); - buttonLayout->addWidget(reportFileButton); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(textEdit); - mainLayout->addLayout(buttonLayout); - - setLayout(mainLayout); -} - -void FileReader::readFile(const QString &filename) -{ - QFile file(filename); - - if (!file.open(QIODevice::ReadOnly)) { - QMessageBox::information(this, tr("Unable to open file"), - file.errorString()); - return; - } - - - QTextStream in(&file); - textEdit->setPlainText(in.readAll()); -} - diff --git a/doc/src/snippets/signalsandslots/lcdnumber.h b/doc/src/snippets/signalsandslots/lcdnumber.h deleted file mode 100644 index 7056254f9f..0000000000 --- a/doc/src/snippets/signalsandslots/lcdnumber.h +++ /dev/null @@ -1,88 +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] -#ifndef LCDNUMBER_H -//! [0] //! [1] -#define LCDNUMBER_H -//! [1] - -//! [2] -#include <QFrame> -//! [2] - -//! [3] -class LcdNumber : public QFrame -//! [3] //! [4] -{ -//! [4] //! [5] - Q_OBJECT -//! [5] - -//! [6] -public: -//! [6] //! [7] - LcdNumber(QWidget *parent = 0); -//! [7] - -//! [8] -signals: -//! [8] //! [9] - void overflow(); -//! [9] - -//! [10] -public slots: -//! [10] //! [11] - void display(int num); - void display(double num); - void display(const QString &str); - void setHexMode(); - void setDecMode(); - void setOctMode(); - void setBinMode(); - void setSmallDecimalPoint(bool point); -//! [11] //! [12] -}; -//! [12] - -//! [13] -#endif -//! [13] diff --git a/doc/src/snippets/signalsandslots/signalsandslots.cpp b/doc/src/snippets/signalsandslots/signalsandslots.cpp deleted file mode 100644 index 3072650585..0000000000 --- a/doc/src/snippets/signalsandslots/signalsandslots.cpp +++ /dev/null @@ -1,84 +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$ -** -****************************************************************************/ - -#include <QAbstractButton> - -#include "signalsandslots.h" - -//! [0] -void Counter::setValue(int value) -{ - if (value != m_value) { - m_value = value; - emit valueChanged(value); - } -} -//! [0] - -int main() -{ -//! [1] - Counter a, b; -//! [1] //! [2] - QObject::connect(&a, &Counter::valueChanged, - &b, &Counter::setValue); -//! [2] - -//! [3] - a.setValue(12); // a.value() == 12, b.value() == 12 -//! [3] //! [4] - b.setValue(48); // a.value() == 12, b.value() == 48 -//! [4] - - - QWidget *widget = reinterpret_cast<QWidget *>(new QObject(0)); -//! [5] - if (widget->inherits("QAbstractButton")) { - QAbstractButton *button = static_cast<QAbstractButton *>(widget); - button->toggle(); -//! [5] //! [6] - } -//! [6] - -//! [7] - if (QAbstractButton *button = qobject_cast<QAbstractButton *>(widget)) - button->toggle(); -//! [7] -} diff --git a/doc/src/snippets/signalsandslots/signalsandslots.h b/doc/src/snippets/signalsandslots/signalsandslots.h deleted file mode 100644 index e18f955a41..0000000000 --- a/doc/src/snippets/signalsandslots/signalsandslots.h +++ /dev/null @@ -1,89 +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$ -** -****************************************************************************/ - -#ifndef SIGNALSANDSLOTS_H -#define SIGNALSANDSLOTS_H - -#define Counter PlainCounter - -//! [0] -class Counter -{ -public: - Counter() { m_value = 0; } - - int value() const { return m_value; } - void setValue(int value); - -private: - int m_value; -}; -//! [0] - -#undef Counter -#define Counter ObjectCounter - -//! [1] -#include <QObject> -//! [1] - -//! [2] -class Counter : public QObject -//! [2] //! [3] -{ - Q_OBJECT - -public: - Counter() { m_value = 0; } - - int value() const { return m_value; } - -public slots: - void setValue(int value); - -signals: - void valueChanged(int newValue); - -private: - int m_value; -}; -//! [3] - -#endif diff --git a/doc/src/snippets/streaming/main.cpp b/doc/src/snippets/streaming/main.cpp deleted file mode 100644 index 7c992345c2..0000000000 --- a/doc/src/snippets/streaming/main.cpp +++ /dev/null @@ -1,108 +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$ -** -****************************************************************************/ - -#include <QtCore> -#include <QByteArray> -#include <QDataStream> - -//! [0] -struct Movie -{ - int id; - QString title; - QDate releaseDate; -}; -//! [0] - -//! [1] -QDataStream &operator<<(QDataStream &out, const Movie &movie) -{ - out << (quint32)movie.id << movie.title - << movie.releaseDate; - return out; -} -//! [1] - -//! [2] -QDataStream &operator>>(QDataStream &in, Movie &movie) -{ - quint32 id; - QDate date; - - in >> id >> movie.title >> date; - movie.id = (int)id; - movie.releaseDate = date; - return in; -} -//! [2] - -int main(int argc, char *argv[]) -{ - QCoreApplication app(argc, argv); - - Movie m; - m.id = 0001; - m.title = "Happy Meal"; - m.releaseDate = QDate(1995, 5, 17); - - QByteArray byteArray; - QDataStream stream(&byteArray, QIODevice::WriteOnly); - stream << m; - - // display - qDebug() << m.id << m.releaseDate << m.title; - - Movie m2; - - int id2; - QString title2; - QDate date2; - - QDataStream stream2(byteArray); - stream2 >> id2 >> title2 >> date2; - - m2.id = id2; - m2.title = title2; - m2.releaseDate = date2; - - qDebug() << id2 << " " << date2 << " " << title2; - - return 0; -} diff --git a/doc/src/snippets/streaming/streaming.pro b/doc/src/snippets/streaming/streaming.pro deleted file mode 100644 index 8c5eb91f05..0000000000 --- a/doc/src/snippets/streaming/streaming.pro +++ /dev/null @@ -1,2 +0,0 @@ -SOURCES = main.cpp -CONFIG += CONSOLE
\ No newline at end of file diff --git a/doc/src/snippets/threads/threads.cpp b/doc/src/snippets/threads/threads.cpp deleted file mode 100644 index 9ef716705a..0000000000 --- a/doc/src/snippets/threads/threads.cpp +++ /dev/null @@ -1,117 +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$ -** -****************************************************************************/ - -#include <QCache> -#include <QMutex> -#include <QThreadStorage> - -#include "threads.h" - -//! [0] -void MyThread::run() -//! [0] //! [1] -{ -//! [1] //! [2] -} -//! [2] - -#define Counter ReentrantCounter - -//! [3] -class Counter -//! [3] //! [4] -{ -public: - Counter() { n = 0; } - - void increment() { ++n; } - void decrement() { --n; } - int value() const { return n; } - -private: - int n; -}; -//! [4] - -#undef Counter -#define Counter ThreadSafeCounter - -//! [5] -class Counter -//! [5] //! [6] -{ -public: - Counter() { n = 0; } - - void increment() { QMutexLocker locker(&mutex); ++n; } - void decrement() { QMutexLocker locker(&mutex); --n; } - int value() const { QMutexLocker locker(&mutex); return n; } - -private: - mutable QMutex mutex; - int n; -}; -//! [6] - -typedef int SomeClass; - -//! [7] -QThreadStorage<QCache<QString, SomeClass> > caches; - -void cacheObject(const QString &key, SomeClass *object) -//! [7] //! [8] -{ - caches.localData().insert(key, object); -} - -void removeFromCache(const QString &key) -//! [8] //! [9] -{ - if (!caches.hasLocalData()) - return; - - caches.localData().remove(key); -} -//! [9] - -int main() -{ - return 0; -} diff --git a/doc/src/snippets/threads/threads.h b/doc/src/snippets/threads/threads.h deleted file mode 100644 index a45a2c92da..0000000000 --- a/doc/src/snippets/threads/threads.h +++ /dev/null @@ -1,51 +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$ -** -****************************************************************************/ - -#include <QThread> - -//! [0] -class MyThread : public QThread -{ - Q_OBJECT - -protected: - void run(); -}; -//! [0] diff --git a/doc/src/snippets/timers/timers.cpp b/doc/src/snippets/timers/timers.cpp deleted file mode 100644 index 65b1c0d146..0000000000 --- a/doc/src/snippets/timers/timers.cpp +++ /dev/null @@ -1,78 +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$ -** -****************************************************************************/ - -#include <QTimer> - -class Foo : public QObject -{ -public: - Foo(); -}; - -Foo::Foo() -{ -//! [0] - QTimer *timer = new QTimer(this); -//! [0] //! [1] - connect(timer, SIGNAL(timeout()), this, SLOT(updateCaption())); -//! [1] //! [2] - timer->start(1000); -//! [2] - -//! [3] - QTimer::singleShot(200, this, SLOT(updateCaption())); -//! [3] - - { - // ZERO-CASE -//! [4] - QTimer *timer = new QTimer(this); -//! [4] //! [5] - connect(timer, SIGNAL(timeout()), this, SLOT(processOneThing())); -//! [5] //! [6] - timer->start(); -//! [6] - } -} - -int main() -{ - -} |