efficient hash-lookup of objects in a limited cache storage.
\table
- \header \o Class \o Summary
+ \header \li Class \li Summary
- \row \o \l{QList}<T>
- \o This is by far the most commonly used container class. It
+ \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.
possible in the executable. QStringList inherits from
QList<QString>.
- \row \o \l{QLinkedList}<T>
- \o This is similar to QList, except that it uses
+ \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.
long as the item exists, whereas iterators to a QList can become
invalid after any insertion or removal.)
- \row \o \l{QVector}<T>
- \o This stores an array of values of a given type at adjacent
+ \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 \o \l{QStack}<T>
- \o This is a convenience subclass of QVector that provides
+ \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 \o \l{QQueue}<T>
- \o This is a convenience subclass of QList that provides
+ \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 \o \l{QSet}<T>
- \o This provides a single-valued mathematical set with fast
+ \row \li \l{QSet}<T>
+ \li This provides a single-valued mathematical set with fast
lookups.
- \row \o \l{QMap}<Key, T>
- \o This provides a dictionary (associative array) that maps keys
+ \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 \o \l{QMultiMap}<Key, T>
- \o This is a convenience subclass of QMap that provides a nice
+ \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 \o \l{QHash}<Key, T>
- \o This has almost the same API as QMap, but provides
+ \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 \o \l{QMultiHash}<Key, T>
- \o This is a convenience subclass of QHash that
+ \row \li \l{QMultiHash}<Key, T>
+ \li This is a convenience subclass of QHash that
provides a nice interface for multi-valued hashes.
\endtable
read-write access.
\table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QListIterator<T>
- \o QMutableListIterator<T>
- \row \o QLinkedList<T> \o QLinkedListIterator<T>
- \o QMutableLinkedListIterator<T>
- \row \o QVector<T>, QStack<T> \o QVectorIterator<T>
- \o QMutableVectorIterator<T>
- \row \o QSet<T> \o QSetIterator<T>
- \o QMutableSetIterator<T>
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMapIterator<Key, T>
- \o QMutableMapIterator<Key, T>
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHashIterator<Key, T>
- \o QMutableHashIterator<Key, T>
+ \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
The following table summarizes the QListIterator API:
\table
- \header \o Function \o Behavior
- \row \o \l{QListIterator::toFront()}{toFront()}
- \o Moves the iterator to the front of the list (before the first item)
- \row \o \l{QListIterator::toBack()}{toBack()}
- \o Moves the iterator to the back of the list (after the last item)
- \row \o \l{QListIterator::hasNext()}{hasNext()}
- \o Returns true if the iterator isn't at the back of the list
- \row \o \l{QListIterator::next()}{next()}
- \o Returns the next item and advances the iterator by one position
- \row \o \l{QListIterator::peekNext()}{peekNext()}
- \o Returns the next item without moving the iterator
- \row \o \l{QListIterator::hasPrevious()}{hasPrevious()}
- \o Returns true if the iterator isn't at the front of the list
- \row \o \l{QListIterator::previous()}{previous()}
- \o Returns the previous item and moves the iterator back by one position
- \row \o \l{QListIterator::peekPrevious()}{peekPrevious()}
- \o Returns the previous item without moving the iterator
+ \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
possible because they are faster than read-write iterators.
\table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QList<T>::const_iterator
- \o QList<T>::iterator
- \row \o QLinkedList<T> \o QLinkedList<T>::const_iterator
- \o QLinkedList<T>::iterator
- \row \o QVector<T>, QStack<T> \o QVector<T>::const_iterator
- \o QVector<T>::iterator
- \row \o QSet<T> \o QSet<T>::const_iterator
- \o QSet<T>::iterator
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMap<Key, T>::const_iterator
- \o QMap<Key, T>::iterator
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHash<Key, T>::const_iterator
- \o QHash<Key, T>::iterator
+ \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.
The following table summarizes the STL-style iterators' API:
\table
- \header \o Expression \o Behavior
- \row \o \c{*i} \o Returns the current item
- \row \o \c{++i} \o Advances the iterator to the next item
- \row \o \c{i += n} \o Advances the iterator by \c n items
- \row \o \c{--i} \o Moves the iterator back by one item
- \row \o \c{i -= n} \o Moves the iterator back by \c n items
- \row \o \c{i - j} \o Returns the number of items between iterators \c i and \c j
+ \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
be used with the \c foreach keyword.
\list
- \o QVarLengthArray<T, Prealloc> provides a low-level
+ \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.
- \o QCache<Key, T> provides a cache to store objects of a certain
+ \li QCache<Key, T> provides a cache to store objects of a certain
type T associated with keys of type Key.
- \o QContiguousCache<T> provides an efficient way of caching data
+ \li QContiguousCache<T> provides an efficient way of caching data
that is typically accessed in a contiguous way.
- \o QPair<T1, T2> stores a pair of elements.
+ \li QPair<T1, T2> stores a pair of elements.
\endlist
Additional non-template types that compete with Qt's template
\keyword quadratic time
\list
- \o \bold{Constant time:} O(1). A function is said to run in constant
+ \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().
- \o \bold{Logarithmic time:} O(log \e n). A function that runs in
+ \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().
- \o \bold{Linear time:} O(\e n). A function that runs in linear time
+ \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().
- \o \bold{Linear-logarithmic time:} O(\e{n} log \e n). A function
+ \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.
- \o \bold{Quadratic time:} O(\e{n}\unicode{178}). 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
sequential container classes:
\table
- \header \o \o Index lookup \o Insertion \o Prepending \o Appending
- \row \o QLinkedList<T> \o O(\e n) \o O(1) \o O(1) \o O(1)
- \row \o QList<T> \o O(1) \o O(n) \o Amort. O(1) \o Amort. O(1)
- \row \o QVector<T> \o O(1) \o O(n) \o O(n) \o Amort. O(1)
+ \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
associative containers and sets:
\table
- \header \o{1,2} \o{2,1} Key lookup \o{2,1} Insertion
- \header \o Average \o Worst case \o Average \o Worst case
- \row \o QMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QMultiMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QHash<Key, T> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
- \row \o QSet<Key> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
+ \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
The values above may seem a bit strange, but here are the guiding
principles:
\list
- \o QString allocates 4 characters at a time until it reaches size 20.
- \o From 20 to 4084, it advances by doubling the size each time.
+ \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.)
- \o From 4084 on, it advances by blocks of 2048 characters (4096
+ \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
use to store the items:
\list
- \o \l{QString::capacity()}{capacity()} returns the
+ \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).
- \o \l{QString::reserve()}{reserve}(\e size) explicitly
+ \li \l{QString::reserve()}{reserve}(\e size) explicitly
preallocates memory for \e size items.
- \o \l{QString::squeeze()}{squeeze()} frees any memory
+ \li \l{QString::squeeze()}{squeeze()} frees any memory
not required to store the items.
\endlist
JSON is a format to store structured data. It has 6 basic data types:
\list
- \o bool
- \o double
- \o string
- \o array
- \o object
- \o null
+ \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
The meta-object system is based on three things:
\list 1
- \o The \l QObject class provides a base class for objects that can
+ \li The \l QObject class provides a base class for objects that can
take advantage of the meta-object system.
- \o The Q_OBJECT macro inside the private section of the class
+ \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.
- \o The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
+ \li The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
QObject subclass with the necessary code to implement
meta-object features.
\endlist
additional features:
\list
- \o QObject::metaObject() returns the associated
+ \li QObject::metaObject() returns the associated
\l{QMetaObject}{meta-object} for the class.
- \o QMetaObject::className() returns the class name as a
+ \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.
- \o QObject::inherits() function returns whether an object is an
+ \li QObject::inherits() function returns whether an object is an
instance of a class that inherits a specified class within the
QObject inheritance tree.
- \o QObject::tr() and QObject::trUtf8() translate strings for
+ \li QObject::tr() and QObject::trUtf8() translate strings for
\l{Internationalization with Qt}{internationalization}.
- \o QObject::setProperty() and QObject::property()
+ \li QObject::setProperty() and QObject::property()
dynamically set and get properties by name.
- \o QMetaObject::newInstance() constructs a new instance of the class.
+ \li QMetaObject::newInstance() constructs a new instance of the class.
\endlist
\target qobjectcast
Qt adds these features to C++:
\list
- \o a very powerful mechanism for seamless object
+ \li a very powerful mechanism for seamless object
communication called \l{signals and slots}
- \o queryable and designable \l{Qt's Property System}{object
+ \li queryable and designable \l{Qt's Property System}{object
properties}
- \o powerful \l{The Event System}{events and event filters}
- \o contextual \l{i18n}{string translation for internationalization}
- \o sophisticated interval driven \l timers that make it possible
+ \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
- \o hierarchical and queryable \l{Object Trees & Ownership}{object
+ \li hierarchical and queryable \l{Object Trees & Ownership}{object
trees} that organize object ownership in a natural way
- \o guarded pointers (QPointer) that are automatically
+ \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
- \o a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
+ \li a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
library boundaries.
\endlist
or assigning a value. We can see what this means in the Qt Object
Model.
- \bold{A Qt Object...}
+ \b{A Qt Object...}
\list
- \o might have a unique \l{QObject::objectName()}. If we copy a Qt
+ \li might have a unique \l{QObject::objectName()}. If we copy a Qt
Object, what name should we give the copy?
- \o has a location in an \l{Object Trees & Ownership}
+ \li has a location in an \l{Object Trees & Ownership}
{object hierarchy}. If we copy a Qt Object, where should the copy
be located?
- \o can be connected to other Qt Objects to emit signals to them or
+ \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?
- \o can have \l{Qt's Property System} {new properties} added to it
+ \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?
\list
- \o A \c READ accessor function is required. It is for reading the
+ \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().
- \o A \c WRITE accessor function is optional. It is for setting the
+ \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.
- \o A \c RESET function is optional. It is for setting the property
+ \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,
mean \e {reset to the context specific cursor}. The \c RESET
function must return void and take no parameters.
- \o A \c NOTIFY signal is optional. If defined, it should specify one
+ \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.
- \o A \c REVISION number is optional. If included, it defines the
+ \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.
- \o The \c DESIGNABLE attribute indicates whether the property
+ \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.
- \o The \c SCRIPTABLE attribute indicates whether this property
+ \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.
- \o The \c STORED attribute indicates whether the property should
+ \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
false, because its value is just taken from the width component
of property QWidget::minimumSize(), which is a QSize.
- \o The \c USER attribute indicates whether the property is
+ \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.
- \o The presence of the \c CONSTANT attibute indicates that the 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.
- \o The presence of the \c FINAL attribute indicates that the property
+ \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.
There are basically two use cases for threads:
\list
- \o Make processing faster by making use of multicore processors.
- \o Keep the GUI thread or other time critical threads responsive by
+ \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
\table
\header
- \o Alternative
- \o Comment
+ \li Alternative
+ \li Comment
\row
- \o QEventLoop::processEvents()
- \o Calling QEventLoop::processEvents() repeatedly during a
+ \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
- \o QTimer
- \o Background processing can sometimes be done conveniently using a
+ \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
- \o QSocketNotifier QNetworkAccessManager QIODevice::readyRead()
- \o This is an alternative to having one or multiple threads, each with
+ \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
\table
\header
- \o Lifetime of thread
- \o Development task
- \o Solution
+ \li Lifetime of thread
+ \li Development task
+ \li Solution
\row
- \o One call
- \o Run one method within another thread and quit the thread when the
+ \li One call
+ \li Run one method within another thread and quit the thread when the
method is finished.
- \o Qt provides different solutions:
+ \li Qt provides different solutions:
\list
- \o Write a function and run it with QtConcurrent::run()
- \o Derive a class from QRunnable and run it in the global thread
+ \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()
- \o Derive a class from QThread, reimplement the QThread::run()
+ \li Derive a class from QThread, reimplement the QThread::run()
method and use QThread::start() to run it.
\endlist
\row
- \o One call
- \o Operations are to be performed on all items of a container.
+ \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.
- \o QtConcurrent provides the \l{QtConcurrent::}{map()} function for
+ \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
- \o One call
- \o A long running operation has to be put in another thread. During the
+ \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.
- \o Use QThread, reimplement run and emit signals as needed. Connect the
+ \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
- \o Permanent
- \o Have an object living in another thread and let it perform different
+ \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.
- \o Derive a class from QObject and implement the necessary slots and
+ \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
- \o Permanent
- \o Have an object living in another thread, let the object perform
+ \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.
- \o Same as above but also use a timer in the worker thread to implement
+ \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
The anatomy of QThread is quite interesting:
\list
- \o QThread does not live in the new thread where \l{QThread::}{run()} is
+ \li QThread does not live in the new thread where \l{QThread::}{run()} is
executed. It lives in the old thread.
- \o Most QThread methods are the thread's control interface and are meant to
+ \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.
- \o \l{QThread::}{exec()} and the static methods
+ \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.
- \o Additional members defined in the QThread subclass are
+ \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,
main thread.
\list
- \o Using QThread as shown \l{Qt thread basics}{above}
- \o \l{Example 1: Using the Thread Pool}{Using the global QThreadPool}
- \o \l{Example 2: Using QtConcurrent}{Using QtConcurrent}
- \o \l{Example 3: Clock}{Communication with the GUI thread}
- \o \l{Example 4: A Permanent Thread}{A permanent QObject in another thread
+ \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
can help you go into the subject in more depth:
\list
- \o Good video tutorials about threads with Qt can be found in the material
+ \li Good video tutorials about threads with Qt can be found in the material
from the \l{Training Day at Qt Developer Days 2009}.
- \o The \l{Thread Support in Qt} document is a good starting point into
+ \li The \l{Thread Support in Qt} document is a good starting point into
the reference documentation.
- \o Qt comes with several additional examples for
+ \li Qt comes with several additional examples for
\l{Threading and Concurrent Programming Examples}{QThread and QtConcurrent}.
- \o Several good books describe how to work with Qt threads. The most
+ \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.
\section1 Topics:
\list
- \o \l{Recommended Reading}
- \o \l{The Threading Classes}
- \o \l{Starting Threads with QThread}
- \o \l{Synchronizing Threads}
- \o \l{Reentrancy and Thread-Safety}
- \o \l{Threads and QObjects}
- \o \l{Concurrent Programming}
- \o \l{Thread-Support in Qt Modules}
+ \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
to threading see our Recommended Reading list:
\list
- \o \l{Threads Primer: A Guide to Multithreaded Programming}
- \o \l{Thread Time: The Multithreaded Programming Guide}
- \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
- \o \l{Win32 Multithreaded Programming}
+ \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
\omit
\list
- \o QThread provides the means to start a new thread.
- \o QThreadStorage provides per-thread data storage.
- \o QThreadPool manages a pool of threads that run QRunnable objects.
- \o QRunnable is an abstract class representing a runnable object.
- \o QMutex provides a mutual exclusion lock, or mutex.
- \o QMutexLocker is a convenience class that automatically locks
+ \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.
- \o QReadWriteLock provides a lock that allows simultaneous read access.
- \o QReadLocker and QWriteLocker are convenience classes that automatically
+ \li QReadWriteLock provides a lock that allows simultaneous read access.
+ \li QReadLocker and QWriteLocker are convenience classes that automatically
lock and unlock a QReadWriteLock.
- \o QSemaphore provides an integer semaphore (a generalization of a mutex).
- \o QWaitCondition provides a way for threads to go to sleep until
+ \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.
- \o QAtomicInt provides atomic operations on integers.
- \o QAtomicPointer provides atomic operations on pointers.
+ \li QAtomicInt provides atomic operations on integers.
+ \li QAtomicPointer provides atomic operations on pointers.
\endlist
\endomit
how they can be used in multithread applications:
\list
- \o A \e thread-safe function can be called simultaneously from
+ \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.
- \o A \e reentrant function can also be called simultaneously from
+ \li A \e reentrant function can also be called simultaneously from
multiple threads, but only if each invocation uses its own data.
\endlist
Indeed, they usually expand to three machine instructions:
\list 1
- \o Load the variable's value in a register.
- \o Increment or decrement the register's value.
- \o Store the register's value back into main memory.
+ \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
guaranteed to work. There are three constraints to be aware of:
\list
- \o \e{The child of a QObject must always be created in the thread
+ \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).
- \o \e{Event driven objects may only be used in a single 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}.
- \o \e{You must ensure that all objects created in a thread are
+ \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.
\list
- \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is
+ \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."
- \o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked
+ \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.
- \o \l{Qt::QueuedConnection}{Queued Connection} The slot is invoked
+ \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.
- \o \l{Qt::BlockingQueuedConnection}{Blocking Queued Connection}
+ \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.
- \o \l{Qt::UniqueConnection}{Unique Connection} The behavior is the
+ \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
\list
- \o QtConcurrent::map() applies a function to every item in a container,
+ \li QtConcurrent::map() applies a function to every item in a container,
modifying the items in-place.
- \o QtConcurrent::mapped() is like map(), except that it returns a new
+ \li QtConcurrent::mapped() is like map(), except that it returns a new
container with the modifications.
- \o QtConcurrent::mappedReduced() is like mapped(), except that the
+ \li QtConcurrent::mappedReduced() is like mapped(), except that the
modified results are reduced or folded into a single result.
- \o QtConcurrent::filter() removes all items from a container based on the
+ \li QtConcurrent::filter() removes all items from a container based on the
result of a filter function.
- \o QtConcurrent::filtered() is like filter(), except that it returns a new
+ \li QtConcurrent::filtered() is like filter(), except that it returns a new
container with the filtered results.
- \o QtConcurrent::filteredReduced() is like filtered(), except that the
+ \li QtConcurrent::filteredReduced() is like filtered(), except that the
filtered results are reduced or folded into a single result.
- \o QtConcurrent::run() runs a function in another thread.
+ \li QtConcurrent::run() runs a function in another thread.
- \o QFuture represents the result of an asynchronous computation.
+ \li QFuture represents the result of an asynchronous computation.
- \o QFutureIterator allows iterating through results available via QFuture.
+ \li QFutureIterator allows iterating through results available via QFuture.
- \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
+ \li QFutureWatcher allows monitoring a QFuture using signals-and-slots.
- \o QFutureSynchronizer is a convenience class that automatically
+ \li QFutureSynchronizer is a convenience class that automatically
synchronizes several QFutures.
\endlist
\table
\header
- \o Iterator Type
- \o Example classes
- \o Support status
+ \li Iterator Type
+ \li Example classes
+ \li Support status
\row
- \o Input Iterator
- \o
- \o Not Supported
+ \li Input Iterator
+ \li
+ \li Not Supported
\row
- \o Output Iterator
- \o
- \o Not Supported
+ \li Output Iterator
+ \li
+ \li Not Supported
\row
- \o Forward Iterator
- \o std::slist
- \o Supported
+ \li Forward Iterator
+ \li std::slist
+ \li Supported
\row
- \o Bidirectional Iterator
- \o QLinkedList, std::list
- \o Supported
+ \li Bidirectional Iterator
+ \li QLinkedList, std::list
+ \li Supported
\row
- \o Random Access Iterator
- \o QList, QVector, std::vector
- \o Supported and Recommended
+ \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
dimensions of the model. Whereas, \c rowCount()'s value will vary
depending on the number of contacts added to the address book,
\c columnCount()'s value is always 2 because we only need space
- for the \bold Name and \bold Address columns.
+ for the \b Name and \b Address columns.
\note The \c Q_UNUSED() macro prevents the compiler from
generating warnings regarding unused parameters.
\snippet itemviews/addressbook/tablemodel.cpp 1
- The \c data() function returns either a \bold Name or
- \bold {Address}, based on the contents of the model index
+ The \c data() function returns either a \b Name or
+ \b {Address}, based on the contents of the model index
supplied. The row number stored in the model index is used to
reference an item in the list of pairs. Selection is handled
by the QItemSelectionModel, which will be explained with
\snippet itemviews/addressbook/tablemodel.cpp 2
The \c headerData() function displays the table's header,
- \bold Name and \bold Address. If you require numbered entries
+ \b Name and \b Address. If you require numbered entries
for your address book, you can use a vertical header which we
have hidden in this example (see the \c AddressWidget
implementation).
menus and actions necessary to manipulate the address book.
\table
- \row \o \inlineimage addressbook-filemenu.png
- \o \inlineimage addressbook-toolsmenu.png
+ \row \li \inlineimage addressbook-filemenu.png
+ \li \inlineimage addressbook-toolsmenu.png
\endtable
\snippet itemviews/addressbook/mainwindow.h 0
in the following ways:
\list
- \o Dragging the red circle in the centre of each drawing moves it to a new position.
- \o Dragging the displaced red circle causes the current drawing to be rotated about the
+ \li Dragging the red circle in the centre of each drawing moves it to a new position.
+ \li Dragging the displaced red circle causes the current drawing to be rotated about the
central circle. Rotation can also be controlled with the \key Rotate slider.
- \o Scaling is controlled with the \key Scale slider.
- \o Each drawing can be sheared with the \key Shear slider.
+ \li Scaling is controlled with the \key Scale slider.
+ \li Each drawing can be sheared with the \key Shear slider.
\endlist
*/
Now, enter the following translations:
\list
- \o \c ArrowPad
+ \li \c ArrowPad
\list
- \o \&Up - \&Haut
- \o \&Left - \&Gauche
- \o \&Right - \&Droite
- \o \&Down - \&Bas
+ \li \&Up - \&Haut
+ \li \&Left - \&Gauche
+ \li \&Right - \&Droite
+ \li \&Down - \&Bas
\endlist
- \o \c MainWindow
+ \li \c MainWindow
\list
- \o E\&xit - \&Quitter
- \o Ctrl+Q - Ctrl+Q
- \o \&File - \&Fichier
+ \li E\&xit - \&Quitter
+ \li Ctrl+Q - Ctrl+Q
+ \li \&File - \&Fichier
\endlist
\endlist
Save the file and do the same for Dutch working with \c arrowpad_nl.ts:
\list
- \o \c ArrowPad
+ \li \c ArrowPad
\list
- \o \&Up - \&Omhoog
- \o \&Left - \&Links
- \o \&Right - \&Rechts
- \o \&Down - Omlaa\&g
+ \li \&Up - \&Omhoog
+ \li \&Left - \&Links
+ \li \&Right - \&Rechts
+ \li \&Down - Omlaa\&g
\endlist
- \o \c MainWindow
+ \li \c MainWindow
\list
- \o E\&xit - \&Afsluiten
- \o Ctrl+Q - Ctrl+A
- \o File - \&Bestand
+ \li E\&xit - \&Afsluiten
+ \li Ctrl+Q - Ctrl+A
+ \li File - \&Bestand
\endlist
\endlist
The Basic Drawing example consists of two classes:
\list
- \o \c RenderArea is a custom widget that renders multiple
+ \li \c RenderArea is a custom widget that renders multiple
copies of the currently active shape.
- \o \c Window is the application's main window displaying a
+ \li \c Window is the application's main window displaying a
\c RenderArea widget in addition to several parameter widgets.
\endlist
the associated QPainter drawing function:
\list
- \o QPainter::drawLine(),
- \o QPainter::drawPoints(),
- \o QPainter::drawPolyline(),
- \o QPainter::drawPolygon(),
- \o QPainter::drawRect(),
- \o QPainter::drawRoundedRect(),
- \o QPainter::drawEllipse(),
- \o QPainter::drawArc(),
- \o QPainter::drawChord(),
- \o QPainter::drawPie(),
- \o QPainter::drawPath(),
- \o QPainter::drawText() or
- \o QPainter::drawPixmap()
+ \li QPainter::drawLine(),
+ \li QPainter::drawPoints(),
+ \li QPainter::drawPolyline(),
+ \li QPainter::drawPolygon(),
+ \li QPainter::drawRect(),
+ \li QPainter::drawRoundedRect(),
+ \li QPainter::drawEllipse(),
+ \li QPainter::drawArc(),
+ \li QPainter::drawChord(),
+ \li QPainter::drawPie(),
+ \li QPainter::drawPath(),
+ \li QPainter::drawText() or
+ \li QPainter::drawPixmap()
\endlist
Before we started rendering, we saved the current painter state
We repeat the process:
\list
- \o create a new \c LayoutItem,
- \o add the item \c linear, and
- \o provide a stretch factor.
+ \li create a new \c LayoutItem,
+ \li add the item \c linear, and
+ \li provide a stretch factor.
\endlist
\snippet examples/graphicsview/basicgraphicslayouts/window.cpp 1
\list
- \o \e{The asynchronous (non-blocking) approach.} Operations are scheduled
+ \li \e{The asynchronous (non-blocking) approach.} Operations are scheduled
and performed when control returns to Qt's event loop. When the operation
is finished, QTcpSocket emits a signal. For example,
QTcpSocket::connectToHost() returns immediately, and when the connection
has been established, QTcpSocket emits
\l{QTcpSocket::connected()}{connected()}.
- \o \e{The synchronous (blocking) approach.} In non-GUI and multithreaded
+ \li \e{The synchronous (blocking) approach.} In non-GUI and multithreaded
applications, you can call the \c waitFor...() functions (e.g.,
QTcpSocket::waitForConnected()) to suspend the calling thread until the
operation has completed, instead of connecting to signals.
Elements in the demo can be controlled using the mouse in the following
ways:
\list
- \o Dragging the mouse while pressing the left mouse button rotates the
+ \li Dragging the mouse while pressing the left mouse button rotates the
box in the center.
- \o Dragging the mouse while pressing the right mouse button rotates the
+ \li Dragging the mouse while pressing the right mouse button rotates the
satellite boxes.
- \o Scrolling the mouse wheel zooms in and out of the scene.
+ \li Scrolling the mouse wheel zooms in and out of the scene.
\endlist
The options pane can be used to fine-tune various parameters in the demo,
in additon to the model and the editor's buttons.
\table 100%
- \header \o Connecting to a Database
+ \header \li Connecting to a Database
\row
- \o
+ \li
Before we can use the \c TableEditor class, we must create a
connection to the database containing the table we want to edit:
\table 100%
\row
- \o
- \bold {See also:}
+ \li
+ \b {See also:}
A complete list of Qt's SQL \l {Database Classes}, and the \l
{Model/View Programming} documentation.
The example consists of two classes:
\list
- \o \c Calculator is the calculator widget, with all the
+ \li \c Calculator is the calculator widget, with all the
calculator functionality.
- \o \c Button is the widget used for each of the calculator
+ \li \c Button is the widget used for each of the calculator
button. It derives from QToolButton.
\endlist
display (a QLineEdit), encode the state of the calculator:
\list
- \o \c sumInMemory contains the value stored in the calculator's memory
+ \li \c sumInMemory contains the value stored in the calculator's memory
(using \gui{MS}, \gui{M+}, or \gui{MC}).
- \o \c sumSoFar stores the value accumulated so far. When the user
+ \li \c sumSoFar stores the value accumulated so far. When the user
clicks \gui{=}, \c sumSoFar is recomputed and shown on the
display. \gui{Clear All} resets \c sumSoFar to zero.
- \o \c factorSoFar stores a temporary value when doing
+ \li \c factorSoFar stores a temporary value when doing
multiplications and divisions.
- \o \c pendingAdditiveOperator stores the last additive operator
+ \li \c pendingAdditiveOperator stores the last additive operator
clicked by the user.
- \o \c pendingMultiplicativeOperator stores the last multiplicative operator
+ \li \c pendingMultiplicativeOperator stores the last multiplicative operator
clicked by the user.
- \o \c waitingForOperand is \c true when the calculator is
+ \li \c waitingForOperand is \c true when the calculator is
expecting the user to start typing an operand.
\endlist
the user enters a mathematical expression.
\table
- \header \o User Input \o Display \o Sum so Far \o Add. Op. \o Factor so Far \o Mult. Op. \o Waiting for Operand?
- \row \o \o 0 \o 0 \o \o \o \o \c true
- \row \o \gui{1} \o 1 \o 0 \o \o \o \o \c false
- \row \o \gui{1 +} \o 1 \o 1 \o \gui{+} \o \o \o \c true
- \row \o \gui{1 + 2} \o 2 \o 1 \o \gui{+} \o \o \o \c false
- \row \o \gui{1 + 2 \unicode{247}} \o 2 \o 1 \o \gui{+} \o 2 \o \gui{\unicode{247}} \o \c true
- \row \o \gui{1 + 2 \unicode{247} 3} \o 3 \o 1 \o \gui{+} \o 2 \o \gui{\unicode{247}} \o \c false
- \row \o \gui{1 + 2 \unicode{247} 3 -} \o 1.66667 \o 1.66667 \o \gui{-} \o \o \o \c true
- \row \o \gui{1 + 2 \unicode{247} 3 - 4} \o 4 \o 1.66667 \o \gui{-} \o \o \o \c false
- \row \o \gui{1 + 2 \unicode{247} 3 - 4 =} \o -2.33333 \o 0 \o \o \o \o \c true
+ \header \li User Input \li Display \li Sum so Far \li Add. Op. \li Factor so Far \li Mult. Op. \li Waiting for Operand?
+ \row \li \li 0 \li 0 \li \li \li \li \c true
+ \row \li \gui{1} \li 1 \li 0 \li \li \li \li \c false
+ \row \li \gui{1 +} \li 1 \li 1 \li \gui{+} \li \li \li \c true
+ \row \li \gui{1 + 2} \li 2 \li 1 \li \gui{+} \li \li \li \c false
+ \row \li \gui{1 + 2 \unicode{247}} \li 2 \li 1 \li \gui{+} \li 2 \li \gui{\unicode{247}} \li \c true
+ \row \li \gui{1 + 2 \unicode{247} 3} \li 3 \li 1 \li \gui{+} \li 2 \li \gui{\unicode{247}} \li \c false
+ \row \li \gui{1 + 2 \unicode{247} 3 -} \li 1.66667 \li 1.66667 \li \gui{-} \li \li \li \c true
+ \row \li \gui{1 + 2 \unicode{247} 3 - 4} \li 4 \li 1.66667 \li \gui{-} \li \li \li \c false
+ \row \li \gui{1 + 2 \unicode{247} 3 - 4 =} \li -2.33333 \li 0 \li \li \li \li \c true
\endtable
Unary operators, such as \gui Sqrt, require no special handling;
base class (QToolButton) but modify it in the following ways:
\list
- \o We add 20 to the \l{QSize::height()}{height} component of the size hint.
- \o We make the \l{QSize::width()}{width} component of the size
+ \li We add 20 to the \l{QSize::height()}{height} component of the size hint.
+ \li We make the \l{QSize::width()}{width} component of the size
hint at least as much as the \l{QSize::width()}{height}.
\endlist
Specifically, the example demonstrates the following:
\list
- \o Use of a text editor with a text document
- \o Insertion of tables and frames into a document
- \o Navigation within a table
- \o Insert text in different styles
+ \li Use of a text editor with a text document
+ \li Insertion of tables and frames into a document
+ \li Navigation within a table
+ \li Insert text in different styles
\endlist
The rich text editor used to display the document is used within a main window
below.
\table
- \header \o Property
- \o Description
- \row \o \l{QCalendarWidget::}{selectedDate}
- \o The currently selected date.
- \row \o \l{QCalendarWidget::}{minimumDate}
- \o The earliest date that can be selected.
- \row \o \l{QCalendarWidget::}{maximumDate}
- \o The latest date that can be selected.
- \row \o \l{QCalendarWidget::}{firstDayOfWeek}
- \o The day that is displayed as the first day of the week
+ \header \li Property
+ \li Description
+ \row \li \l{QCalendarWidget::}{selectedDate}
+ \li The currently selected date.
+ \row \li \l{QCalendarWidget::}{minimumDate}
+ \li The earliest date that can be selected.
+ \row \li \l{QCalendarWidget::}{maximumDate}
+ \li The latest date that can be selected.
+ \row \li \l{QCalendarWidget::}{firstDayOfWeek}
+ \li The day that is displayed as the first day of the week
(usually Sunday or Monday).
- \row \o \l{QCalendarWidget::}{gridVisible}
- \o Whether the grid should be shown.
- \row \o \l{QCalendarWidget::}{selectionMode}
- \o Whether the user can select a date or not.
- \row \o \l{QCalendarWidget::}{horizontalHeaderFormat}
- \o The format of the day names in the horizontal header
+ \row \li \l{QCalendarWidget::}{gridVisible}
+ \li Whether the grid should be shown.
+ \row \li \l{QCalendarWidget::}{selectionMode}
+ \li Whether the user can select a date or not.
+ \row \li \l{QCalendarWidget::}{horizontalHeaderFormat}
+ \li The format of the day names in the horizontal header
(e.g., "M", "Mon", or "Monday").
- \row \o \l{QCalendarWidget::}{verticalHeaderFormat}
- \o The format of the vertical header.
- \row \o \l{QCalendarWidget::}{navigationBarVisible}
- \o Whether the navigation bar at the top of the calendar
+ \row \li \l{QCalendarWidget::}{verticalHeaderFormat}
+ \li The format of the vertical header.
+ \row \li \l{QCalendarWidget::}{navigationBarVisible}
+ \li Whether the navigation bar at the top of the calendar
widget is shown.
\endtable
The example consists of the following classes:
\list
-\i \c CharacterWidget displays the available characters in the current
+\li \c CharacterWidget displays the available characters in the current
font and style.
-\i \c MainWindow provides a standard main window that contains font and
+\li \c MainWindow provides a standard main window that contains font and
style information, a view onto the characters, a line edit, and a push
button for submitting text to the clipboard.
\endlist
relying on the flexibility of the model/view architecture to handle custom editing
and selection features.
- \bold{Note that you only need to create a new view class if your data requires a
+ \b{Note that you only need to create a new view class if your data requires a
specialized representation.} You should first consider using a standard QListView,
QTableView, or QTreeView with a custom QItemDelegate subclass if you need to
represent data in a special way.
We interpret the data in the following way:
\list
- \o Column 0 contains data in two different roles:
+ \li Column 0 contains data in two different roles:
The \l{Qt::ItemDataRole}{DisplayRole} contains a label, and the
\l{Qt::ItemDataRole}{DecorationRole} contains the color of the pie slice.
- \o Column 1 contains a quantity which we will convert to the angular extent of
+ \li Column 1 contains a quantity which we will convert to the angular extent of
the slice.
\endlist
The Class Wizard example consists of the following classes:
\list
- \o \c ClassWizard inherits QWizard and provides a
+ \li \c ClassWizard inherits QWizard and provides a
three-step wizard that generates the skeleton of a C++ class
based on the user's input.
- \o \c IntroPage, \c ClassInfoPage, \c CodeStylePage, \c
+ \li \c IntroPage, \c ClassInfoPage, \c CodeStylePage, \c
OutputFilesPage, and \c ConclusionPage are QWizardPage
subclasses that implement the wizard pages.
\endlist
five pages:
\list
- \o The first page is an introduction page, telling the user what
+ \li The first page is an introduction page, telling the user what
the wizard is going to do.
- \o The second page asks for a class name and a base class, and
+ \li The second page asks for a class name and a base class, and
allows the user to specify whether the class should have a \c
Q_OBJECT macro and what constructors it should provide.
- \o The third page allows the user to set some options related to the code
+ \li The third page allows the user to set some options related to the code
style, such as the macro used to protect the header file from
multiple inclusion (e.g., \c MYDIALOG_H).
- \o The fourth page allows the user to specify the names of the
+ \li The fourth page allows the user to specify the names of the
output files.
- \o The fifth page is a conclusion page.
+ \li The fifth page is a conclusion page.
\endlist
Although the program is just an example, if you press \gui Finish
Possible suggestions are:
\list
- \o If the editor widget has no user property defined, the delegate
+ \li If the editor widget has no user property defined, the delegate
asks the factory for the property name, which it in turn
asks the item editor creator for. In this case, you can use
the QItemEditorCreator class, which takes the property
name to use for editing as a constructor argument.
- \o If the editor requires other constructors or other
+ \li If the editor requires other constructors or other
initialization than provided by QItemEditorCreatorBase, you
must reimplement
QItemEditorCreatorBase::createWidget().
- \o You could also subclass QItemEditorFactory if you only want
+ \li You could also subclass QItemEditorFactory if you only want
to provide editors for certain kinds of data or use another
method of creating the editors than using creator bases.
\endlist
The screenshots below illustrate this difference:
\table
- \row \o \inlineimage completer-example-qdirmodel.png
- \o \inlineimage completer-example-dirmodel.png
+ \row \li \inlineimage completer-example-qdirmodel.png
+ \li \inlineimage completer-example-dirmodel.png
\endtable
The Qt::EditRole, which QCompleter uses to look for matches, is left
\image composition-demo.png
- The two most common forms of composition are \bold{Source} and \bold{SourceOver}.
- \bold{Source} is used to draw opaque objects onto a paint device. In this mode,
+ The two most common forms of composition are \b{Source} and \b{SourceOver}.
+ \b{Source} is used to draw opaque objects onto a paint device. In this mode,
each pixel in the source replaces the corresponding pixel in the destination.
- In \bold{SourceOver} composition mode, the source object is transparent and is
+ In \b{SourceOver} composition mode, the source object is transparent and is
drawn on top of the destination.
In addition to these standard modes, Qt defines the complete set of composition modes
The example consists of two classes:
\list
- \o \c CircleWidget is a custom widget which renders several animated
+ \li \c CircleWidget is a custom widget which renders several animated
concentric circles.
- \o \c Window is the application's main window displaying four \c
+ \li \c Window is the application's main window displaying four \c
{CircleWidget}s drawn using different combinations of precision
and aliasing.
\endlist
The example consist of two classes:
\list
- \o \c MainWidget extends QGLWidget and contains OpenGL ES 2.0
+ \li \c MainWidget extends QGLWidget and contains OpenGL ES 2.0
initialization and drawing and mouse and timer event handling
- \o \c GeometryEngine handles polygon geometries. Transfers polygon geometry
+ \li \c GeometryEngine handles polygon geometries. Transfers polygon geometry
to vertex buffer objects and draws geometries from vertex buffer objects.
\endlist
\list
- \o The \c MySortFilterProxyModel class provides a custom proxy
+ \li The \c MySortFilterProxyModel class provides a custom proxy
model.
- \o The \c Window class provides the main application window,
+ \li The \c Window class provides the main application window,
using the custom proxy model to sort and filter a standard
item model.
to writing and implementing this graphics driver:
\list 1
- \o \l {Step 1: Creating a Custom Graphics Driver}
+ \li \l {Step 1: Creating a Custom Graphics Driver}
{Creating a Custom Graphics Driver}
- \o \l {Step 2: Implementing the Back Buffer}
+ \li \l {Step 2: Implementing the Back Buffer}
{Implementing the Back Buffer}
- \o \l {Step 3: Creating the Driver Plugin}
+ \li \l {Step 3: Creating the Driver Plugin}
{Creating the Driver Plugin}
\endlist
functions belonging to QScreen:
\list
- \o \l{QScreen::initDevice()}{initDevice()},
- \o \l{QScreen::shutdownDevice()}{shutdownDevice()},
- \o \l{QScreen::blit()}{blit()},
- \o \l{QScreen::solidFill()}{solidFill()}, and
- \o \l{QScreen::exposeRegion()}{exposeRegion()}.
+ \li \l{QScreen::initDevice()}{initDevice()},
+ \li \l{QScreen::shutdownDevice()}{shutdownDevice()},
+ \li \l{QScreen::blit()}{blit()},
+ \li \l{QScreen::solidFill()}{solidFill()}, and
+ \li \l{QScreen::exposeRegion()}{exposeRegion()}.
\endlist
\snippet examples/qws/dbscreen/dbscreen.h 0
The graphics driver must carry out three main functions:
\list 1
- \o Allocate the back buffer on startup and deallocate it on shutdown.
- \o Draw to the back buffer instead of directly to the screen
+ \li Allocate the back buffer on startup and deallocate it on shutdown.
+ \li Draw to the back buffer instead of directly to the screen
(which is what QLinuxFbScreen does).
- \o Copy the back buffer to the screen whenever a screen update is
+ \li Copy the back buffer to the screen whenever a screen update is
done.
\endlist
There are only two functions to reimplement:
\list
- \o \l{QScreenDriverPlugin::create()}{create()} - creates a driver
+ \li \l{QScreenDriverPlugin::create()}{create()} - creates a driver
matching the given key
- \o \l{QScreenDriverPlugin::create()}{keys()} - returns a list of
+ \li \l{QScreenDriverPlugin::create()}{keys()} - returns a list of
valid keys representing the drivers supported by the plugin
\endlist
In particular we show how to:
\list
- \o Create custom graphics items.
- \o Handle mouse events and movement of items.
- \o Implement a graphics scene that can manage our custom items.
- \o Custom painting of items.
- \o Create a movable and editable text item.
+ \li Create custom graphics items.
+ \li Handle mouse events and movement of items.
+ \li Implement a graphics scene that can manage our custom items.
+ \li Custom painting of items.
+ \li Create a movable and editable text item.
\endlist
The example consists of the following classes:
\list
- \o \c MainWindow creates the widgets and display
+ \li \c MainWindow creates the widgets and display
them in a QMainWindow. It also manages the interaction
between the widgets and the graphics scene, view and
items.
- \o \c DiagramItem inherits QGraphicsPolygonItem and
+ \li \c DiagramItem inherits QGraphicsPolygonItem and
represents a flowchart shape.
- \o \c TextDiagramItem inherits QGraphicsTextItem and
+ \li \c TextDiagramItem inherits QGraphicsTextItem and
represents text items in the diagram. The class adds
support for moving the item with the mouse, which is not
supported by QGraphicsTextItem.
- \o \c Arrow inherits QGraphicsLineItem and is an arrow
+ \li \c Arrow inherits QGraphicsLineItem and is an arrow
that connect two DiagramItems.
- \o \c DiagramScene inherits QGraphicsDiagramScene and
+ \li \c DiagramScene inherits QGraphicsDiagramScene and
provides support for \c DiagramItem, \c Arrow and
\c DiagramTextItem (In addition to the support already
handled by QGraphicsScene).
The example consists of three classes:
\list
- \o \c ImageItem is a custom graphics item class used to
+ \li \c ImageItem is a custom graphics item class used to
display the office images.
- \o \c View is the main application widget allowing the user to
+ \li \c View is the main application widget allowing the user to
browse through the various locations.
- \o \c InformationWindow displays the requested information,
+ \li \c InformationWindow displays the requested information,
allowing the users to alter it and submit their changes to the
database.
\endlist
reimplementations of four \l{QWidget} event handlers:
\list 1
- \o \l{QWidget::dragEnterEvent()}{dragEnterEvent()}
- \o \l{QWidget::dragMoveEvent()}{dragMoveEvent()}
- \o \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()}
- \o \l{QWidget::dropEvent()}{dropEvent()}
+ \li \l{QWidget::dragEnterEvent()}{dragEnterEvent()}
+ \li \l{QWidget::dragMoveEvent()}{dragMoveEvent()}
+ \li \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()}
+ \li \l{QWidget::dropEvent()}{dropEvent()}
\endlist
These event handlers are further explained in the implementation of the
\snippet draganddrop/dropsite/droparea.cpp dropEvent() function part2
\list
- \o If \c mimeData contains an image, we display it in \c DropArea with
+ \li If \c mimeData contains an image, we display it in \c DropArea with
\l{QLabel::setPixmap()}{setPixmap()}.
- \o If \c mimeData contains HTML, we display it with
+ \li If \c mimeData contains HTML, we display it with
\l{QLabel::setText()}{setText()} and set \c{DropArea}'s text format
as Qt::RichText.
- \o If \c mimeData contains plain text, we display it with
+ \li If \c mimeData contains plain text, we display it with
\l{QLabel::setText()}{setText()} and set \c{DropArea}'s text format
as Qt::PlainText. In the event that \c mimeData contains URLs, we
iterate through the list of URLs to display them on individual
lines.
- \o If \c mimeData contains other types of objects, we set
+ \li If \c mimeData contains other types of objects, we set
\c{DropArea}'s text, with \l{QLabel::setText()}{setText()} to
"Cannot display data" to inform the user.
\endlist
\target Relations-between-internal-items
\table
- \row \o \inlineimage itemviews-editabletreemodel-items.png
- \o \bold{Relations between internal items}
+ \row \li \inlineimage itemviews-editabletreemodel-items.png
+ \li \b{Relations between internal items}
When designing a data structure for use with a custom model, it is useful
to expose each item's parent via a function like
\l{TreeItem::parent}{parent()} and \l{TreeItem::child}{child()}
functions.
- In the example shown, two top-level items, \bold{A} and
- \bold{B}, can be obtained from the root item by calling its child()
+ In the example shown, two top-level items, \b{A} and
+ \b{B}, can be obtained from the root item by calling its child()
function, and each of these items return the root node from their
- parent() functions, though this is only shown for item \bold{A}.
+ parent() functions, though this is only shown for item \b{A}.
\endtable
Each \c TreeItem stores data for each column in the row it represents
horizontal header titles.
\table
- \row \o \inlineimage itemviews-editabletreemodel-model.png
- \o \bold{Accessing data via the model}
+ \row \li \inlineimage itemviews-editabletreemodel-model.png
+ \li \b{Accessing data via the model}
In the case shown in the diagram, the piece of information represented
- by \bold{a} can be obtained using the standard model/view API:
+ by \b{a} can be obtained using the standard model/view API:
\snippet doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp 0
Since each items holds pieces of data for each column in a given row,
there can be many model indexes that map to the same \c TreeItem object.
- For example, the information represented by \bold{b} can be obtained
+ For example, the information represented by \b{b} can be obtained
using the following code:
\snippet doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp 1
The same underlying \c TreeItem would be accessed to obtain information
- for the other model indexes in the same row as \bold{b}.
+ for the other model indexes in the same row as \b{b}.
\endtable
In the model class, \c TreeModel, we relate \c TreeItem objects to
that the model does not attempt to access items that have been deleted.
\table
- \row \o \bold{Storing information in the underlying data structure}
+ \row \li \b{Storing information in the underlying data structure}
Several pieces of data are stored as QVariant objects in the \c itemData
member of each \c TreeItem instance
The diagram shows how pieces of information,
- represented by the labels \bold{a}, \bold{b} and \bold{c} in the
- previous two diagrams, are stored in items \bold{A}, \bold{B} and
- \bold{C} in the underlying data structure. Note that pieces of
+ represented by the labels \b{a}, \b{b} and \b{c} in the
+ previous two diagrams, are stored in items \b{A}, \b{B} and
+ \b{C} in the underlying data structure. Note that pieces of
information from the same row in the model are all obtained from the
same item. Each element in a list corresponds to a piece of information
exposed by each column in a given row in the model.
- \o \inlineimage itemviews-editabletreemodel-values.png
+ \li \inlineimage itemviews-editabletreemodel-values.png
\endtable
Since the \c TreeModel implementation has been designed for use with
\target Relating-items-using-model-indexes
\table
\row
- \o \inlineimage itemviews-editabletreemodel-indexes.png
- \o \bold{Relating items using model indexes}
+ \li \inlineimage itemviews-editabletreemodel-indexes.png
+ \li \b{Relating items using model indexes}
As with the \l{itemviews/simpletreemodel}{Simple Tree Model} example,
the \c TreeModel needs to be able to take a model index, find the
an item supplied by the caller, using the items shown in a
\l{Relations-between-internal-items}{previous diagram}.
- A pointer to item \bold{C} is obtained from the corresponding model index
+ A pointer to item \b{C} is obtained from the corresponding model index
using the \l{QModelIndex::internalPointer()} function. The pointer was
stored internally in the index when it was created. Since the child
contains a pointer to its parent, we use its \l{TreeItem::parent}{parent()}
- function to obtain a pointer to item \bold{B}. The parent model index is
+ function to obtain a pointer to item \b{B}. The parent model index is
created using the QAbstractItemModel::createIndex() function, passing
- the pointer to item \bold{B} as the internal pointer.
+ the pointer to item \b{B} as the internal pointer.
\endtable
\section1 TreeItem Class Definition
The \c Node class serves three purposes:
\list
- \o Painting a yellow gradient "ball" in two states: sunken and raised.
- \o Managing connections to other nodes.
- \o Calculating forces pulling and pushing the nodes in the grid.
+ \li Painting a yellow gradient "ball" in two states: sunken and raised.
+ \li Managing connections to other nodes.
+ \li Calculating forces pulling and pushing the nodes in the grid.
\endlist
Let's start by looking at the \c Node class declaration.
\list
- \o \e{The asynchronous (non-blocking) approach.} Operations are scheduled
+ \li \e{The asynchronous (non-blocking) approach.} Operations are scheduled
and performed when control returns to Qt's event loop. When the operation
is finished, QTcpSocket emits a signal. For example,
QTcpSocket::connectToHost() returns immediately, and when the connection
has been established, QTcpSocket emits
\l{QTcpSocket::connected()}{connected()}.
- \o \e{The synchronous (blocking) approach.} In non-GUI and multithreaded
+ \li \e{The synchronous (blocking) approach.} In non-GUI and multithreaded
applications, you can call the \c waitFor...() functions (e.g.,
QTcpSocket::waitForConnected()) to suspend the calling thread until the
operation has completed, instead of connecting to signals.
one of two things can happen:
\list
- \o \e{The connection is established.} In this case, the server will send us a
+ \li \e{The connection is established.} In this case, the server will send us a
fortune. QTcpSocket will emit \l{QTcpSocket::readyRead()}{readyRead()}
every time it receives a block of data.
- \o \e{An error occurs.} We need to inform the user if the connection
+ \li \e{An error occurs.} We need to inform the user if the connection
failed or was broken. In this case, QTcpSocket will emit
\l{QTcpSocket::error()}{error()}, and \c Client::displayError() will be
called.
the words on the magnets. The example consists of two classes:
\list
- \o \c DragLabel is a custom widget representing one
+ \li \c DragLabel is a custom widget representing one
single fridge magnet.
- \o \c DragWidget provides the main application window.
+ \li \c DragWidget provides the main application window.
\endlist
We will first take a look at the \c DragLabel class, then we will
There are three types of gradients:
\list
- \o \bold{Linear} gradients interpolate colors between start and end points.
- \o \bold{Radial} gradients interpolate colors between a focal point and the
+ \li \b{Linear} gradients interpolate colors between start and end points.
+ \li \b{Radial} gradients interpolate colors between a focal point and the
points on a circle surrounding it.
- \o \bold{Conical} gradients interpolate colors around a center point.
+ \li \b{Conical} gradients interpolate colors around a center point.
\endlist
The panel on the right contains a color table editor that defines
by reimplementing the following functions:
\list
- \o QGLWidget::initializeGL() sets up resources needed by the OpenGL implementation
+ \li QGLWidget::initializeGL() sets up resources needed by the OpenGL implementation
to render the scene.
- \o QGLWidget::resizeGL() resizes the viewport so that the rendered scene fits onto
+ \li QGLWidget::resizeGL() resizes the viewport so that the rendered scene fits onto
the widget, and sets up a projection matrix to map 3D coordinates to 2D viewport
coordinates.
- \o QGLWidget::paintGL() performs painting operations using OpenGL calls.
+ \li QGLWidget::paintGL() performs painting operations using OpenGL calls.
\endlist
Since QGLWidget is a subclass of QWidget, it can also be used
of the icon. Qt currently defines four modes:
\table
- \header \o Mode \o Description
+ \header \li Mode \li Description
\row
- \o QIcon::Normal
- \o Display the pixmap when the user is not interacting with the
+ \li QIcon::Normal
+ \li Display the pixmap when the user is not interacting with the
icon, but the functionality represented by the icon is
available.
\row
- \o QIcon::Active
- \o Display the pixmap when the functionality represented by the
+ \li QIcon::Active
+ \li Display the pixmap when the functionality represented by the
icon is available and the user is interacting with the icon,
for example, moving the mouse over it or clicking it.
\row
- \o QIcon::Disabled
- \o Display the pixmap when the functionality represented by
+ \li QIcon::Disabled
+ \li Display the pixmap when the functionality represented by
the icon is not available.
\row
- \o QIcon::Selected
- \o Display the pixmap when the icon is selected.
+ \li QIcon::Selected
+ \li Display the pixmap when the icon is selected.
\endtable
QIcon's states are QIcon::On and QIcon::Off, which will display
search algorithm described in the table below:
\table 100%
- \header \o{2,1} Requested Pixmap \o {8,1} Preferred Alternatives (mode/state)
- \header \o Mode \o State \o 1 \o 2 \o 3 \o 4 \o 5 \o 6 \o 7 \o 8
- \row \o{1,2} Normal \o Off \o \bold N0 \o A0 \o N1 \o A1 \o D0 \o S0 \o D1 \o S1
- \row \o On \o N1 \o \bold A1 \o N0 \o A0 \o D1 \o S1 \o D0 \o S0
- \row \o{1,2} Active \o Off \o A0 \o \bold N0 \o A1 \o N1 \o D0 \o S0 \o D1 \o S1
- \row \o On \o \bold A1 \o N1 \o A0 \o N0 \o D1 \o S1 \o D0 \o S0
- \row \o{1,2} Disabled \o Off \o D0 \o \bold {N0'} \o A0' \o D1 \o N1' \o A1' \o S0' \o S1'
- \row \o On \o D1 \o N1' \o \bold {A1'} \o D0 \o N0' \o A0' \o S1' \o S0'
- \row \o{1,2} Selected \o Off \o S0 \o \bold {N0''} \o A0'' \o S1 \o N1'' \o A1'' \o D0'' \o D1''
- \row \o On \o S1 \o N1'' \o \bold {A1''} \o S0 \o N0'' \o A0'' \o D1'' \o D0''
+ \header \li{2,1} Requested Pixmap \li {8,1} Preferred Alternatives (mode/state)
+ \header \li Mode \li State \li 1 \li 2 \li 3 \li 4 \li 5 \li 6 \li 7 \li 8
+ \row \li{1,2} Normal \li Off \li \b N0 \li A0 \li N1 \li A1 \li D0 \li S0 \li D1 \li S1
+ \row \li On \li N1 \li \b A1 \li N0 \li A0 \li D1 \li S1 \li D0 \li S0
+ \row \li{1,2} Active \li Off \li A0 \li \b N0 \li A1 \li N1 \li D0 \li S0 \li D1 \li S1
+ \row \li On \li \b A1 \li N1 \li A0 \li N0 \li D1 \li S1 \li D0 \li S0
+ \row \li{1,2} Disabled \li Off \li D0 \li \b {N0'} \li A0' \li D1 \li N1' \li A1' \li S0' \li S1'
+ \row \li On \li D1 \li N1' \li \b {A1'} \li D0 \li N0' \li A0' \li S1' \li S0'
+ \row \li{1,2} Selected \li Off \li S0 \li \b {N0''} \li A0'' \li S1 \li N1'' \li A1'' \li D0'' \li D1''
+ \row \li On \li S1 \li N1'' \li \b {A1''} \li S0 \li N0'' \li A0'' \li D1'' \li D0''
\endtable
In the table, "0" and "1" stand for Off" and "On", respectively.
\table
\row
- \o \inlineimage icons_monkey.png Screenshot of the Monkey Files
- \o \inlineimage icons_monkey_mess.png Screenshot of the Monkey Files
+ \li \inlineimage icons_monkey.png Screenshot of the Monkey Files
+ \li \inlineimage icons_monkey_mess.png Screenshot of the Monkey Files
\endtable
For any given mode/state combination, it is possible to specify
\table
\row
- \o
- \o \inlineimage icons_qt_extended_8x8.png Qt Extended icon at 8 x 8
- \o \inlineimage icons_qt_extended_16x16.png Qt Extended icon at 16 x 16
- \o \inlineimage icons_qt_extended_17x17.png Qt Extended icon at 17 x 17
+ \li
+ \li \inlineimage icons_qt_extended_8x8.png Qt Extended icon at 8 x 8
+ \li \inlineimage icons_qt_extended_16x16.png Qt Extended icon at 16 x 16
+ \li \inlineimage icons_qt_extended_17x17.png Qt Extended icon at 17 x 17
\row
- \o
- \o 8 x 8
- \o \bold {16 x 16}
- \o 17 x 17
+ \li
+ \li 8 x 8
+ \li \b {16 x 16}
+ \li 17 x 17
\row
- \o \inlineimage icons_qt_extended_32x32.png Qt Extended icon at 32 x 32
- \o \inlineimage icons_qt_extended_33x33.png Qt Extended icon at 33 x 33
- \o \inlineimage icons_qt_extended_48x48.png Qt Extended icon at 48 x 48
- \o \inlineimage icons_qt_extended_64x64.png Qt Extended icon at 64 x 64
+ \li \inlineimage icons_qt_extended_32x32.png Qt Extended icon at 32 x 32
+ \li \inlineimage icons_qt_extended_33x33.png Qt Extended icon at 33 x 33
+ \li \inlineimage icons_qt_extended_48x48.png Qt Extended icon at 48 x 48
+ \li \inlineimage icons_qt_extended_64x64.png Qt Extended icon at 64 x 64
\row
- \o \bold {32 x 32}
- \o 33 x 33
- \o \bold {48 x 48}
- \o 64 x 64
+ \li \b {32 x 32}
+ \li 33 x 33
+ \li \b {48 x 48}
+ \li 64 x 64
\endtable
For sizes up to 16 x 16, QIcon uses \c qt_extended_16x16.png and
The Icons example consists of four classes:
\list
- \o \c MainWindow inherits QMainWindow and is the main application
+ \li \c MainWindow inherits QMainWindow and is the main application
window.
- \o \c IconPreviewArea is a custom widget that displays all
+ \li \c IconPreviewArea is a custom widget that displays all
combinations of states and modes for a given icon.
- \o \c IconSizeSpinBox is a subclass of QSpinBox that lets the
+ \li \c IconSizeSpinBox is a subclass of QSpinBox that lets the
user enter icon sizes (e.g., "48 x 48").
- \o \c ImageDelegate is a subclass of QItemDelegate that provides
+ \li \c ImageDelegate is a subclass of QItemDelegate that provides
comboboxes for letting the user set the mode and state
associated with an image.
\endlist
constructor, and declare several private slots:
\list
- \o The \c about() slot simply provides information about the example.
- \o The \c changeStyle() slot changes the application's GUI style and
+ \li The \c about() slot simply provides information about the example.
+ \li The \c changeStyle() slot changes the application's GUI style and
adjust the style dependent size options.
- \o The \c changeSize() slot changes the size of the preview area's icon.
- \o The \c changeIcon() slot updates the set of pixmaps available to the
+ \li The \c changeSize() slot changes the size of the preview area's icon.
+ \li The \c changeIcon() slot updates the set of pixmaps available to the
icon displayed in the preview area.
- \o The \c addImage() slot allows the user to load a new image into the
+ \li The \c addImage() slot allows the user to load a new image into the
application.
\endlist
We connect the following signals to their corresponding slots:
\list
- \o \c{sourceButton}'s \l{QPushButton::clicked()}{clicked()} signal is
+ \li \c{sourceButton}'s \l{QPushButton::clicked()}{clicked()} signal is
connected to \c chooseSource(),
- \o \c{operatorComboBox}'s \l{QComboBox::activated()}{activated()}
+ \li \c{operatorComboBox}'s \l{QComboBox::activated()}{activated()}
signal is connected to \c recalculateResult(), and
- \o \c{destinationButton}'s \l{QToolButton::clicked()}{clicked()} signal
+ \li \c{destinationButton}'s \l{QToolButton::clicked()}{clicked()} signal
is connected to \c chooseDestination().
\endlist
to:
\list
- \o \gui{Open...} - Open an image file
- \o \gui{Print...} - Print an image
- \o \gui{Exit} - Exit the application
+ \li \gui{Open...} - Open an image file
+ \li \gui{Print...} - Print an image
+ \li \gui{Exit} - Exit the application
\endlist
Once an image is loaded, the \gui View menu allows the users to:
\list
- \o \gui{Zoom In} - Scale the image up by 25%
- \o \gui{Zoom Out} - Scale the image down by 25%
- \o \gui{Normal Size} - Show the image at its original size
- \o \gui{Fit to Window} - Stretch the image to occupy the entire window
+ \li \gui{Zoom In} - Scale the image up by 25%
+ \li \gui{Zoom Out} - Scale the image down by 25%
+ \li \gui{Normal Size} - Show the image at its original size
+ \li \gui{Fit to Window} - Stretch the image to occupy the entire window
\endlist
In addition the \gui Help menu provides the users with information
\table
\row
- \o \inlineimage imageviewer-original_size.png
- \o \inlineimage imageviewer-zoom_in_1.png
- \o \inlineimage imageviewer-zoom_in_2.png
+ \li \inlineimage imageviewer-original_size.png
+ \li \inlineimage imageviewer-zoom_in_1.png
+ \li \inlineimage imageviewer-zoom_in_2.png
\endtable
\snippet examples/widgets/imageviewer/imageviewer.cpp 11
\table
\row
- \o \inlineimage imageviewer-original_size.png
- \o \inlineimage imageviewer-fit_to_window_1.png
- \o \inlineimage imageviewer-fit_to_window_2.png
+ \li \inlineimage imageviewer-original_size.png
+ \li \inlineimage imageviewer-fit_to_window_1.png
+ \li \inlineimage imageviewer-fit_to_window_2.png
\endtable
If the slot is called to turn off the option, the
The example consists of the following classes:
\list
- \o \c LicenseWizard inherits QWizard and implements a non-linear
+ \li \c LicenseWizard inherits QWizard and implements a non-linear
five-page wizard that leads the user through the process of
choosing a license agreement.
- \o \c IntroPage, \c EvaluatePage, \c RegisterPage, \c
+ \li \c IntroPage, \c EvaluatePage, \c RegisterPage, \c
DetailsPage, and \c ConclusionPage are QWizardPage subclasses
that implement the wizard pages.
\endlist
The enum defines the IDs associated with the various pages:
\table
- \header \o Class name \o Enum value \o Page ID
- \row \o \c IntroPage \o \c Page_Intro \o 0
- \row \o \c EvaluatePage \o \c Page_Evaluate \o 1
- \row \o \c RegisterPage \o \c Page_Register \o 2
- \row \o \c DetailsPage \o \c Page_Details \o 3
- \row \o \c ConclusionPage \o \c Page_Conclusion \o 4
+ \header \li Class name \li Enum value \li Page ID
+ \row \li \c IntroPage \li \c Page_Intro \li 0
+ \row \li \c EvaluatePage \li \c Page_Evaluate \li 1
+ \row \li \c RegisterPage \li \c Page_Register \li 2
+ \row \li \c DetailsPage \li \c Page_Details \li 3
+ \row \li \c ConclusionPage \li \c Page_Conclusion \li 4
\endtable
For this example, the IDs are arbitrary. The only constraints are
QWidget::setVisible():
\list
- \o If the page is shown, we set the \l{QWizard::}{CustomButton1} button's
+ \li If the page is shown, we set the \l{QWizard::}{CustomButton1} button's
text to \gui{\underline{P}rint}, we enable the \l{QWizard::}{HaveCustomButton1}
option, and we connect the QWizard's \l{QWizard::}{customButtonClicked()}
signal to our \c printButtonClicked() slot.
- \o If the page is hidden, we disable the \l{QWizard::}{HaveCustomButton1}
+ \li If the page is hidden, we disable the \l{QWizard::}{HaveCustomButton1}
option and disconnect the \c printButtonClicked() slot.
\endlist
The code makes use of two classes:
\list
- \o \c MceVibrator connects to the MCE service and can start a certain
+ \li \c MceVibrator connects to the MCE service and can start a certain
vibrator pattern. It also is responsible to parse the configuration
file.
- \o \c ButtonWidget provides a button for each pattern. Pressing the button
+ \li \c ButtonWidget provides a button for each pattern. Pressing the button
activates the pattern in question.
\endlist
are available to us.
\list
- \o \c mceInterface is our D-Bus handle to the MCE service. We use it to
+ \li \c mceInterface is our D-Bus handle to the MCE service. We use it to
invoke methods on the MCE request object.
- \o \c lastPatternName contains the pattern that was activated last time. We
+ \li \c lastPatternName contains the pattern that was activated last time. We
have to keep track of this, because the last pattern has to be
deactivated before activating a new pattern.
\endlist
\table
\row
- \o \inlineimage mandelbrot_zoom1.png
- \o \inlineimage mandelbrot_zoom2.png
- \o \inlineimage mandelbrot_zoom3.png
+ \li \inlineimage mandelbrot_zoom1.png
+ \li \inlineimage mandelbrot_zoom2.png
+ \li \inlineimage mandelbrot_zoom3.png
\endtable
Similarly, when the user scrolls, the previous pixmap is scrolled
\table
\row
- \o \inlineimage mandelbrot_scroll1.png
- \o \inlineimage mandelbrot_scroll2.png
- \o \inlineimage mandelbrot_scroll3.png
+ \li \inlineimage mandelbrot_scroll1.png
+ \li \inlineimage mandelbrot_scroll2.png
+ \li \inlineimage mandelbrot_scroll3.png
\endtable
The application consists of two classes:
\list
- \o \c RenderThread is a QThread subclass that renders
+ \li \c RenderThread is a QThread subclass that renders
the Mandelbrot set.
- \o \c MandelbrotWidget is a QWidget subclass that shows the
+ \li \c MandelbrotWidget is a QWidget subclass that shows the
Mandelbrot set on screen and lets the user zoom and scroll.
\endlist
The example consists of two classes in addition to the main program:
\list
- \o \c Calibration is a dialog widget that retrieves the device coordinates.
- \o \c ScribbleWidget is a minimal drawing program used to let the user
+ \li \c Calibration is a dialog widget that retrieves the device coordinates.
+ \li \c ScribbleWidget is a minimal drawing program used to let the user
test the new mouse settings.
\endlist
The example consists of the following classes:
\list
- \o \c StateSwitcher inherits QState and can add
+ \li \c StateSwitcher inherits QState and can add
\c {StateSwitchTransition}s to other states.
When entered, it will randomly transition to one of these
states.
- \o \c StateSwitchTransition is a custom transition that
+ \li \c StateSwitchTransition is a custom transition that
triggers on \c{StateSwitchEvent}s.
- \o \c StateSwitchEvent is a QEvent that triggers \c{StateSwitchTransition}s.
- \o \c QGraphicsRectWidget is a QGraphicsWidget that simply
+ \li \c StateSwitchEvent is a QEvent that triggers \c{StateSwitchTransition}s.
+ \li \c QGraphicsRectWidget is a QGraphicsWidget that simply
paints its background in a solid \l{Qt::}{blue} color.
\endlist
\table
\row
- \o {1, 8} frame with \e{referenceFrameFormat}
+ \li {1, 8} frame with \e{referenceFrameFormat}
\row
- \o block \o \c{A company}
+ \li block \li \c{A company}
\row
- \o block
+ \li block
\row
- \o block \o \c{321 City Street}
+ \li block \li \c{321 City Street}
\row
- \o block
+ \li block
\row
- \o block \o \c{Industry Park}
+ \li block \li \c{Industry Park}
\row
- \o block
+ \li block
\row
- \o block \o \c{Another country}
+ \li block \li \c{Another country}
\endtable
This is accomplished with the following code:
\table
\row
- \o block \o \c{Donald}
+ \li block \li \c{Donald}
\row
- \o block \o \c{47338 Park Avenue}
+ \li block \li \c{47338 Park Avenue}
\row
- \o block \o \c{Big City}
+ \li block \li \c{Big City}
\endtable
For spacing purposes, we invoke \l{QTextCursor::insertBlock()}
\table
\row
- \o block
+ \li block
\row
- \o block
+ \li block
\row
- \o block \o \c{Date: 25 May 2007}
+ \li block \li \c{Date: 25 May 2007}
\row
- \o block
+ \li block
\row
- \o {1, 4} frame with \e{bodyFrameFormat}
+ \li {1, 4} frame with \e{bodyFrameFormat}
\row
- \o block \o \c{I would like to place an order for the following items:}
+ \li block \li \c{I would like to place an order for the following items:}
\row
- \o block
+ \li block
\row
- \o block
+ \li block
\endtable
A QTextTableFormat object, \c orderTableFormat, is used to hold the type
\table
\row
- \o {1, 11} \c{orderTable} with \e{orderTableFormat}
+ \li {1, 11} \c{orderTable} with \e{orderTableFormat}
\row
- \o block \o \c{Product}
+ \li block \li \c{Product}
\row
- \o block \o \c{Quantity}
+ \li block \li \c{Quantity}
\row
- \o block \o \c{T-shirt}
+ \li block \li \c{T-shirt}
\row
- \o block \o \c{4}
+ \li block \li \c{4}
\row
- \o block \o \c{Badge}
+ \li block \li \c{Badge}
\row
- \o block \o \c{3}
+ \li block \li \c{3}
\row
- \o block \o \c{Reference book}
+ \li block \li \c{Reference book}
\row
- \o block \o \c{2}
+ \li block \li \c{2}
\row
- \o block \o \c{Coffee cup}
+ \li block \li \c{Coffee cup}
\row
- \o block \o \c{5}
+ \li block \li \c{5}
\endtable
The \c cursor is then moved back to \c{topFrame}'s
\table
\row
- \o block
+ \li block
\row
- \o block\o \c{Please update my...}
+ \li block\li \c{Please update my...}
\row
- \o {1, 5} block
+ \li {1, 5} block
\row
- \o {1, 4} \c{offersTable}
+ \li {1, 4} \c{offersTable}
\row
- \o block \o \c{I want to receive...}
+ \li block \li \c{I want to receive...}
\row
- \o block \o \c{I do not want to receive...}
+ \li block \li \c{I do not want to receive...}
\row
- \o block \o \c{X}
+ \li block \li \c{X}
\endtable
The \c cursor is moved to insert "Sincerely" along with the customer's
\table
\row
- \o block
+ \li block
\row
- \o {1, 5} block\o \c{Sincerely,}
+ \li {1, 5} block\li \c{Sincerely,}
\row
- \o block
+ \li block
\row
- \o block
+ \li block
\row
- \o block
+ \li block
\row
- \o block \o \c{Donald}
+ \li block \li \c{Donald}
\endtable
The \c createSample() function is used for illustration purposes, to create
calls, using the following approach:
\list
- \o Reimplement QGLWidget::initializeGL(), but only perform minimal
+ \li Reimplement QGLWidget::initializeGL(), but only perform minimal
initialization. QPainter will perform its own initialization
routines, modifying the matrix and property stacks, so it is better
to defer certain initialization tasks until just before you render
the 3D scene.
- \o Reimplement QGLWidget::resizeGL() as in the pure 3D case.
- \o Reimplement QWidget::paintEvent() to draw both 2D and 3D graphics.
+ \li Reimplement QGLWidget::resizeGL() as in the pure 3D case.
+ \li Reimplement QWidget::paintEvent() to draw both 2D and 3D graphics.
\endlist
The \l{QWidget::paintEvent()}{paintEvent()} implementation performs the
following tasks:
\list
- \o Push the current OpenGL modelview matrix onto a stack.
- \o Perform initialization tasks usually done in the
+ \li Push the current OpenGL modelview matrix onto a stack.
+ \li Perform initialization tasks usually done in the
\l{QGLWidget::initializeGL()}{initializeGL()} function.
- \o Perform code that would normally be located in the widget's
+ \li Perform code that would normally be located in the widget's
\l{QGLWidget::resizeGL()}{resizeGL()} function to set the correct
perspective transformation and set up the viewport.
- \o Render the scene using OpenGL calls.
- \o Pop the OpenGL modelview matrix off the stack.
- \o Construct a QPainter object.
- \o Initialize it for use on the widget with the QPainter::begin() function.
- \o Draw primitives using QPainter's member functions.
- \o Call QPainter::end() to finish painting.
+ \li Render the scene using OpenGL calls.
+ \li Pop the OpenGL modelview matrix off the stack.
+ \li Construct a QPainter object.
+ \li Initialize it for use on the widget with the QPainter::begin() function.
+ \li Draw primitives using QPainter's member functions.
+ \li Call QPainter::end() to finish painting.
\endlist
*/
The private data members are:
\list
- \o \c pix: The optional pixmap that is drawn on top of the rectangle.
- \o \c fillRect: Corresponds to the \c fill property.
- \o \c color: The configurable gradient color fill of the rectangle.
- \o \c bounds: The bounds of the rectangle.
- \o \c gradient: A precalculated gradient used to fill the rectangle.
+ \li \c pix: The optional pixmap that is drawn on top of the rectangle.
+ \li \c fillRect: Corresponds to the \c fill property.
+ \li \c color: The configurable gradient color fill of the rectangle.
+ \li \c bounds: The bounds of the rectangle.
+ \li \c gradient: A precalculated gradient used to fill the rectangle.
\endlist
We will now review the \c RoundRectItem implementation. Let's start by
QGraphicsRotation object for each of these.
\list
- \o \c flipRotation: Rotates the grid around its Qt::YAxis. This rotation is
+ \li \c flipRotation: Rotates the grid around its Qt::YAxis. This rotation is
animated from 0 to 180, and eventually back, when enter is pressed on the
keyboard, flipping the pad around.
- \o \c xRotation: Rotates the grid around its Qt::XAxis. This is used to
+ \li \c xRotation: Rotates the grid around its Qt::XAxis. This is used to
tilt the pad vertically corresponding to which item is currently selected.
This way, the selected item is always kept in front.
- \o \c yRotation: Rotates the grid around its Qt::YAxis. This is used to
+ \li \c yRotation: Rotates the grid around its Qt::YAxis. This is used to
tilt the pad horizontally corresponding to which item is selected. This
way, the selected item is always kept in front.
\endlist
values when flipped back:
\list
- \o \c smoothFlipRotation: Animates the main 180 degree rotation of the pad.
- \o \c smoothFlipScale: Scales the pad out and then in again while the pad is rotating.
- \o \c smoothFlipXRotation: Animates the selection item's X-tilt to 0 and back.
- \o \c smoothFlipYRotation: Animates the selection item's Y-tilt to 0 and back.
- \o \c flipAnimation: A parallel animation group that ensures all the above animations are run in parallel.
+ \li \c smoothFlipRotation: Animates the main 180 degree rotation of the pad.
+ \li \c smoothFlipScale: Scales the pad out and then in again while the pad is rotating.
+ \li \c smoothFlipXRotation: Animates the selection item's X-tilt to 0 and back.
+ \li \c smoothFlipYRotation: Animates the selection item's Y-tilt to 0 and back.
+ \li \c flipAnimation: A parallel animation group that ensures all the above animations are run in parallel.
\endlist
All animations are given a 500 millisecond duration and an
states:
\list
- \o \c splashState: The initial state where the splash item is visible.
- \o \c frontState: The base state where the splash is gone and we can see
+ \li \c splashState: The initial state where the splash item is visible.
+ \li \c frontState: The base state where the splash is gone and we can see
the front side of the pad, and navigate the selection item.
- \o \c backState: The flipped state where the \c backItem is visible, and we
+ \li \c backState: The flipped state where the \c backItem is visible, and we
can interact with the QGraphicsProxyWidget-embedded form.
\endlist
The view toggles a few necessary properties:
\list
- \o It disables its scroll bars - this application has no use for scroll bars.
- \o It assigns a minimum size. This is necessary to avoid numerical errors
+ \li It disables its scroll bars - this application has no use for scroll bars.
+ \li It assigns a minimum size. This is necessary to avoid numerical errors
in our fit-in-view \c resizeEvent() implementation.
- \o It sets \l{QGraphicsView::FullViewportUpdate}{FullViewportUpdate}, to
+ \li It sets \l{QGraphicsView::FullViewportUpdate}{FullViewportUpdate}, to
ensure QGraphicsView doesn't spend time figuring out precisely what needs
to be redrawn. This application is very simple - if anything changes,
everything is updated.
- \o It enables background caching - this makes no performance difference
+ \li It enables background caching - this makes no performance difference
with OpenGL, but without OpenGL it avoids unnecessary re-scaling of the
background pixmap.
- \o It sets render hints that increase rendering quality.
- \o If OpenGL is supported, a QGLWidget viewport is assigned to the view.
+ \li It sets render hints that increase rendering quality.
+ \li If OpenGL is supported, a QGLWidget viewport is assigned to the view.
\endlist
Finally, we start the state engine.
The example consists of two classes:
\list
- \o The \c RenderArea class which is a custom widget displaying
+ \li The \c RenderArea class which is a custom widget displaying
a single painter path.
- \o The \c Window class which is the applications main window
+ \li The \c Window class which is the applications main window
displaying several \c RenderArea widgets, and allowing the user
to manipulate the painter paths' filling, pen, color
and rotation angle.
of standard views. To do this, we implement the following components:
\list
- \i A model which represents each pixel in an image as an item of data, where each
+ \li A model which represents each pixel in an image as an item of data, where each
item contains a value for the brightness of the corresponding pixel.
- \i A custom delegate that uses the information supplied by the model to represent
+ \li A custom delegate that uses the information supplied by the model to represent
each pixel as a black circle on a white background, where the radius of the
circle corresponds to the darkness of the pixel.
\endlist
Plug & Paint consists of the following classes:
\list
- \o \c MainWindow is a QMainWindow subclass that provides the menu
+ \li \c MainWindow is a QMainWindow subclass that provides the menu
system and that contains a \c PaintArea as the central widget.
- \o \c PaintArea is a QWidget that allows the user to draw using a
+ \li \c PaintArea is a QWidget that allows the user to draw using a
brush and to insert shapes.
- \o \c PluginDialog is a dialog that shows information about the
+ \li \c PluginDialog is a dialog that shows information about the
plugins detected by the application.
- \o \c BrushInterface, \c ShapeInterface, and \c FilterInterface are
+ \li \c BrushInterface, \c ShapeInterface, and \c FilterInterface are
abstract base classes that can be implemented by plugins to
provide custom brushes, shapes, and image filters.
\endlist
plugin:
\list 1
- \o Declare a plugin class.
- \o Implement the interfaces provided by the plugin.
- \o Export the plugin using the Q_EXPORT_PLUGIN2() macro.
- \o Build the plugin using an adequate \c .pro file.
+ \li Declare a plugin class.
+ \li Implement the interfaces provided by the plugin.
+ \li Export the plugin using the Q_EXPORT_PLUGIN2() macro.
+ \li Build the plugin using an adequate \c .pro file.
\endlist
\section1 Declaration of the Plugin Class
Then comes the brush-dependent part of the code:
\list
- \o If the brush is \gui{Pencil}, we just call
+ \li If the brush is \gui{Pencil}, we just call
QPainter::drawLine() with the current QPen.
- \o If the brush is \gui{Air Brush}, we start by setting the
+ \li If the brush is \gui{Air Brush}, we start by setting the
painter's QBrush to Qt::Dense6Pattern to obtain a dotted
pattern. Then we draw a circle filled with that QBrush several
times, resulting in a thick line.
- \o If the brush is \gui{Random Letters}, we draw a random letter
+ \li If the brush is \gui{Random Letters}, we draw a random letter
at the new cursor position. Most of the code is for setting
the font to be bold and larger than the default font and for
computing an appropriate bounding rect.
The example consists of two classes:
\list
- \o \c Window draws the text display of the game and sets
+ \li \c Window draws the text display of the game and sets
up the state machine. The window also has a status bar
above the area in which the rouge moves.
- \o \c MovementTransition is a transition that carries out
+ \li \c MovementTransition is a transition that carries out
a single move of the rogue.
\endlist
desktop. They are provided with a couple of options:
\list
- \o Delaying the screenshot, giving them time to rearrange
+ \li Delaying the screenshot, giving them time to rearrange
their desktop.
- \o Hiding the application's window while the screenshot is taken.
+ \li Hiding the application's window while the screenshot is taken.
\endlist
In addition the application allows the users to save their
to facilitate the options:
\list
- \o The \c newScreenshot() slot prepares a new screenshot.
- \o The \c saveScreenshot() slot saves the last screenshot.
- \o The \c shootScreen() slot takes the screenshot.
- \o The \c updateCheckBox() slot enables or disables the
+ \li The \c newScreenshot() slot prepares a new screenshot.
+ \li The \c saveScreenshot() slot saves the last screenshot.
+ \li The \c shootScreen() slot takes the screenshot.
+ \li The \c updateCheckBox() slot enables or disables the
\gui {Hide This Window} option.
\endlist
The example consists of two classes:
\list
- \o \c ScribbleArea is a custom widget that displays a QImage and
+ \li \c ScribbleArea is a custom widget that displays a QImage and
allows to the user to draw on it.
- \o \c MainWindow provides a menu above the \c ScribbleArea.
+ \li \c MainWindow provides a menu above the \c ScribbleArea.
\endlist
We will start by reviewing the \c ScribbleArea class. Then we will
We also need the following private variables:
\list
- \o \c modified is \c true if there are unsaved
+ \li \c modified is \c true if there are unsaved
changes to the image displayed in the scribble area.
- \o \c scribbling is \c true while the user is pressing
+ \li \c scribbling is \c true while the user is pressing
the left mouse button within the scribble area.
- \o \c penWidth and \c penColor hold the currently
+ \li \c penWidth and \c penColor hold the currently
set width and color for the pen used in the application.
- \o \c image stores the image drawn by the user.
- \o \c lastPoint holds the position of the cursor at the last
+ \li \c image stores the image drawn by the user.
+ \li \c lastPoint holds the position of the cursor at the last
mouse press or mouse move event.
\endlist
good reasons for this:
\list
- \o The window system requires us to be able to redraw the widget
+ \li The window system requires us to be able to redraw the widget
\e{at any time}. For example, if the window is minimized and
restored, the window system might have forgotten the contents
of the widget and send us a paint event. In other words, we
can't rely on the window system to remember our image.
- \o Qt normally doesn't allow us to paint outside of \c
+ \li Qt normally doesn't allow us to paint outside of \c
paintEvent(). In particular, we can't paint from the mouse
event handlers. (This behavior can be changed using the
Qt::WA_PaintOnScreen widget attribute, though.)
- \o If initialized properly, a QImage is guaranteed to use 8-bit
+ \li If initialized properly, a QImage is guaranteed to use 8-bit
for each color channel (red, green, blue, and alpha), whereas
a QWidget might have a lower color depth, depending on the
monitor configuration. This means that if we load a 24-bit or
\target SimpleTreeModelStructure
\table
- \row \i \inlineimage treemodel-structure.png
- \i \bold{Simple Tree Model Structure}
+ \row \li \inlineimage treemodel-structure.png
+ \li \b{Simple Tree Model Structure}
The data is stored internally in the model using \c TreeItem objects that
are linked together in a pointer-based tree structure. Generally, each
structure. The functions provide the following features:
\list
- \o The \c appendChildItem() is used to add data when the model is first
+ \li The \c appendChildItem() is used to add data when the model is first
constructed and is not used during normal use.
- \o The \c child() and \c childCount() functions allow the model to obtain
+ \li The \c child() and \c childCount() functions allow the model to obtain
information about any child items.
- \o Information about the number of columns associated with the item is
+ \li Information about the number of columns associated with the item is
provided by \c columnCount(), and the data in each column can be
obtained with the data() function.
- \o The \c row() and \c parent() functions are used to obtain the item's
+ \li The \c row() and \c parent() functions are used to obtain the item's
row number and parent item.
\endlist
We process the text file with the following two rules:
\list
- \o For each pair of strings on each line, create an item (or node)
+ \li For each pair of strings on each line, create an item (or node)
in a tree structure, and place each string in a column of data
in the item.
- \o When the first string on a line is indented with respect to the
+ \li When the first string on a line is indented with respect to the
first string on the previous line, make the item a child of the
previous item created.
\endlist
the Windows Mobile SIP (Software Input Panel) and reacts to it.
\table
- \row \o \inlineimage sipdialog-closed.png
- \o \inlineimage sipdialog-opened.png
+ \row \li \inlineimage sipdialog-closed.png
+ \li \inlineimage sipdialog-opened.png
\endtable
Sometimes it is necessary for a dialog to take the SIP into account,
The following signals are connected to their respective slots:
\list
- \o \c{button}'s \l{QPushButton::pressed()}{pressed()} signal to
+ \li \c{button}'s \l{QPushButton::pressed()}{pressed()} signal to
\l{QApplication}'s \l{QApplication::closeAllWindows()}
{closeAllWindows()} slot,
- \o \l{QDesktopWidget}'s \l{QDesktopWidget::workAreaResized()}
+ \li \l{QDesktopWidget}'s \l{QDesktopWidget::workAreaResized()}
{workAreaResized()} signal to \c{dialog}'s \c desktopResized() slot.
\endlist
\list
- \o \c SlidersGroup is a custom widget. It combines a QSlider, a
+ \li \c SlidersGroup is a custom widget. It combines a QSlider, a
QScrollBar and a QDial.
- \o \c Window is the main widget combining a QGroupBox and a
+ \li \c Window is the main widget combining a QGroupBox and a
QStackedWidget. In this example, the QStackedWidget provides a
stack of two \c SlidersGroup widgets. The QGroupBox contain
several widgets that control the behavior of the slider-like
slider-like widgets:
\table
- \header \o \o{2,1} QSlider \o{2,1} QScrollBar \o{2,1} QDial
- \header \o \o Normal \o Inverted \o Normal \o Inverted \o Normal \o Inverted
- \row \o Qt::Horizontal \o Left to right \o Right to left \o Left to right \o Right to left \o Clockwise \o Counterclockwise
- \row \o Qt::Vertical \o Bottom to top \o Top to bottom \o Top to bottom \o Bottom to top \o Clockwise \o Counterclockwise
+ \header \li \li{2,1} QSlider \li{2,1} QScrollBar \li{2,1} QDial
+ \header \li \li Normal \li Inverted \li Normal \li Inverted \li Normal \li Inverted
+ \row \li Qt::Horizontal \li Left to right \li Right to left \li Left to right \li Right to left \li Clockwise \li Counterclockwise
+ \row \li Qt::Vertical \li Bottom to top \li Top to bottom \li Top to bottom \li Bottom to top \li Clockwise \li Counterclockwise
\endtable
It is common to invert the appearance of a vertical QSlider. A
The example consists of the following classes:
\list
- \o \c StarRating is the custom data type. It stores a rating
+ \li \c StarRating is the custom data type. It stores a rating
expressed as stars, such as "2 out of 5 stars" or "5 out of
6 stars".
- \o \c StarDelegate inherits QItemDelegate and provides support
+ \li \c StarDelegate inherits QItemDelegate and provides support
for \c StarRating (in addition to the data types already
handled by QItemDelegate).
- \o \c StarEditor inherits QWidget and is used by \c StarDelegate
+ \li \c StarEditor inherits QWidget and is used by \c StarDelegate
to let the user edit a star rating using the mouse.
\endlist
editor are:
\list
- \o It is possible to open editors programmatically by calling
+ \li It is possible to open editors programmatically by calling
QAbstractItemView::edit(), instead of relying on edit
triggers. This could be use to support other edit triggers
than those offered by the QAbstractItemView::EditTrigger enum.
item with the mouse might make sense as a way to pop up an
editor.
- \o By reimplementing QAbstractItemDelegate::editorEvent(), it is
+ \li By reimplementing QAbstractItemDelegate::editorEvent(), it is
possible to implement the editor directly in the delegate,
instead of creating a separate QWidget subclass.
\endlist
The example consists of the following classes:
\list
- \o \c NorwegianWoodStyle inherits from QMotifStyle and implements
+ \li \c NorwegianWoodStyle inherits from QMotifStyle and implements
the Norwegian Wood style.
- \o \c WidgetGallery is a \c QDialog subclass that shows the most
+ \li \c WidgetGallery is a \c QDialog subclass that shows the most
common widgets and allows the user to switch style
dynamically.
\endlist
resources}.
\table
- \row \o \inlineimage widgets/styles/images/woodbackground.png
+ \row \li \inlineimage widgets/styles/images/woodbackground.png
- \o \bold{woodbackground.png}
+ \li \b{woodbackground.png}
This texture is used as the background of most widgets.
The wood pattern is horizontal.
- \row \o \inlineimage widgets/styles/images/woodbutton.png
+ \row \li \inlineimage widgets/styles/images/woodbutton.png
- \o \bold{woodbutton.png}
+ \li \b{woodbutton.png}
This texture is used for filling push buttons and
comboboxes. The wood pattern is vertical and more reddish
them based on the state of the button:
\list
- \o If the button is a \l{QPushButton::flat}{flat button}, we use
+ \li If the button is a \l{QPushButton::flat}{flat button}, we use
the \l{QPalette::Background}{Background} brush. We set \c
darker to \c true if the button is
\l{QAbstractButton::down}{down} or
\l{QAbstractButton::checked}{checked}.
- \o If the button is currently held down by the user or in the
+ \li If the button is currently held down by the user or in the
\l{QAbstractButton::checked}{checked} state, we use the
\l{QPalette::Mid}{Mid} component of the palette. We set
\c darker to \c true if the button is
\l{QAbstractButton::checked}{checked}.
- \o Otherwise, we use the \l{QPalette::Button}{Button} component
+ \li Otherwise, we use the \l{QPalette::Button}{Button} component
of the palette.
\endlist
approach:
\list 1
- \o \l {Step 1: Creating a Custom Graphics Driver}
+ \li \l {Step 1: Creating a Custom Graphics Driver}
{Creating a Custom Graphics Driver}
- \o \l {Step 2: Implementing a Custom Raster Paint Engine}
+ \li \l {Step 2: Implementing a Custom Raster Paint Engine}
{Implementing a Custom Paint Engine}
- \o \l {Step 3: Making the Widgets Aware of the Custom Paint
+ \li \l {Step 3: Making the Widgets Aware of the Custom Paint
Engine}{Making the Widgets Aware of the Custom Paint Engine}
\endlist
\snippet doc/src/snippets/code/doc_src_examples_svgalib.qdoc 0
\table
- \header \o SVGAlib
- \row \o
+ \header \li SVGAlib
+ \row \li
Instead of interfacing the graphics hardware directly, this
example relies on \l {http://www.svgalib.org}{SVGAlib} being
respectively.
\table
- \header \o Private Header Files
+ \header \li Private Header Files
\row
- \o
+ \li
Note the \c include statement used by this class. The files
prefixed with \c private/ are private headers file within
adjustments of the graphics driver.
\list
- \o \l {Implementing a Custom Paint Device}
- \o \l {Implementing a Custom Window Surface}
- \o \l {Adjusting the Graphics Driver}
+ \li \l {Implementing a Custom Paint Device}
+ \li \l {Implementing a Custom Window Surface}
+ \li \l {Adjusting the Graphics Driver}
\endlist
\section2 Implementing a Custom Paint Device
The example consists of two classes:
\list
- \o The \c Highlighter class defines and applies the
+ \li The \c Highlighter class defines and applies the
highlighting rules.
- \o The \c MainWindow widget is the application's main window.
+ \li The \c MainWindow widget is the application's main window.
\endlist
We will first review the \c Highlighter class to see how you can
The example consists of the following:
\list
- \o The \c MainWindow class inherits QMainWindow and creates
+ \li The \c MainWindow class inherits QMainWindow and creates
the examples menus and connect their slots and signals.
- \o The \c TabletCanvas class inherits QWidget and
+ \li The \c TabletCanvas class inherits QWidget and
receives tablet events. It uses the events to paint on a
offscreen pixmap, which it draws onto itself.
- \o The \c TabletApplication class inherits QApplication. This
+ \li The \c TabletApplication class inherits QApplication. This
class handles tablet events that are not sent to \c tabletEvent().
We will look at this later.
- \o The \c main() function creates a \c MainWindow and shows it
+ \li The \c main() function creates a \c MainWindow and shows it
as a top level window.
\endlist
This example shows how a simple game can be created using only three classes:
\list
- \o The \c TetrixWindow class is used to display the player's score, number of
+ \li The \c TetrixWindow class is used to display the player's score, number of
lives, and information about the next piece to appear.
- \o The \c TetrixBoard class contains the game logic, handles keyboard input, and
+ \li The \c TetrixBoard class contains the game logic, handles keyboard input, and
displays the pieces on the playing area.
- \o The \c TetrixPiece class contains information about each piece.
+ \li The \c TetrixPiece class contains information about each piece.
\endlist
In this approach, the \c TetrixBoard class is the most complex class, since it
resource and is loaded into the display at startup.
\table
- \row \o \inlineimage textfinder-example-find.png
- \o \inlineimage textfinder-example-find2.png
+ \row \li \inlineimage textfinder-example-find.png
+ \li \inlineimage textfinder-example-find2.png
\endtable
\section1 Setting Up The Resource File
The resources required for Text Finder are:
\list
- \o \e{textfinder.ui} - the user interface file created in QtDesigner
- \o \e{input.txt} - a text file containing some text to be displayed
+ \li \e{textfinder.ui} - the user interface file created in QtDesigner
+ \li \e{input.txt} - a text file containing some text to be displayed
in the QTextEdit
\endlist
The Tooltips example consists of two classes:
\list
- \o \c ShapeItem is a custom widget representing one single shape item.
- \o \c SortingBox inherits from QWidget and is the application's main
+ \li \c ShapeItem is a custom widget representing one single shape item.
+ \li \c SortingBox inherits from QWidget and is the application's main
widget.
\endlist
The example consists of two classes and a global enum:
\list
- \o The \c RenderArea class controls the rendering of a given shape.
- \o The \c Window class is the application's main window.
- \o The \c Operation enum describes the various transformation
+ \li The \c RenderArea class controls the rendering of a given shape.
+ \li The \c Window class is the application's main window.
+ \li The \c Operation enum describes the various transformation
operations available in the application.
\endlist
editor and follow these steps:
\list
- \o Uncomment the two lines that create a QLabel with the text
+ \li Uncomment the two lines that create a QLabel with the text
"\<b\>TROLL PRINT\</b\>" in \c printpanel.cpp.
- \o Word-tidying: Replace "2-sided" by "Two-sided" in \c printpanel.cpp.
- \o Replace "1.0" with "1.1" everywhere it occurs in \c mainwindow.cpp.
- \o Update the copyright year to 1999-2000 in \c mainwindow.cpp.
+ \li Word-tidying: Replace "2-sided" by "Two-sided" in \c printpanel.cpp.
+ \li Replace "1.0" with "1.1" everywhere it occurs in \c mainwindow.cpp.
+ \li Update the copyright year to 1999-2000 in \c mainwindow.cpp.
\endlist
(Of course the version number and copyright year would be consts or
Linguist}. The following items are of special interest:
\list
- \o \c MainWindow
+ \li \c MainWindow
\list
- \o Troll Print 1.0 - marked "(obs.)", obsolete
- \o About Troll Print 1.0 - marked "(obs.)", obsolete
- \o Troll Print 1.0. Copyright 1999 Software, Inc. -
+ \li Troll Print 1.0 - marked "(obs.)", obsolete
+ \li About Troll Print 1.0 - marked "(obs.)", obsolete
+ \li Troll Print 1.0. Copyright 1999 Software, Inc. -
marked obsolete
- \o Troll Print 1.1 - automatically translated as
+ \li Troll Print 1.1 - automatically translated as
"Troll Imprimir 1.1"
- \o About Troll Print 1.1 - automatically translated as
+ \li About Troll Print 1.1 - automatically translated as
"Troll Imprimir 1.1"
- \o Troll Print 1.1. Copyright 1999-2000 Software,
+ \li Troll Print 1.1. Copyright 1999-2000 Software,
Inc. - automatically translated as "Troll Imprimir 1.1.
Copyright 1999-2000 Software, Inc."
\endlist
- \o \c PrintPanel
+ \li \c PrintPanel
\list
- \o 2-sided - marked "(obs.)", obsolete
- \o \<b\>TROLL PRINT\</b\> - unmarked, i.e. untranslated
- \o Two-sided - unmarked, i.e. untranslated.
+ \li 2-sided - marked "(obs.)", obsolete
+ \li \<b\>TROLL PRINT\</b\> - unmarked, i.e. untranslated
+ \li Two-sided - unmarked, i.e. untranslated.
\endlist
\endlist
The example consists of the following classes:
\list
- \o \c MainWindow is the main window and arranges the
+ \li \c MainWindow is the main window and arranges the
example's widgets. It creates the commands based
on user input and keeps them on the command stack.
- \o \c AddCommand adds an item to the scene.
- \o \c DeleteCommand deletes an item from the scene.
- \o \c MoveCommand when an item is moved the MoveCommand keeps record
+ \li \c AddCommand adds an item to the scene.
+ \li \c DeleteCommand deletes an item from the scene.
+ \li \c MoveCommand when an item is moved the MoveCommand keeps record
of the start and stop positions of the move, and it
moves the item according to these when \c redo() and \c undo()
is called.
- \o \c DiagramScene inherits QGraphicsScene and
+ \li \c DiagramScene inherits QGraphicsScene and
emits signals for the \c MoveComands when an item is moved.
- \o \c DiagramItem inherits QGraphicsPolygonItem and represents
+ \li \c DiagramItem inherits QGraphicsPolygonItem and represents
an item in the diagram.
\endlist
The example consists of two classes:
\list
- \o \c WigglyWidget is the custom widget displaying the text
+ \li \c WigglyWidget is the custom widget displaying the text
in a wiggly line.
- \o \c Dialog is the dialog widget allowing the user to enter a
+ \li \c Dialog is the dialog widget allowing the user to enter a
text. It combines a \c WigglyWidget and a \c QLineEdit.
\endlist
The example consists of two classes:
\list
- \o \c ControllerWindow is the main application widget that allows
+ \li \c ControllerWindow is the main application widget that allows
the user to choose among the available window flags, and displays
the effect on a separate preview window.
- \o \c PreviewWindow is a custom widget displaying the name of
+ \li \c PreviewWindow is a custom widget displaying the name of
its currently set window flags in a read-only text editor.
\endlist
\table
\row
- \o \inlineimage coordinatesystem-rect.png
- \o \inlineimage coordinatesystem-line.png
+ \li \inlineimage coordinatesystem-rect.png
+ \li \inlineimage coordinatesystem-line.png
\row
- \o QRect(1, 2, 6, 4)
- \o QLine(2, 7, 6, 1)
+ \li QRect(1, 2, 6, 4)
+ \li QLine(2, 7, 6, 1)
\endtable
\section2 Aliased Painting
\table
\row
- \o \inlineimage coordinatesystem-rect-raster.png
- \o \inlineimage coordinatesystem-line-raster.png
+ \li \inlineimage coordinatesystem-rect-raster.png
+ \li \inlineimage coordinatesystem-line-raster.png
\row
- \o
+ \li
\snippet doc/src/snippets/code/doc_src_coordsys.cpp 0
- \o
+ \li
\snippet doc/src/snippets/code/doc_src_coordsys.cpp 1
\endtable
\table
\header
- \o {3,1} QRectF
+ \li {3,1} QRectF
\row
- \o \inlineimage qrect-diagram-zero.png
- \o \inlineimage qrectf-diagram-one.png
+ \li \inlineimage qrect-diagram-zero.png
+ \li \inlineimage qrectf-diagram-one.png
\row
- \o Logical representation
- \o One pixel wide pen
+ \li Logical representation
+ \li One pixel wide pen
\row
- \o \inlineimage qrectf-diagram-two.png
- \o \inlineimage qrectf-diagram-three.png
+ \li \inlineimage qrectf-diagram-two.png
+ \li \inlineimage qrectf-diagram-three.png
\row
- \o Two pixel wide pen
- \o Three pixel wide pen
+ \li Two pixel wide pen
+ \li Three pixel wide pen
\endtable
Note that for historical reasons the return value of the
\table
\row
- \o \inlineimage coordinatesystem-rect-antialias.png
- \o \inlineimage coordinatesystem-line-antialias.png
+ \li \inlineimage coordinatesystem-rect-antialias.png
+ \li \inlineimage coordinatesystem-line-antialias.png
\row
- \o
+ \li
\snippet doc/src/snippets/code/doc_src_coordsys.cpp 2
- \o
+ \li
\snippet doc/src/snippets/code/doc_src_coordsys.cpp 3
\endtable
\table
\row
- \o \inlineimage qpainter-clock.png
- \o \inlineimage qpainter-rotation.png
- \o \inlineimage qpainter-scale.png
- \o \inlineimage qpainter-translation.png
+ \li \inlineimage qpainter-clock.png
+ \li \inlineimage qpainter-rotation.png
+ \li \inlineimage qpainter-scale.png
+ \li \inlineimage qpainter-translation.png
\row
- \o nop
- \o \l {QPainter::rotate()}{rotate()}
- \o \l {QPainter::scale()}{scale()}
- \o \l {QPainter::translate()}{translate()}
+ \li nop
+ \li \l {QPainter::rotate()}{rotate()}
+ \li \l {QPainter::scale()}{scale()}
+ \li \l {QPainter::translate()}{translate()}
\endtable
You can also twist the coordinate system around the origin using
\table 100%
\header
- \o {2,1} Analog Clock Example
+ \li {2,1} Analog Clock Example
\row
- \o \inlineimage coordinatesystem-analogclock.png
- \o
+ \li \inlineimage coordinatesystem-analogclock.png
+ \li
The Analog Clock example shows how to draw the contents of a
custom widget using QPainter's transformation matrix.
sizes.
\row
- \o {2,1}
+ \li {2,1}
\snippet examples/widgets/analogclock/analogclock.cpp 9
QPaintDevice, and QPaintEngine classes:
\table
- \header \o Class \o Description
+ \header \li Class \li Description
\row
- \o QPainter
- \o
+ \li QPainter
+ \li
The QPainter class performs low-level painting on widgets and
other paint devices. QPainter can operate on any object that
inherits the QPaintDevice class, using the same code.
\row
- \o QPaintDevice
- \o
+ \li QPaintDevice
+ \li
The QPaintDevice class is the base class of objects that can be
painted. Qt provides several devices: QWidget, QImage, QPixmap,
QPrinter and QPicture, and other devices can also be defined by
subclassing QPaintDevice.
\row
- \o QPaintEngine
- \o
+ \li QPaintEngine
+ \li
The QPaintEngine class provides an abstract definition of how
QPainter draws to a given device on a given platform. Qt 4
provides several premade implementations of QPaintEngine for the
using the QTransform class:
\table
- \header \o Class \o Description
+ \header \li Class \li Description
\row
- \o QTransform
- \o
+ \li QTransform
+ \li
A 3 x 3 transformation matrix. Use QTransform to rotate, shear,
scale, or translate the coordinate system.
\endtable
name is suffixed with an \c F.
\table
- \header \o Class \o Description
+ \header \li Class \li Description
\row
- \o \l{QPoint}(\l{QPointF}{F})
- \o
+ \li \l{QPoint}(\l{QPointF}{F})
+ \li
A single 2D point in the coordinate system. Most functions in Qt
that deal with points can accept either a QPoint, a QPointF, two
\c{int}s, or two \c{qreal}s.
\row
- \o \l{QSize}(\l{QSizeF}{F})
- \o
+ \li \l{QSize}(\l{QSizeF}{F})
+ \li
A single 2D vector. Internally, QPoint and QSize are the same, but
a point is not the same as a size, so both classes exist. Again,
most functions accept either QSizeF, a QSize, two \c{int}s, or two
\c{qreal}s.
\row
- \o \l{QRect}(\l{QRectF}{F})
- \o
+ \li \l{QRect}(\l{QRectF}{F})
+ \li
A 2D rectangle. Most functions accept either a QRectF, a QRect,
four \c{int}s, or four \c {qreal}s.
\row
- \o \l{QLine}(\l{QLineF}{F})
- \o
+ \li \l{QLine}(\l{QLineF}{F})
+ \li
A 2D finite-length line, characterized by a start point and an end
point.
\row
- \o \l{QPolygon}(\l{QPolygonF}{F})
- \o
+ \li \l{QPolygon}(\l{QPolygonF}{F})
+ \li
A 2D polygon. A polygon is a vector of \c{QPoint(F)}s. If the
first and last points are the same, the polygon is closed.
\row
- \o QPainterPath
- \o
+ \li QPainterPath
+ \li
A vectorial specification of a 2D shape. Painter paths are the
ultimate painting primitive, in the sense that any shape
(rectange, ellipse, spline) or combination of shapes can be
expressed as a path. A path specifies both an outline and an area.
\row
- \o QRegion
- \o
+ \li QRegion
+ \li
An area in a paint device, expressed as a list of
\l{QRect}s. In general, we recommend using the vectorial
QPainterPath class instead of QRegion for specifying areas,
\section1 Topics
\list
- \o \l{Classes for Painting}
- \o \l{Paint Devices and Backends}
- \o \l{Drawing and Filling}
- \o \l{Coordinate System}
- \o \l{Reading and Writing Image Files}
- \o \l{Styling}
- \o \l{Printing with Qt}
+ \li \l{Classes for Painting}
+ \li \l{Paint Devices and Backends}
+ \li \l{Drawing and Filling}
+ \li \l{Coordinate System}
+ \li \l{Reading and Writing Image Files}
+ \li \l{Styling}
+ \li \l{Printing with Qt}
\endlist
\section1 Classes for Painting
\image paintsystem-devices.png
\table 100%
- \row \o \bold Widget
+ \row \li \b Widget
The QWidget class is the base class of all user interface
objects. The widget is the atom of the user interface: it receives
mouse, keyboard and other events from the window system, and
paints a representation of itself on the screen.
- \row \o \bold Image
+ \row \li \b Image
The QImage class provides a hardware-independent image
representation which is designed and optimized for I/O, and for
painting can be performed in another thread than the current GUI
thread.
- \row \o \bold Pixmap
+ \row \li \b Pixmap
The QPixmap class is an off-screen image representation which is
designed and optimized for showing images on screen. Unlike
constructing QRegion objects, and for setting masks for pixmaps
and widgets.
- \row \o \bold {OpenGL Widget}
+ \row \li \b {OpenGL Widget}
As mentioned previously, Qt provides the QtOpenGL module offering
classes that makes it easy to use OpenGL in Qt applications. For
most drawing operations, such as transformations and pixmap
drawing.
- \row \o \bold {Pixel Buffer}
+ \row \li \b {Pixel Buffer}
The QtOpenGL module also provides the QGLPixelBuffer class which
inherits QPaintDevice directly.
pbuffer is normally done using full hardware acceleration which
can be significantly faster than rendering into a QPixmap.
- \row \o \bold {Framebuffer Object}
+ \row \li \b {Framebuffer Object}
The QtOpenGL module also provides the QGLFramebufferObject class
which inherits QPaintDevice directly.
offer several advantages over pixel buffers for this purpose.
These are described in the QGLFramebufferObject class documentation.
- \row \o \bold {Picture}
+ \row \li \b {Picture}
The QPicture class is a paint device that records and replays
QPainter commands. A picture serializes painter commands to an IO
Qt provides the QPicture::load() and QPicture::save() functions
as well as streaming operators for loading and saving pictures.
- \row \o \bold {Printer}
+ \row \li \b {Printer}
The QPrinter class is a paint device that paints on a printer. On
Windows or Mac OS X, QPrinter uses the built-in printer
to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
file.
- \row \o \bold {Custom Backends}
+ \row \li \b {Custom Backends}
Support for a new backend can be implemented by deriving from the
QPaintDevice class and reimplementing the virtual
\table
\row
- \o Windows
- \o Software Rasterizer
+ \li Windows
+ \li Software Rasterizer
\row
- \o X11
- \o X11
+ \li X11
+ \li X11
\row
- \o Mac OS X
- \o CoreGraphics
+ \li Mac OS X
+ \li CoreGraphics
\row
- \o Embedded
- \o Software Rasterizer
+ \li Embedded
+ \li Software Rasterizer
\endtable
Passing a command line parameter to the application, such as,
\table 100%
\row
- \o \image paintsystem-painterpath.png
- \o \bold QPainterPath
+ \li \image paintsystem-painterpath.png
+ \li \b QPainterPath
A painter path is an object composed of lines and curves. For
example, a rectangle is composed by lines and an ellipse is
pixels, and the benefits of anti-aliased painting.
\table 100%
- \row \o
- \bold {Anti-Aliased Painting}
+ \row \li
+ \b {Anti-Aliased Painting}
When drawing, the pixel rendering is controlled by the
QPainter::Antialiasing render hint. The QPainter::RenderHint enum
antialias edges of primitives if possible, i.e. smoothing the
edges by using different color intensities.
- \o \image paintsystem-antialiasing.png
+ \li \image paintsystem-antialiasing.png
\endtable
\table 100%
\row
- \o \image paintsystem-fancygradient.png
- \o \bold QGradient
+ \li \image paintsystem-fancygradient.png
+ \li \b QGradient
The QGradient class is used in combination with QBrush to specify
gradient fills.
\table 100%
\row
- \o \bold QMovie
+ \li \b QMovie
QMovie is a convenience class for displaying animations, using the
QImageReader class internally. Once created, the QMovie class
provides various functions for both running and controlling the
given animation.
- \o \image paintsystem-movie.png
+ \li \image paintsystem-movie.png
\endtable
The QImageReader and QImageWriter classes rely on the
\table 100%
\row
- \o \image paintsystem-svg.png
- \o \bold {SVG Rendering}
+ \li \image paintsystem-svg.png
+ \li \b {SVG Rendering}
Scalable Vector Graphics (SVG) is a language for describing two-dimensional
graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
Most functions for drawing style elements take four arguments:
\list
- \o an enum value specifying which graphical element to draw
- \o a QStyleOption object specifying how and where to render that element
- \o a QPainter object that should be used to draw the element
- \o a QWidget object on which the drawing is performed (optional)
+ \li an enum value specifying which graphical element to draw
+ \li a QStyleOption object specifying how and where to render that element
+ \li a QPainter object that should be used to draw the element
+ \li a QWidget object on which the drawing is performed (optional)
\endlist
The style gets all the information it needs to render the
\table 100%
\row
- \o \inlineimage paintsystem-icon.png
- \o \bold QIcon
+ \li \inlineimage paintsystem-icon.png
+ \li \b QIcon
The QIcon class provides scalable icons in different modes and states.
the application happens to be running on.
\table
- \row \o bool
- \o \list
- \o boolean
- \endlist
- \row \o qint8
- \o \list
- \o signed byte
- \endlist
- \row \o qint16
- \o \list
- \o signed 16-bit integer
- \endlist
- \row \o qint32
- \o \list
- \o signed 32-bit integer
- \endlist
- \row \o qint64
- \o \list
- \o signed 64-bit integer
- \endlist
- \row \o quint8
- \o \list
- \o unsigned byte
- \endlist
- \row \o quint16
- \o \list
- \o unsigned 16-bit integer
- \endlist
- \row \o quint32
- \o \list
- \o unsigned 32-bit integer
- \endlist
- \row \o quint64
- \o \list
- \o unsigned 64-bit integer
- \endlist
- \row \o \c float
- \o \list
- \o 32-bit floating point number using the standard IEEE 754 format
- \endlist
- \row \o \c double
- \o \list
- \o 64-bit floating point number using the standard IEEE 754 format
- \endlist
- \row \o \c {const char *}
- \o \list
- \o The string length (quint32)
- \o The string bytes, excluding the terminating 0
- \endlist
- \row \o QBitArray
- \o \list
- \o The array size (quint32)
- \o The array bits, i.e. (size + 7)/8 bytes
- \endlist
- \row \o QBrush
- \o \list
- \o The brush style (quint8)
- \o The brush color (QColor)
- \o If style is CustomPattern, the brush pixmap (QPixmap)
- \endlist
- \row \o QByteArray
- \o \list
- \o If the byte array is null: 0xFFFFFFFF (quint32)
- \o Otherwise: the array size (quint32) followed by the array bytes, i.e. size bytes
- \endlist
- \row \o \l QColor
- \o \list
- \o Color spec (qint8)
- \o Alpha value (quint16)
- \o Red value (quint16)
- \o Green value (quint16)
- \o Blue value (quint16)
- \o Pad value (quint16)
- \endlist
- \row \o QCursor
- \o \list
- \o Shape ID (qint16)
- \o If shape is BitmapCursor: The bitmap (QPixmap), mask (QPixmap), and hot spot (QPoint)
- \endlist
- \row \o QDate
- \o \list
- \o Julian day (quint32)
- \endlist
- \row \o QDateTime
- \o \list
- \o Date (QDate)
- \o Time (QTime)
- \o 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
- \endlist
- \row \o QEasingCurve
- \o \list
- \o type (quint8)
- \o func (quint64)
- \o hasConfig (bool)
- \o If hasConfig is true then these fields follow:
- \o list
- \o period (double)
- \o amplitude (double)
- \o overshoot (double)
- \endlist
- \row \o QFont
- \o \list
- \o The family (QString)
- \o The point size (qint16)
- \o The style hint (quint8)
- \o The char set (quint8)
- \o The weight (quint8)
- \o The font bits (quint8)
- \endlist
- \row \o QHash<Key, T>
- \o \list
- \o The number of items (quint32)
- \o For all items, the key (Key) and value (T)
- \endlist
- \row \o QIcon
- \o \list
- \o The number of pixmap entries (quint32)
- \o For all pixmap entries:
+ \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
- \o The pixmap (QPixmap)
- \o The file name (QString)
- \o The pixmap size (QSize)
- \o The \l{QIcon::Mode}{mode} (quint32)
- \o The \l{QIcon::State}{state} (quint32)
+ \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 \o QImage
- \o \list
- \o If the image is null a "null image" marker is saved;
+ \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 \o QKeySequence
- \o \list
- \o A QList<int>, where each integer is a key in the key sequence
- \endlist
- \row \o QLinkedList<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
- \endlist
- \row \o QList<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
- \endlist
- \row \o QMap<Key, T>
- \o \list
- \o The number of items (quint32)
- \o For all items, the key (Key) and value (T)
- \endlist
- \row \o QMargins
- \o \list
- \o left (int)
- \o top (int)
- \o right (int)
- \o bottom (int)
- \endlist
- \row \o QMatrix
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m21 (double)
- \o m22 (double)
- \o dx (double)
- \o dy (double)
- \endlist
- \row \o QMatrix4x4
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m13 (double)
- \o m14 (double)
- \o m21 (double)
- \o m22 (double)
- \o m23 (double)
- \o m24 (double)
- \o m31 (double)
- \o m32 (double)
- \o m33 (double)
- \o m34 (double)
- \o m41 (double)
- \o m42 (double)
- \o m43 (double)
- \o m44 (double)
- \endlist
- \row \o QPair<T1, T2>
- \o \list
- \o first (T1)
- \o second (T2)
- \endlist
- \row \o QPalette
- \o The disabled, active, and inactive color groups, each of which consists
+ \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
- \o foreground (QBrush)
- \o button (QBrush)
- \o light (QBrush)
- \o midlight (QBrush)
- \o dark (QBrush)
- \o mid (QBrush)
- \o text (QBrush)
- \o brightText (QBrush)
- \o buttonText (QBrush)
- \o base (QBrush)
- \o background (QBrush)
- \o shadow (QBrush)
- \o highlight (QBrush)
- \o highlightedText (QBrush)
- \o link (QBrush)
- \o linkVisited (QBrush)
- \endlist
- \row \o QPen
- \o \list
- \o The pen styles (quint8)
- \o The pen width (quint16)
- \o The pen color (QColor)
- \endlist
- \row \o QPicture
- \o \list
- \o The size of the picture data (quint32)
- \o The raw bytes of picture data (char)
- \endlist
- \row \o QPixmap
- \o \list
- \o Save it as a PNG image.
- \endlist
- \row \o QPoint
- \o \list
- \o The x coordinate (qint32)
- \o The y coordinate (qint32)
- \endlist
- \row \o QQuaternion
- \o \list
- \o The scalar component (double)
- \o The x coordinate (double)
- \o The y coordinate (double)
- \o The z coordinate (double)
- \endlist
- \row \o QRect
- \o \list
- \o left (qint32)
- \o top (qint32)
- \o right (qint32)
- \o bottom (qint32)
- \endlist
- \row \o QRegExp
- \o \list
- \o The regexp pattern (QString)
- \o Case sensitivity (quint8)
- \o Regular expression syntax (quint8)
- \o Minimal matching (quint8)
- \endlist
- \row \o QRegion
- \o \list
- \o The size of the data, i.e. 8 + 16 * (number of rectangles) (quint32)
- \o 10 (qint32)
- \o The number of rectangles (quint32)
- \o The rectangles in sequential order (QRect)
- \endlist
- \row \o QSize
- \o \list
- \o width (qint32)
- \o height (qint32)
- \endlist
- \row \o QString
- \o \list
- \o If the string is null: 0xFFFFFFFF (quint32)
- \o Otherwise: The string length in bytes (quint32) followed by the data in UTF-16
- \endlist
- \row \o QTime
- \o \list
- \o Milliseconds since midnight (quint32)
- \endlist
- \row \o QTransform
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m13 (double)
- \o m21 (double)
- \o m22 (double)
- \o m23 (double)
- \o m31 (double)
- \o m32 (double)
- \o m33 (double)
- \endlist
- \row \o QUrl
- \o \list
- \o Holds an URL (QString)
- \endlist
- \row \o QVariant
- \o \list
- \o The type of the data (quint32)
- \o The null flag (qint8)
- \o The data of the specified type
- \endlist
- \row \o QVector2D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \endlist
- \row \o QVector3D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \o the z coordinate (double)
- \endlist
- \row \o QVector4D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \o the z coordinate (double)
- \o the w coordinate (double)
- \endlist
- \row \o QVector<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
+ \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 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
*/
hardware management categories:
\table 60%
-\header \o Interface management \o Session management
-\row \o QNetworkSession::stop() \o QNetworkSession::open()
-\row \o QNetworkSession::interface() \o QNetworkSession::close()
-\row \o QNetworkSession::state() \o QNetworkSession::isOpen()
-\row \o QNetworkSession::bytesWritten() \o QNetworkSession::migrate()
-\row \o QNetworkSession::bytesReceived() \o QNetworkSession::ignore()
-\row \o QNetworkSession::activeTime() \o QNetworkSession::accept()
-\row \o QNetworkSession::stateChanged() \o QNetworkSession::reject()
-\row \o \o QNetworkSession::opened()
-\row \o \o QNetworkSession::closed()
+\header \li Interface management \li Session management
+\row \li QNetworkSession::stop() \li QNetworkSession::open()
+\row \li QNetworkSession::interface() \li QNetworkSession::close()
+\row \li QNetworkSession::state() \li QNetworkSession::isOpen()
+\row \li QNetworkSession::bytesWritten() \li QNetworkSession::migrate()
+\row \li QNetworkSession::bytesReceived() \li QNetworkSession::ignore()
+\row \li QNetworkSession::activeTime() \li QNetworkSession::accept()
+\row \li QNetworkSession::stateChanged() \li QNetworkSession::reject()
+\row \li \li QNetworkSession::opened()
+\row \li \li QNetworkSession::closed()
\endtable
The state of the session represents the state of the underlying access point
\table
\header
- \o Platform
- \o Backend capabilities
+ \li Platform
+ \li Backend capabilities
\row
- \o Linux\unicode{0xAE}
- \o Linux uses the \l {http://projects.gnome.org/NetworkManager}{NetworkManager}
+ \li Linux\unicode{0xAE}
+ \li Linux uses the \l {http://projects.gnome.org/NetworkManager}{NetworkManager}
and \l {http://connman.net/}{ConnMan} / \l {http://ofono.org/}{oFono} APIs
which support interface notifications and starting and stopping of network
interfaces.
\row
- \o Windows\unicode{0xAE} XP
- \o This platform supports interface notifications without active polling.
+ \li Windows\unicode{0xAE} XP
+ \li This platform supports interface notifications without active polling.
\row
- \o Windows XP SP2+Hotfixes, Windows XP SP3, Windows Vista, Windows 7
- \o In addition to standard Windows XP wifi access point monitoring has been improved which includes the ability to start and stop wifi interfaces. This requires Windows to manage the wifi interfaces.
+ \li Windows XP SP2+Hotfixes, Windows XP SP3, Windows Vista, Windows 7
+ \li In addition to standard Windows XP wifi access point monitoring has been improved which includes the ability to start and stop wifi interfaces. This requires Windows to manage the wifi interfaces.
\row
- \o Mac OS\unicode{0xAE}
- \o This platform has full support by way of CoreWLAN offered in Mac OS 10.6. Previous
+ \li Mac OS\unicode{0xAE}
+ \li This platform has full support by way of CoreWLAN offered in Mac OS 10.6. Previous
versions of Mac OS - 10.5 and 10.4 have limited support.
\row
- \o All other platforms (*nix, Windows Mobile)
- \o This backend is the fallback for all platforms supports network interface notifications via active polling only.
+ \li All other platforms (*nix, Windows Mobile)
+ \li This backend is the fallback for all platforms supports network interface notifications via active polling only.
\endtable
*/
too small for the higher resolutions of typical printers.
\table
- \row \o \bold{Printer and Painter Coordinate Systems}
+ \row \li \b{Printer and Painter Coordinate Systems}
The \l{QPrinter::}{paperRect()} and \l{QPrinter::}{pageRect()} functions
provide information about the size of the paper used for printing and the
rectangle, and painting operations will be clipped to the bounds of the
drawable part of the page.
- \o \inlineimage printer-rects.png
+ \li \inlineimage printer-rects.png
\endtable
The paint system automatically uses the correct device metrics when painting
functionality can be obtained via a function in the corresponding widget's API.
\table
- \header \o Widget \o Printing function \o Accepts
- \row \o QGraphicsView \o QGraphicsView::render() \o QPainter
- \row \o QSvgWidget \o QSvgRenderer::render() \o QPainter
- \row \o QTextEdit \o QTextDocument::print() \o QPrinter
- \row \o QTextLayout \o QTextLayout::draw() \o QPainter
- \row \o QTextLine \o QTextLine::draw() \o QPainter
+ \header \li Widget \li Printing function \li Accepts
+ \row \li QGraphicsView \li QGraphicsView::render() \li QPainter
+ \row \li QSvgWidget \li QSvgRenderer::render() \li QPainter
+ \row \li QTextEdit \li QTextDocument::print() \li QPrinter
+ \row \li QTextLayout \li QTextLayout::draw() \li QPainter
+ \row \li QTextLine \li QTextLine::draw() \li QPainter
\endtable
QTextEdit requires a QPrinter rather than a QPainter because it uses information
\table 90%
\header
- \o IBM DB2 data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li IBM DB2 data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
+ \li SMALLINT
+ \li 16-bit signed integer
+ \li typedef qint16
\row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
+ \li INTEGER
+ \li 32-bit signed integer
+ \li typedef qint32
\row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
+ \li BIGINT
+ \li 64-bit signed integer
+ \li typedef qint64
\row
- \o REAL
- \o 32-bit Single-precision floating point
- \o By default mapping to QString
+ \li REAL
+ \li 32-bit Single-precision floating point
+ \li By default mapping to QString
\row
- \o DOUBLE PRECISION
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
+ \li DOUBLE PRECISION
+ \li 64-bit Double-precision floating point
+ \li By default mapping to QString
\row
- \o FLOAT
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
+ \li FLOAT
+ \li 64-bit Double-precision floating point
+ \li By default mapping to QString
\row
- \o CHAR
- \o Fixed-length, null-terminated character string
- \o Mapped to QString
+ \li CHAR
+ \li Fixed-length, null-terminated character string
+ \li Mapped to QString
\row
- \o VARCHAR
- \o Null-terminated varying length string
- \o Mapped to QString
+ \li VARCHAR
+ \li Null-terminated varying length string
+ \li Mapped to QString
\row
- \o LONG VARCHAR
- \o Not null-terminated varying length character string
- \o Mapped to QString
+ \li LONG VARCHAR
+ \li Not null-terminated varying length character string
+ \li Mapped to QString
\row
- \o BLOB
- \o Not null-terminated varying binary string with 4-byte string
+ \li BLOB
+ \li Not null-terminated varying binary string with 4-byte string
length indicator
- \o Mapped to QByteArray
+ \li Mapped to QByteArray
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o DATE
- \o Null-terminated character string of the following format:
+ \li DATE
+ \li Null-terminated character string of the following format:
yyyy-mm-dd
- \o Mapped to QDate
+ \li Mapped to QDate
\row
- \o TIME
- \o Null-terminated character string of the following format: hh.mm.ss
- \o Mapped to QTime
+ \li TIME
+ \li Null-terminated character string of the following format: hh.mm.ss
+ \li Mapped to QTime
\row
- \o TIMESTAMP
- \o Null-terminated character string of the following format: yyyy-mm-dd-hh.mm.ss.nnnnnn
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li Null-terminated character string of the following format: yyyy-mm-dd-hh.mm.ss.nnnnnn
+ \li Mapped to QDateTime
\endtable
\section2 Borland InterBase Data Types
\table 90%
\header
- \o Borland InterBase data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li Borland InterBase data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o BOOLEAN
- \o Boolean
- \o bool
+ \li BOOLEAN
+ \li Boolean
+ \li bool
\row
- \o TINYINT
- \o 8 bit signed integer
- \o typedef qint8
+ \li TINYINT
+ \li 8 bit signed integer
+ \li typedef qint8
\row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
+ \li SMALLINT
+ \li 16-bit signed integer
+ \li typedef qint16
\row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
+ \li INTEGER
+ \li 32-bit signed integer
+ \li typedef qint32
\row
- \o BIGINT LONG
- \o 64-bit signed integer
- \o typedef qint64
+ \li BIGINT LONG
+ \li 64-bit signed integer
+ \li typedef qint64
\row
- \o REAL FLOAT
- \o 32-bit floating point
- \o By default mapping to QString
+ \li REAL FLOAT
+ \li 32-bit floating point
+ \li By default mapping to QString
\row
- \o FLOAT
- \o 64-bit floating point
- \o By default mapping to QString
+ \li FLOAT
+ \li 64-bit floating point
+ \li By default mapping to QString
\row
- \o DOUBLE
- \o 64-bit floating point
- \o By default mapping to QString
+ \li DOUBLE
+ \li 64-bit floating point
+ \li By default mapping to QString
\row
- \o DOUBLE PRECISION
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
+ \li DOUBLE PRECISION
+ \li 64-bit Double-precision floating point
+ \li By default mapping to QString
\row
- \o VARCHAR STRING
- \o Character string, Unicode
- \o Mapped to QString
+ \li VARCHAR STRING
+ \li Character string, Unicode
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o DATE
- \o Displays date. Format: 'yyyy-mm-dd'
- \o Mapped to QDate
+ \li DATE
+ \li Displays date. Format: 'yyyy-mm-dd'
+ \li Mapped to QDate
\row
- \o TIME
- \o Displays time. Format is 'hh:mm:ss' in 24-hour format
- \o Mapped to QTime
+ \li TIME
+ \li Displays time. Format is 'hh:mm:ss' in 24-hour format
+ \li Mapped to QTime
\row
- \o TIMESTAMP
- \o Displays a timestamp. Format is 'yyyy-mm-dd hh:mm:ss'
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li Displays a timestamp. Format is 'yyyy-mm-dd hh:mm:ss'
+ \li Mapped to QDateTime
\endtable
\section2 MySQL Data Types
\table 90%
\header
- \o MySQL data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li MySQL data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o TINYINT
- \o 8 bit signed integer
- \o typedef qint8
+ \li TINYINT
+ \li 8 bit signed integer
+ \li typedef qint8
\row
- \o TINYINT UNSIGNED
- \o 8 bit unsigned integer
- \o typedef quint8
+ \li TINYINT UNSIGNED
+ \li 8 bit unsigned integer
+ \li typedef quint8
\row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
+ \li SMALLINT
+ \li 16-bit signed integer
+ \li typedef qint16
\row
- \o SMALLINT UNSIGNED
- \o 16-bit unsigned integer
- \o typedef quint16
+ \li SMALLINT UNSIGNED
+ \li 16-bit unsigned integer
+ \li typedef quint16
\row
- \o INT
- \o 32-bit signed integer
- \o typedef qint32
+ \li INT
+ \li 32-bit signed integer
+ \li typedef qint32
\row
- \o INT UNSIGNED
- \o 32-bit unsigned integer
- \o typedef quint32
+ \li INT UNSIGNED
+ \li 32-bit unsigned integer
+ \li typedef quint32
\row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
+ \li BIGINT
+ \li 64-bit signed integer
+ \li typedef qint64
\row
- \o FLOAT
- \o 32-bit Floating Point
- \o By default mapping to QString
+ \li FLOAT
+ \li 32-bit Floating Point
+ \li By default mapping to QString
\row
- \o DOUBLE
- \o 64-bit Floating Point
- \o By default mapping to QString
+ \li DOUBLE
+ \li 64-bit Floating Point
+ \li By default mapping to QString
\row
- \o CHAR
- \o Character string
- \o Mapped to QString
+ \li CHAR
+ \li Character string
+ \li Mapped to QString
\row
- \o VARCHAR
- \o Character string
- \o Mapped to QString
+ \li VARCHAR
+ \li Character string
+ \li Mapped to QString
\row
- \o TINYTEXT
- \o Character string
- \o Mapped to QString
+ \li TINYTEXT
+ \li Character string
+ \li Mapped to QString
\row
- \o TEXT
- \o Character string
- \o Mapped to QString
+ \li TEXT
+ \li Character string
+ \li Mapped to QString
\row
- \o MEDIUMTEXT
- \o Character string
- \o Mapped to QString
+ \li MEDIUMTEXT
+ \li Character string
+ \li Mapped to QString
\row
- \o LONGTEXT
- \o Character string
- \o Mapped to QString
+ \li LONGTEXT
+ \li Character string
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o all BLOB types
- \o BLOB
- \o Mapped to QByteArray
+ \li all BLOB types
+ \li BLOB
+ \li Mapped to QByteArray
\row
- \o DATE
- \o Date without Time
- \o Mapped to QDate
+ \li DATE
+ \li Date without Time
+ \li Mapped to QDate
\row
- \o DATETIME
- \o Date and Time
- \o Mapped to QDateTime
+ \li DATETIME
+ \li Date and Time
+ \li Mapped to QDateTime
\row
- \o TIMESTAMP
- \o Date and Time
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li Date and Time
+ \li Mapped to QDateTime
\row
- \o TIME
- \o Time
- \o Mapped to QTime
+ \li TIME
+ \li Time
+ \li Mapped to QTime
\row
- \o YEAR
- \o Year (int)
- \o Mapped to QDateTime
+ \li YEAR
+ \li Year (int)
+ \li Mapped to QDateTime
\row
- \o ENUM
- \o Enumeration of Value Set
- \o Mapped to QString
+ \li ENUM
+ \li Enumeration of Value Set
+ \li Mapped to QString
\endtable
\section2 Oracle Call Interface Data Types
\table 90%
\header
- \o Oracle Call Interface data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li Oracle Call Interface data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o NUMBER
- \o FLOAT, DOUBLE, PRECISIONc REAL
- \o By default mapping to QString
+ \li NUMBER
+ \li FLOAT, DOUBLE, PRECISIONc REAL
+ \li By default mapping to QString
\row
- \o NUMBER(38)
- \o INTEGER INT SMALLINT
- \o typedef qint8/16/32/64
+ \li NUMBER(38)
+ \li INTEGER INT SMALLINT
+ \li typedef qint8/16/32/64
\row
- \o NUMBER(p,s)
- \o NUMERIC(p,s) DECIMAL(p,s)a
- \o By default mapping to QString
+ \li NUMBER(p,s)
+ \li NUMERIC(p,s) DECIMAL(p,s)a
+ \li By default mapping to QString
\row
- \o NVARCHAR2(n)
- \o Character string (NATIONAL CHARACTER VARYING(n) NATIONAL
+ \li NVARCHAR2(n)
+ \li Character string (NATIONAL CHARACTER VARYING(n) NATIONAL
CHAR VARYING(n) NCHAR VARYING(n))
- \o Mapped to QString
+ \li Mapped to QString
\row
- \o NCHAR(n)
- \o Character string (NATIONAL CHARACTER(n) NATIONAL CHAR(n)
+ \li NCHAR(n)
+ \li Character string (NATIONAL CHARACTER(n) NATIONAL CHAR(n)
NCHAR(n))
- \o Mapped to QString
+ \li Mapped to QString
\row
- \o CHAR(n)
- \o Character string (CHARACTER(n) CHAR(n))
- \o Mapped to QString
+ \li CHAR(n)
+ \li Character string (CHARACTER(n) CHAR(n))
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o BLOB
- \o A binary large object
- \o Mapped to QByteArray
+ \li BLOB
+ \li A binary large object
+ \li Mapped to QByteArray
\row
- \o TIMESTAMP
- \o Year, month, and day values of date, as well as hour, minute,
+ \li TIMESTAMP
+ \li Year, month, and day values of date, as well as hour, minute,
and second values of time
- \o Mapped to QDateTime
+ \li Mapped to QDateTime
\endtable
\section2 ODBC Data Types
\table 90%
\header
- \o ODBC data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li ODBC data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o BIT
- \o Boolean
- \o BOOL
+ \li BIT
+ \li Boolean
+ \li BOOL
\row
- \o TINYINT
- \o 8 bit integer
- \o typedef qint8
+ \li TINYINT
+ \li 8 bit integer
+ \li typedef qint8
\row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
+ \li SMALLINT
+ \li 16-bit signed integer
+ \li typedef qint16
\row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
+ \li INTEGER
+ \li 32-bit signed integer
+ \li typedef qint32
\row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
+ \li BIGINT
+ \li 64-bit signed integer
+ \li typedef qint64
\row
- \o REAL
- \o 32-bit Single-precision floating point
- \o By default mapping to QString
+ \li REAL
+ \li 32-bit Single-precision floating point
+ \li By default mapping to QString
\row
- \o FLOAT
- \o 64-bit Double floating point
- \o By default mapping to QString
+ \li FLOAT
+ \li 64-bit Double floating point
+ \li By default mapping to QString
\row
- \o DOUBLE
- \o 64-bit Double floating point
- \o By default mapping to QString
+ \li DOUBLE
+ \li 64-bit Double floating point
+ \li By default mapping to QString
\row
- \o CHAR
- \o Character string
- \o Mapped to QString
+ \li CHAR
+ \li Character string
+ \li Mapped to QString
\row
- \o VARCHAR
- \o Character string
- \o Mapped to QString
+ \li VARCHAR
+ \li Character string
+ \li Mapped to QString
\row
- \o LONGVARCHAR
- \o Character string
- \o Mapped to QString
+ \li LONGVARCHAR
+ \li Character string
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o DATE
- \o Character string
- \o Mapped to QDate
+ \li DATE
+ \li Character string
+ \li Mapped to QDate
\row
- \o TIME
- \o Character Time, Character string
- \o Mapped to QTime
+ \li TIME
+ \li Character Time, Character string
+ \li Mapped to QTime
\row
- \o TIMESTAMP
- \o Character Time, Character string
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li Character Time, Character string
+ \li Mapped to QDateTime
\endtable
\section2 PostgreSQL Data Types
\table 90%
\header
- \o PostgreSQL data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li PostgreSQL data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o BOOLEAN
- \o Boolean
- \o bool
+ \li BOOLEAN
+ \li Boolean
+ \li bool
\row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
+ \li SMALLINT
+ \li 16-bit signed integer
+ \li typedef qint16
\row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
+ \li INTEGER
+ \li 32-bit signed integer
+ \li typedef qint32
\row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
+ \li BIGINT
+ \li 64-bit signed integer
+ \li typedef qint64
\row
- \o REAL
- \o 32-bit variable-precision floating point
- \o By default mapping to QString
+ \li REAL
+ \li 32-bit variable-precision floating point
+ \li By default mapping to QString
\row
- \o DOUBLE PRECISION
- \o 64-bit variable-precision floating point
- \o By default mapping to QString
+ \li DOUBLE PRECISION
+ \li 64-bit variable-precision floating point
+ \li By default mapping to QString
\row
- \o DECIMAL VARIABLE
- \o user-specified precision, exact
- \o Mapped to QString
+ \li DECIMAL VARIABLE
+ \li user-specified precision, exact
+ \li Mapped to QString
\row
- \o NUMERIC VARIABLE
- \o user-specified precision, exact
- \o Mapped to QString
+ \li NUMERIC VARIABLE
+ \li user-specified precision, exact
+ \li Mapped to QString
\row
- \o VARCHAR
- \o variable-length character string
- \o Mapped to QString
+ \li VARCHAR
+ \li variable-length character string
+ \li Mapped to QString
\row
- \o CHARACTER
- \o Character string of fixed-length
- \o Mapped to QString
+ \li CHARACTER
+ \li Character string of fixed-length
+ \li Mapped to QString
\row
- \o TEXT
- \o Character string of variable-length
- \o Mapped to QString
+ \li TEXT
+ \li Character string of variable-length
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o TIMESTAMP
- \o 8 bytes, both date and time
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li 8 bytes, both date and time
+ \li Mapped to QDateTime
\row
- \o TIMESTAMP
- \o 8 bytes, both date and time, with time zone
- \o Mapped to QDateTime
+ \li TIMESTAMP
+ \li 8 bytes, both date and time, with time zone
+ \li Mapped to QDateTime
\row
- \o DATE
- \o 4 bytes, dates only
- \o Mapped to QDate
+ \li DATE
+ \li 4 bytes, dates only
+ \li Mapped to QDate
\row
- \o TIME
- \o 8 bytes, times of day only 00:00:00.00 - 23:59:59.99
- \o Mapped to QTime
+ \li TIME
+ \li 8 bytes, times of day only 00:00:00.00 - 23:59:59.99
+ \li Mapped to QTime
\row
- \o TIME
- \o 12 bytes times of day only, with time zone 00:00:00.00+12
- \o Mapped to QDateTime
+ \li TIME
+ \li 12 bytes times of day only, with time zone 00:00:00.00+12
+ \li Mapped to QDateTime
\endtable
\section2 QSQLITE SQLite version 3 Data Types
\table 90%
\header
- \o QSQLITE SQLite version 3 data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li QSQLITE SQLite version 3 data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o NULL
- \o NULL value.
- \o NULL
+ \li NULL
+ \li NULL value.
+ \li NULL
\row
- \o INTEGER
- \o Signed integer, stored in 8, 16, 24, 32, 48, or 64-bits
+ \li INTEGER
+ \li Signed integer, stored in 8, 16, 24, 32, 48, or 64-bits
depending on the magnitude of the value.
- \o typedef qint8/16/32/64
+ \li typedef qint8/16/32/64
\row
- \o REAL
- \o 64-bit floating point value.
- \o By default mapping to QString
+ \li REAL
+ \li 64-bit floating point value.
+ \li By default mapping to QString
\row
- \o TEXT
- \o Character string (UTF-8, UTF-16BE or UTF-16-LE).
- \o Mapped to QString
+ \li TEXT
+ \li Character string (UTF-8, UTF-16BE or UTF-16-LE).
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o BLOB
- \o The value is a BLOB of data, stored exactly as it was input.
- \o Mapped to QByteArray
+ \li BLOB
+ \li The value is a BLOB of data, stored exactly as it was input.
+ \li Mapped to QByteArray
\endtable
\section2 Sybase Adaptive Server Data Types
\table 90%
\header
- \o Sybase Adaptive Server data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
+ \li Sybase Adaptive Server data type
+ \li SQL type description
+ \li Recommended input (C++ or Qt data type)
\row
- \o BINARY
- \o Describes a fixed-length binary value up to 255 bytes in size.
- \o Mapped to QByteArray
+ \li BINARY
+ \li Describes a fixed-length binary value up to 255 bytes in size.
+ \li Mapped to QByteArray
\row
- \o CHAR
- \o Character String
- \o Mapped to QString
+ \li CHAR
+ \li Character String
+ \li Mapped to QString
\row
- \o DATETIME
- \o Date and time. Range: 1753-01-01 00:00:00 through 9999-12-31 23:59:59.
- \o Mapped to QDateTime
+ \li DATETIME
+ \li Date and time. Range: 1753-01-01 00:00:00 through 9999-12-31 23:59:59.
+ \li Mapped to QDateTime
\row
- \o NCHAR
- \o Character String of fixed length
- \o Mapped to QString
+ \li NCHAR
+ \li Character String of fixed length
+ \li Mapped to QString
\row
- \o NVARACHAR
- \o Character String of variable length
- \o Mapped to QString
+ \li NVARACHAR
+ \li Character String of variable length
+ \li Mapped to QString
\row
- \o VARCHAR
- \o Character String of fixed length
- \o Mapped to QString
+ \li VARCHAR
+ \li Character String of fixed length
+ \li Mapped to QString
\row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
+ \li CLOB
+ \li Character large string object
+ \li Mapped to QString
\row
- \o TIMESTAMP
- \o A unique number within a database
- \o Mapped to QString
+ \li TIMESTAMP
+ \li A unique number within a database
+ \li Mapped to QString
\row
- \o SMALLDATETIME
- \o Date and time. Range: 1900-01-01 00:00 through 2079-12-31 23:59
- \o Mapped to QDateTime
+ \li SMALLDATETIME
+ \li Date and time. Range: 1900-01-01 00:00 through 2079-12-31 23:59
+ \li Mapped to QDateTime
\row
- \o UNICHAR
- \o Character String of fixed length.(Unicode)
- \o Mapped to QString
+ \li UNICHAR
+ \li Character String of fixed length.(Unicode)
+ \li Mapped to QString
\row
- \o UNIVARCHAR
- \o Character String of variable length.(Unicode)
- \o Mapped to QString
+ \li UNIVARCHAR
+ \li Character String of variable length.(Unicode)
+ \li Mapped to QString
\row
- \o VARBINARY
- \o Describes a variable-length binary value up to 255 bytes in size
- \o Mapped to QByteArray
+ \li VARBINARY
+ \li Describes a variable-length binary value up to 255 bytes in size
+ \li Mapped to QByteArray
\endtable
\section2 SQLite Version 2
are provided with Open Source Versions of Qt.
\table
- \header \o Driver name \o DBMS
- \row \o \link #QDB2 QDB2\endlink \o IBM DB2 (version 7.1 and above)
- \row \o \link #QIBASE QIBASE\endlink \o Borland InterBase
- \row \o \link #QMYSQL QMYSQL\endlink \o MySQL
- \row \o \link #QOCI QOCI\endlink \o Oracle Call Interface Driver
- \row \o \link #QODBC QODBC\endlink
- \o Open Database Connectivity (ODBC) - Microsoft SQL Server and other
+ \header \li Driver name \li DBMS
+ \row \li \link #QDB2 QDB2\endlink \li IBM DB2 (version 7.1 and above)
+ \row \li \link #QIBASE QIBASE\endlink \li Borland InterBase
+ \row \li \link #QMYSQL QMYSQL\endlink \li MySQL
+ \row \li \link #QOCI QOCI\endlink \li Oracle Call Interface Driver
+ \row \li \link #QODBC QODBC\endlink
+ \li Open Database Connectivity (ODBC) - Microsoft SQL Server and other
ODBC-compliant databases
- \row \o \link #QPSQL QPSQL\endlink \o PostgreSQL (versions 7.3 and above)
- \row \o \link #QSQLITE2 QSQLITE2\endlink \o SQLite version 2
- \row \o \link #QSQLITE QSQLITE\endlink \o SQLite version 3
- \row \o \link #QTDS QTDS\endlink \o Sybase Adaptive Server \note obsolete from Qt 4.7
+ \row \li \link #QPSQL QPSQL\endlink \li PostgreSQL (versions 7.3 and above)
+ \row \li \link #QSQLITE2 QSQLITE2\endlink \li SQLite version 2
+ \row \li \link #QSQLITE QSQLITE\endlink \li SQLite version 3
+ \row \li \link #QTDS QTDS\endlink \li Sybase Adaptive Server \note obsolete from Qt 4.7
\endtable
SQLite is the in-process database system with the best test coverage
Linux. The completeness of the support for other systems depends on the
availability and quality of client libraries.
- \bold{Note:} To build a driver plugin you need to have the appropriate
+ \b{Note:} To build a driver plugin you need to have the appropriate
client library for your Database Management System (DBMS). This provides
access to the API exposed by the DBMS, and is typically shipped with it.
Most installation programs also allow you to install "development
\snippet doc/src/snippets/code/doc_src_sql-driver.cpp 2
- \bold{Note:} \c{@outval1} and \c{@outval2} are variables local to the current
+ \b{Note:} \c{@outval1} and \c{@outval2} are variables local to the current
connection and will not be affected by queries sent from another host
or connection.
\list
- \o Download the following components:
+ \li Download the following components:
\list
- \o \c{MinGW-5.1.6.exe}
- \o \c{mingw-utils-0.3.tar.gz}
- \o Qt sources, e.g. \c{qt-everywhere-opensource-src-4.6.2.zip}
- \o \c{mysql-5.1.35-win32.msi}
+ \li \c{MinGW-5.1.6.exe}
+ \li \c{mingw-utils-0.3.tar.gz}
+ \li Qt sources, e.g. \c{qt-everywhere-opensource-src-4.6.2.zip}
+ \li \c{mysql-5.1.35-win32.msi}
\endlist
- \o Install \c{MinGW-5.1.6.exe} in, e.g. \c{C:\MinGW}.
+ \li Install \c{MinGW-5.1.6.exe} in, e.g. \c{C:\MinGW}.
- \o Extract \c{mingw-utils-0.3.tar.gz} into, e.g. \c{C:\MinGW}.
+ \li Extract \c{mingw-utils-0.3.tar.gz} into, e.g. \c{C:\MinGW}.
- \o Add the path for \c{MinGW-5.1.6.exe} to your \c{PATH} variable,
+ \li Add the path for \c{MinGW-5.1.6.exe} to your \c{PATH} variable,
e.g. \c{C:\MinGW\bin;}
- \o Extract the Qt sources, (\c{qt-everywhere-opensource-src-4.6.2.zip}),
+ \li Extract the Qt sources, (\c{qt-everywhere-opensource-src-4.6.2.zip}),
into, e.g. \c{C:\Qt}.
- \o Add the path for the eventual Qt binary to your \c{PATH} variable,
+ \li Add the path for the eventual Qt binary to your \c{PATH} variable,
e.g. \c{C:\Qt\4.6.2\bin;}.
- \o Install MySQL (\c{mysql-5.1.35-win32.msi}), customizing the
+ \li Install MySQL (\c{mysql-5.1.35-win32.msi}), customizing the
components. Select only the headers and libraries. Install in,
e.g. \c{C:\MySQL\MySQL51}.
- \o Open the DOS prompt, go to \c{C:\MySQL\MySQL51\lib\opt}, and run
+ \li Open the DOS prompt, go to \c{C:\MySQL\MySQL51\lib\opt}, and run
the following commands:
\list
- \o \c{reimp -d libmysql.lib}
- \o \c{dlltool -k -d libmysql.def -l libmysql.a}
+ \li \c{reimp -d libmysql.lib}
+ \li \c{dlltool -k -d libmysql.def -l libmysql.a}
\endlist
- \o Open the DOS prompt, go to \c{C:\Qt\4.6.2} and run the following commands:
+ \li Open the DOS prompt, go to \c{C:\Qt\4.6.2} and run the following commands:
\list
- \o \c{configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql
+ \li \c{configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql
-l mysql -I C:\MySQL\MySQL51\include -L C:\MySQL\MySQL51\lib\opt}
- \o \c{mingw32-make sub-src}
+ \li \c{mingw32-make sub-src}
\endlist
This step takes a long time.
- \o Open the DOS prompt, go to
+ \li Open the DOS prompt, go to
\c{C:\Qt\4.6.2\src\plugins\sqldrivers\mysql} and run the
following command:
\list
- \o \c{qmake "INCLUDEPATH+=C:\MySQL\MySQL51\include" "LIBS+=-L. mysql" mysql.pro}
+ \li \c{qmake "INCLUDEPATH+=C:\MySQL\MySQL51\include" "LIBS+=-L. mysql" mysql.pro}
\endlist
- \o Now the following libraries are ready in \c{C:\Qt\4.6.2\plugins\sqldrivers}.
+ \li Now the following libraries are ready in \c{C:\Qt\4.6.2\plugins\sqldrivers}.
\list
- \o \c{libqsqlmysql4.a}
- \o \c{libqsqlmysqld4.a}
- \o \c{qsqlmysql4.dll}
- \o \c{qsqlmysqld4.dll}
+ \li \c{libqsqlmysql4.a}
+ \li \c{libqsqlmysqld4.a}
+ \li \c{qsqlmysql4.dll}
+ \li \c{qsqlmysqld4.dll}
\endlist
To use the SDK and QtCreator directly, copy these libraries to
your \c{C:\Qt\...\qt\plugins\sqldrivers\}, and copy
Oracle library files required to build the driver:
\list
- \i \c libclntsh.so (all versions)
- \i \c libwtc9.so (only Oracle 9)
+ \li \c libclntsh.so (all versions)
+ \li \c libwtc9.so (only Oracle 9)
\endlist
Tell \c qmake where to find the Oracle header files and shared
Instant Client Package SDK (you need to adjust the version number accordingly):
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 7
- \bold{Note:} If you are using the Oracle Instant Client package,
+ \b{Note:} If you are using the Oracle Instant Client package,
you will need to set LD_LIBRARY_PATH when building the OCI SQL plugin
and when running an application that uses the OCI SQL plugin. You can
avoid this requirement by setting and RPATH and listing all of the
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 9
- \bold{Note:} This database plugin is not supported for Windows CE.
+ \b{Note:} This database plugin is not supported for Windows CE.
\target QODBC
\section2 QODBC for Open Database Connectivity (ODBC)
driver manager that is installed on your system. The QODBC plugin
then allows you to use these data sources in your Qt applications.
- \bold{Note:} You should use native drivers in preference to the ODBC
+ \b{Note:} You should use native drivers in preference to the ODBC
driver where they are available. ODBC support can be used as a fallback
for compliant databases if no native drivers are available.
\snippet doc/src/snippets/code/doc_src_sql-driver.cpp 10
- \bold{Note:} The value returned by the stored procedure's return statement
+ \b{Note:} The value returned by the stored procedure's return statement
is discarded.
\section3 ODBC Unicode Support
If you are not using a Microsoft compiler, replace \c nmake with \c
make in the line above.
- \bold{Note:} This database plugin is not officially supported for Windows CE.
+ \b{Note:} This database plugin is not officially supported for Windows CE.
\target QPSQL
\section2 QPSQL for PostgreSQL (Version 7.3 and Above)
Users of MinGW may wish to consult the following online document:
\l{PostgreSQL MinGW/Native Windows}.
- \bold{Note:} This database plugin is not supported for Windows CE.
+ \b{Note:} This database plugin is not supported for Windows CE.
\target QTDS
\section2 QTDS for Sybase Adaptive Server
Under Unix, two libraries are available which support the TDS protocol:
\list
- \i FreeTDS, a free implementation of the TDS protocol
+ \li FreeTDS, a free implementation of the TDS protocol
(\l{http://www.freetds.org}). Note that FreeTDS is not yet stable,
so some functionality may not work as expected.
- \i Sybase Open Client, available from \l{http://www.sybase.com}.
+ \li Sybase Open Client, available from \l{http://www.sybase.com}.
Note for Linux users: Get the Open Client RPM from
\l{http://linux.sybase.com}.
\endlist
are not using a Microsoft compiler, replace \c nmake with \c make in
the line above.
- \bold{Note:} This database plugin is not supported for Windows CE.
+ \b{Note:} This database plugin is not supported for Windows CE.
\target QDB2
\section2 QDB2 for IBM DB2 (Version 7.1 and Above)
If you are not using a Microsoft compiler, replace \c nmake
with \c make in the line above.
- \bold{Note:} This database plugin is not supported for Windows CE.
+ \b{Note:} This database plugin is not supported for Windows CE.
\target QSQLITE2
\section2 QSQLITE2 for SQLite Version 2
Note that \c{C:\interbase\bin} must be in the \c PATH.
- \bold{Note:} This database plugin is not supported for Windows CE.
+ \b{Note:} This database plugin is not supported for Windows CE.
\target troubleshooting
\section1 Troubleshooting
make sure that the following requirements are met:
\list
- \i Ensure that you are using a shared Qt library; you cannot use the
+ \li Ensure that you are using a shared Qt library; you cannot use the
plugins with a static build.
- \i Ensure that the plugin is in the correct directory. You can use
+ \li Ensure that the plugin is in the correct directory. You can use
QApplication::libraryPaths() to determine where Qt looks for plugins.
- \i Ensure that the client libraries of the DBMS are available on the
+ \li Ensure that the client libraries of the DBMS are available on the
system. On Unix, run the command \c{ldd} and pass the name of the
plugin as parameter, for example \c{ldd libqsqlmysql.so}. You will
get a warning if any of the client libraries couldn't be found.
On Windows, you can use Visual Studio's dependency walker.
- \i Compile Qt with \c{QT_DEBUG_COMPONENT} defined to get very verbose
+ \li Compile Qt with \c{QT_DEBUG_COMPONENT} defined to get very verbose
debug output when loading plugins.
\endlist
\section1 Topics:
\list
- \o \l{Database Classes}
- \o \l{Connecting to Databases}
+ \li \l{Database Classes}
+ \li \l{Connecting to Databases}
\list
- \o \l{SQL Database Drivers}
+ \li \l{SQL Database Drivers}
\endlist
- \o \l{Executing SQL Statements}
+ \li \l{Executing SQL Statements}
\list
- \o \l{Data Types for Qt-supported Database Systems}
+ \li \l{Data Types for Qt-supported Database Systems}
\endlist
- \o \l{Using the SQL Model Classes}
- \o \l{Presenting Data in a Table View}
- \o \l{Creating Data-Aware Forms}
+ \li \l{Using the SQL Model Classes}
+ \li \l{Presenting Data in a Table View}
+ \li \l{Creating Data-Aware Forms}
\endlist
\section1 Database Classes
QSqlTableModel, and QSqlRelationalTableModel.
\table
- \row \o QSqlQueryModel
- \o A read-only model based on an arbitrary SQL query.
- \row \o QSqlTableModel
- \o A read-write model that works on a single table.
- \row \o QSqlRelationalTableModel
- \o A QSqlTableModel subclass with foreign key support.
+ \row \li QSqlQueryModel
+ \li A read-only model based on an arbitrary SQL query.
+ \row \li QSqlTableModel
+ \li A read-write model that works on a single table.
+ \row \li QSqlRelationalTableModel
+ \li A QSqlTableModel subclass with foreign key support.
\endtable
These classes derive from QAbstractTableModel (which in turn
pitfalls, though:
\list
- \o Without any caching, performance may drop significantly.
- \o If you modify a primary key, the record might slip through
+ \li Without any caching, performance may drop significantly.
+ \li If you modify a primary key, the record might slip through
your fingers while you are trying to populate it.
\endlist
that \c authorid is a foreign key.
\table
- \row \o \inlineimage noforeignkeys.png
- \o \inlineimage foreignkeys.png
+ \row \li \inlineimage noforeignkeys.png
+ \li \inlineimage foreignkeys.png
\endtable
The screenshot on the left shows a plain QSqlTableModel in a
par Qt, tel que:
\list
- \o Les Widgets et leur mise en page à l'aide des layouts
- \o Les signaux et slots
- \o Les structures de données de collections
- \o Les entrées/sorties
+ \li Les Widgets et leur mise en page à l'aide des layouts
+ \li Les signaux et slots
+ \li Les structures de données de collections
+ \li Les entrées/sorties
\endlist
Si c'est votre premier contact avec Qt, lisez \l{How to Learn Qt}{Comment apprendre Qt}
Les chapitres du tutoriel:
\list 1
- \o \l{tutorials/addressbook-fr/part1}{Conception de l'interface utilisateur}
- \o \l{tutorials/addressbook-fr/part2}{Ajouter des adresses}
- \o \l{tutorials/addressbook-fr/part3}{Navigation entre les éléments}
- \o \l{tutorials/addressbook-fr/part4}{éditer et supprimer des adresses}
- \o \l{tutorials/addressbook-fr/part5}{Ajout d'une fonction de recherche}
- \o \l{tutorials/addressbook-fr/part6}{Sauvegarde et chargement}
- \o \l{tutorials/addressbook-fr/part7}{Fonctionnalités avancées}
+ \li \l{tutorials/addressbook-fr/part1}{Conception de l'interface utilisateur}
+ \li \l{tutorials/addressbook-fr/part2}{Ajouter des adresses}
+ \li \l{tutorials/addressbook-fr/part3}{Navigation entre les éléments}
+ \li \l{tutorials/addressbook-fr/part4}{éditer et supprimer des adresses}
+ \li \l{tutorials/addressbook-fr/part5}{Ajout d'une fonction de recherche}
+ \li \l{tutorials/addressbook-fr/part6}{Sauvegarde et chargement}
+ \li \l{tutorials/addressbook-fr/part7}{Fonctionnalités avancées}
\endlist
La petite application que nous développerons ici ne possède pas tous les éléments
Trois fichiers sont nécessaires à l'implémentation de ce carnet d'adresses:
\list
- \o \c{addressbook.h} - le fichier de définition (header) pour la classe \c AddressBook,
- \o \c{addressbook.cpp} - le fichier source, qui comprend l'implémentation de la classe
+ \li \c{addressbook.h} - le fichier de définition (header) pour la classe \c AddressBook,
+ \li \c{addressbook.cpp} - le fichier source, qui comprend l'implémentation de la classe
\c AddressBook
- \o \c{main.cpp} - le fichier qui contient la méthode \c main() , et
+ \li \c{main.cpp} - le fichier qui contient la méthode \c main() , et
une instance de la classe \c AddressBook.
\endlist
ou modifier le comportement d'un widget présente les avantages suivants:
\list
- \o La possibilité d'implémenter des méthodes virtuelles et des méthodes
+ \li La possibilité d'implémenter des méthodes virtuelles et des méthodes
virtuelles pures pour obtenir exactement ce que l'on souhaite, avec la possibilité
d'utiliser l'implémentation de la classe mère si besoin est.
- \o Cela permet l'encapsulation partielle de l'interface utilisateur dans une classe,
+ \li Cela permet l'encapsulation partielle de l'interface utilisateur dans une classe,
afin que les autres parties de l'application n'aient pas à se soucier de chacun des
widgets qui forment l'interface utilisateur.
- \o La classe fille peut être utilisée pour créer de nombreux widgets personnalisés
+ \li La classe fille peut être utilisée pour créer de nombreux widgets personnalisés
dans une même application ou bibliothèque, et le code de la classe fille peut être
réutilisé dans d'autres projets
\endlist
La méthode \c submitContact() peut être divisée en trois parties:
\list 1
- \o Nous extrayons les détails du contact depuis \c nameLine et \c addressText
+ \li Nous extrayons les détails du contact depuis \c nameLine et \c addressText
et les stockons dans des objets QString. Nous les validons pour s'assurer
que l'utilisateur n'a pas cliqué sur "Add" avec des champs de saisie
vides; sinon un message est affiché avec QMessageBox pour rappeller Ã
\snippet tutorials/addressbook/part2/addressbook.cpp submitContact part1
- \o Ensuite, nous vérifions si le contact existe déjà . Si aucun contacts
+ \li Ensuite, nous vérifions si le contact existe déjà . Si aucun contacts
existant n'entre en conflit avec le nouveau, nous l'ajoutons Ã
\c contacts et nous affichons un QMessageBox pour informer l'utilisateur
que le contact a été ajouté.
Notre objet \c contacts est basé sur des paires clé-valeur formés par
le nom et l'adresse, nous voulons nous assurer que la \e clé est unique.
- \o Une fois que les deux vérifications précédentes ont été traitées,
+ \li Une fois que les deux vérifications précédentes ont été traitées,
nous restaurons les boutons à leur état normal à l'aide du code
suivant:
sur \c contact dans la méthode \c next(), et ensuite:
\list
- \o Si l'itérateur n'est pas à la fin de \c contacts, nous l'incrémentons
- \o Si l'itérateur est à la fin de \c contacts, nous changeons sa position
+ \li Si l'itérateur n'est pas à la fin de \c contacts, nous l'incrémentons
+ \li Si l'itérateur est à la fin de \c contacts, nous changeons sa position
jusqu'au début de \c contacts. Cela donne l'illusion que notre QMap
fonctionne comme une liste circulaire.
\endlist
itérateur sur \c contacts et ensuite:
\list
- \o Si l'itérateur est à la fin de \c contacts, on réinitialise
+ \li Si l'itérateur est à la fin de \c contacts, on réinitialise
l'affichage et on retourne.
- \o Si l'itérateur est au début de \c contacts, on change sa
+ \li Si l'itérateur est au début de \c contacts, on change sa
position jusqu'Ã la fin
- \o Ensuite, on décrémente l'itérateur
+ \li Ensuite, on décrémente l'itérateur
\endlist
\snippet tutorials/addressbook/part3/addressbook.cpp previous() function
Dans ce chapitre, on définit l'énumération \c Mode avec trois valeurs possibles.
\list
- \o \c{NavigationMode},
- \o \c{AddingMode}, et
- \o \c{EditingMode}.
+ \li \c{NavigationMode},
+ \li \c{AddingMode}, et
+ \li \c{EditingMode}.
\endlist
\section1 Définition de la classe AddressBook
components of Qt, including:
\list
- \o Widgets and layout managers
- \o Container classes
- \o Signals and slots
- \o Input and output devices
+ \li Widgets and layout managers
+ \li Container classes
+ \li Signals and slots
+ \li Input and output devices
\endlist
If you are new to Qt, we recommend reading \l{How to Learn Qt} first.
Tutorial contents:
\list 1
- \o \l{tutorials/addressbook/part1}{Designing the User Interface}
- \o \l{tutorials/addressbook/part2}{Adding Addresses}
- \o \l{tutorials/addressbook/part3}{Navigating between Entries}
- \o \l{tutorials/addressbook/part4}{Editing and Removing Addresses}
- \o \l{tutorials/addressbook/part5}{Adding a Find Function}
- \o \l{tutorials/addressbook/part6}{Loading and Saving}
- \o \l{tutorials/addressbook/part7}{Additional Features}
+ \li \l{tutorials/addressbook/part1}{Designing the User Interface}
+ \li \l{tutorials/addressbook/part2}{Adding Addresses}
+ \li \l{tutorials/addressbook/part3}{Navigating between Entries}
+ \li \l{tutorials/addressbook/part4}{Editing and Removing Addresses}
+ \li \l{tutorials/addressbook/part5}{Adding a Find Function}
+ \li \l{tutorials/addressbook/part6}{Loading and Saving}
+ \li \l{tutorials/addressbook/part7}{Additional Features}
\endlist
The tutorial source code is located in \c{examples/tutorials/addressbook}.
There are three files used to implement this address book:
\list
- \o \c{addressbook.h} - the definition file for the \c AddressBook
+ \li \c{addressbook.h} - the definition file for the \c AddressBook
class,
- \o \c{addressbook.cpp} - the implementation file for the
+ \li \c{addressbook.cpp} - the implementation file for the
\c AddressBook class, and
- \o \c{main.cpp} - the file containing a \c main() function, with
+ \li \c{main.cpp} - the file containing a \c main() function, with
an instance of \c AddressBook.
\endlist
extend or change the behavior of a widget has the following advantages:
\list
- \o We can write implementations of virtual or pure virtual functions to
+ \li We can write implementations of virtual or pure virtual functions to
obtain exactly what we need, falling back on the base class's implementation
when necessary.
- \o It allows us to encapsulate parts of the user interface within a class,
+ \li It allows us to encapsulate parts of the user interface within a class,
so that the other parts of the application don't need to know about the
individual widgets in the user interface.
- \o The subclass can be used to create multiple custom widgets in the same
+ \li The subclass can be used to create multiple custom widgets in the same
application or library, and the code for the subclass can be reused in other
projects.
\endlist
The \c submitContact() function can be divided into three parts:
\list 1
- \o We extract the contact's details from \c nameLine and \c addressText
+ \li We extract the contact's details from \c nameLine and \c addressText
and store them in QString objects. We also validate to make sure that the
user did not click \gui Submit with empty input fields; otherwise, a
QMessageBox is displayed to remind the user for a name and address.
\snippet tutorials/addressbook/part2/addressbook.cpp submitContact part1
- \o We then proceed to check if the contact already exists. If it does not
+ \li We then proceed to check if the contact already exists. If it does not
exist, we add the contact to \c contacts and we display a QMessageBox to
inform the user that the contact has been added.
Our \c contacts object is based on key-value pairs of name and address,
hence, we want to ensure that \e key is unique.
- \o Once we have handled both cases mentioned above, we restore the push
+ \li Once we have handled both cases mentioned above, we restore the push
buttons to their normal state with the following code:
\snippet tutorials/addressbook/part2/addressbook.cpp submitContact part3
for \c contacts and then:
\list
- \o If the iterator is not at the end of \c contacts, we increment it
+ \li If the iterator is not at the end of \c contacts, we increment it
by one.
- \o If the iterator is at the end of \c contacts, we move it to the
+ \li If the iterator is at the end of \c contacts, we move it to the
beginning of \c contacts. This gives us the illusion that our QMap is
working like a circularly-linked list.
\endlist
\c contacts and then:
\list
- \o If the iterator is at the end of \c contacts, we clear the
+ \li If the iterator is at the end of \c contacts, we clear the
display and return.
- \o If the iterator is at the beginning of \c contacts, we move it to
+ \li If the iterator is at the beginning of \c contacts, we move it to
the end.
- \o We then decrement the iterator by one.
+ \li We then decrement the iterator by one.
\endlist
\snippet tutorials/addressbook/part3/addressbook.cpp previous() function
Here we define the \c Mode enum with three different values:
\list
- \o \c{NavigationMode},
- \o \c{AddingMode}, and
- \o \c{EditingMode}.
+ \li \c{NavigationMode},
+ \li \c{AddingMode}, and
+ \li \c{EditingMode}.
\endlist
\section1 Defining the AddressBook Class
such as:
\list
- \o The difference between standard and model/view widgets
- \o Adapters between forms and models
- \o Developing a simple model/view application
- \o Predefined models
- \o Intermediate topics such as:
+ \li The difference between standard and model/view widgets
+ \li Adapters between forms and models
+ \li Developing a simple model/view application
+ \li Predefined models
+ \li Intermediate topics such as:
\list
- \o Tree views
- \o Selection
- \o Delegates
- \o Debugging with model test
+ \li Tree views
+ \li Selection
+ \li Delegates
+ \li Debugging with model test
\endlist
\endlist
\table
\row
- \o Standard widgets use data that is part of the widget.
- \o \image standardwidget.png
+ \li Standard widgets use data that is part of the widget.
+ \li \image standardwidget.png
\row
- \o View classes operate on external data (the model)
- \o \image modelview.png
+ \li View classes operate on external data (the model)
+ \li \image modelview.png
\endtable
\section2 1.1 Standard Widgets
\table
\header
- \o Widget
- \o Standard Widget\br
+ \li Widget
+ \li Standard Widget\br
(an item based convenience class)
- \o Model/View View Class\br
+ \li Model/View View Class\br
(for use with external data)
\row
- \o \inlineimage listview.png
- \o \l QListWidget
- \o \l QListView
+ \li \inlineimage listview.png
+ \li \l QListWidget
+ \li \l QListView
\row
- \o \inlineimage tableview.png
- \o \l QTableWidget
- \o \l QTableView
+ \li \inlineimage tableview.png
+ \li \l QTableWidget
+ \li \l QTableView
\row
- \o \inlineimage treeview.png
- \o \l QTreeWidget
- \o \l QTreeView
+ \li \inlineimage treeview.png
+ \li \l QTreeWidget
+ \li \l QTreeView
\row
- \o \inlineimage columnview.png
- \o
- \o \l QColumnView shows a tree as a hierarchy of lists
+ \li \inlineimage columnview.png
+ \li
+ \li \l QColumnView shows a tree as a hierarchy of lists
\row
- \o \inlineimage modelview-combobox.png
- \o {2, 1} \l QComboBox can work as both a view class and also
+ \li \inlineimage modelview-combobox.png
+ \li {2, 1} \l QComboBox can work as both a view class and also
as a traditional widget
\endtable
things:
\list
- \o How many rows and columns should be displayed.
- \o What content should be printed into each cell.
+ \li How many rows and columns should be displayed.
+ \li What content should be printed into each cell.
\endlist
The model needs some code to respond to this.
\table
\header
- \o \l{Qt::ItemDataRole}{enum Qt::ItemDataRole}
- \o Meaning
- \o Type
+ \li \l{Qt::ItemDataRole}{enum Qt::ItemDataRole}
+ \li Meaning
+ \li Type
\row
- \o \l{Qt::ItemDataRole}{}Qt::DisplayRole
- \o text
- \o QString
+ \li \l{Qt::ItemDataRole}{}Qt::DisplayRole
+ \li text
+ \li QString
\row
- \o \l{Qt::ItemDataRole}{Qt::FontRole}
- \o font
- \o QFont
+ \li \l{Qt::ItemDataRole}{Qt::FontRole}
+ \li font
+ \li QFont
\row
- \o \l{Qt::ItemDataRole}{BackgroundRole}
- \o brush for the background of the cell
- \o QBrush
+ \li \l{Qt::ItemDataRole}{BackgroundRole}
+ \li brush for the background of the cell
+ \li QBrush
\row
- \o \l{Qt::ItemDataRole}{Qt::TextAlignmentRole}
- \o text alignment
- \o \l{Qt::AlignmentFlag}{enum Qt::AlignmentFlag}
+ \li \l{Qt::ItemDataRole}{Qt::TextAlignmentRole}
+ \li text alignment
+ \li \l{Qt::AlignmentFlag}{enum Qt::AlignmentFlag}
\row
- \o {1, 3} \l{Qt::ItemDataRole}{Qt::CheckStateRole}
- \o {1, 3} suppresses checkboxes with \l{QVariant}{QVariant()},
+ \li {1, 3} \l{Qt::ItemDataRole}{Qt::CheckStateRole}
+ \li {1, 3} suppresses checkboxes with \l{QVariant}{QVariant()},
sets checkboxes with \l{Qt::CheckState}{Qt::Checked}
or \l{Qt::CheckState}{Qt::Unchecked}
- \o {1, 3} \l{Qt::ItemDataRole}{enum Qt::ItemDataRole}
+ \li {1, 3} \l{Qt::ItemDataRole}{enum Qt::ItemDataRole}
\endtable
Refer to the Qt namespace documentation to learn more about the
\table
\row
- \o QStringListModel
- \o Stores a list of strings
+ \li QStringListModel
+ \li Stores a list of strings
\row
- \o QStandardItemModel
- \o Stores arbitrary hierarchical items
+ \li QStandardItemModel
+ \li Stores arbitrary hierarchical items
\row
- \o QFileSystemModel\br
+ \li QFileSystemModel\br
QDirModel
- \o Encapsulate the local file system
+ \li Encapsulate the local file system
\row
- \o QSqlQueryModel
- \o Encapsulate an SQL result set
+ \li QSqlQueryModel
+ \li Encapsulate an SQL result set
\row
- \o QSqlTableModel
- \o Encapsulates an SQL table
+ \li QSqlTableModel
+ \li Encapsulates an SQL table
\row
- \o QSqlRelationalTableModel
- \o Encapsulates an SQL table with foreign keys
+ \li QSqlRelationalTableModel
+ \li Encapsulates an SQL table with foreign keys
\row
- \o QSortFilterProxyModel
- \o Sorts and/or filters another model
+ \li QSortFilterProxyModel
+ \li Sorts and/or filters another model
\endtable
Other references to delegates in Qt Documentation:
\list
- \o \l{Spin Box Delegate Example}
- \o \l{QAbstractItemDelegate}{QAbstractItemDelegate Class Reference}
- \o \l{QSqlRelationalDelegate}{QSqlRelationalDelegate Class Reference}
- \o \l{QStyledItemDelegate}{QStyledItemDelegate Class Reference}
- \o \l{QItemDelegate}{QItemDelegate Class Reference}
+ \li \l{Spin Box Delegate Example}
+ \li \l{QAbstractItemDelegate}{QAbstractItemDelegate Class Reference}
+ \li \l{QSqlRelationalDelegate}{QSqlRelationalDelegate Class Reference}
+ \li \l{QStyledItemDelegate}{QStyledItemDelegate Class Reference}
+ \li \l{QItemDelegate}{QItemDelegate Class Reference}
\endlist
Qt but also in several good books.
\list 1
- \o \bold{C++ GUI Programming with Qt 4} / Jasmin Blanchette, Mark Summerfield,
+ \li \b{C++ GUI Programming with Qt 4} / Jasmin Blanchette, Mark Summerfield,
\e{Prentice Hall, 2nd edition}, ISBN 0-13-235416-0. Also available in
- German: \bold{C++ GUI Programmierung mit Qt 4: Die offizielle Einführung},
+ German: \b{C++ GUI Programmierung mit Qt 4: Die offizielle Einführung},
\e{Addison-Wesley}, ISBN 3-827327-29-6
- \o \bold{The Book of Qt4, The Art of Building Qt Applications} / Daniel Molkentin,
+ \li \b{The Book of Qt4, The Art of Building Qt Applications} / Daniel Molkentin,
\e{Open Source Press}, ISBN 1-59327-147-6.
- Translated from \bold{Qt 4, Einführung in die Applikationsentwicklung},
+ Translated from \b{Qt 4, Einführung in die Applikationsentwicklung},
\e{Open Source Press}, ISBN 3-937514-12-0.
- \o \bold{Foundations of Qt Development} / Johan Thelin, \e{Apress}, ISBN 1-59059-831-8.
- \o \bold{Advanced Qt Programming} / Mark Summerfield, \e{Prentice Hall}, ISBN 0-321-63590-6.
+ \li \b{Foundations of Qt Development} / Johan Thelin, \e{Apress}, ISBN 1-59059-831-8.
+ \li \b{Advanced Qt Programming} / Mark Summerfield, \e{Prentice Hall}, ISBN 0-321-63590-6.
This book covers Model/View programming on more than 150 pages.
\endlist
\table
\header
- \o Example name
- \o View class used
- \o Model used
- \o Aspects covered
- \o
- \row
- \o Team Leaders
- \o QListview
- \o QStringListModel
- \o
- \o Book 1, Chapter 10, Figure 10.6
- \row
- \o Directory Viewer
- \o QTreeView
- \o QDirModel
- \o
- \o Book 1, Chapter 10, Figure 10.7
- \row
- \o Color Names
- \o QListView
- \o QSortFilterProxyModel
+ \li Example name
+ \li View class used
+ \li Model used
+ \li Aspects covered
+ \li
+ \row
+ \li Team Leaders
+ \li QListview
+ \li QStringListModel
+ \li
+ \li Book 1, Chapter 10, Figure 10.6
+ \row
+ \li Directory Viewer
+ \li QTreeView
+ \li QDirModel
+ \li
+ \li Book 1, Chapter 10, Figure 10.7
+ \row
+ \li Color Names
+ \li QListView
+ \li QSortFilterProxyModel
applied to QStringListModel
- \o
- \o Book 1, Chapter 10, Figure 10.8
+ \li
+ \li Book 1, Chapter 10, Figure 10.8
\row
- \o Currencies
- \o QTableView
- \o custom model based on
+ \li Currencies
+ \li QTableView
+ \li custom model based on
QAbstractTableModel
- \o Read only
- \o Book 1, Chapter 10, Figure 10.10
+ \li Read only
+ \li Book 1, Chapter 10, Figure 10.10
\row
- \o Cities
- \o QTableView
- \o Custom model based on
+ \li Cities
+ \li QTableView
+ \li Custom model based on
QAbstractTableModel
- \o Read / write
- \o Book 1, Chapter 10, Figure 10.12
+ \li Read / write
+ \li Book 1, Chapter 10, Figure 10.12
\row
- \o Boolean Parser
- \o QTreeView
- \o Custom model based on
+ \li Boolean Parser
+ \li QTreeView
+ \li Custom model based on
QAbstractItemModel
- \o Read only
- \o Book 1, Chapter 10, Figure 10.14
+ \li Read only
+ \li Book 1, Chapter 10, Figure 10.14
\row
- \o Track Editor
- \o {2, 1} QTableWidget
- \o Custom delegate providing a custom editor
- \o Book 1, Chapter 10, Figure 10.15
+ \li Track Editor
+ \li {2, 1} QTableWidget
+ \li Custom delegate providing a custom editor
+ \li Book 1, Chapter 10, Figure 10.15
\row
- \o Four directory views
- \o QListView
+ \li Four directory views
+ \li QListView
QTableView
QTreeView
- \o QDirModel
- \o Demonstrates the use of multiple views
- \o Book2, Chapter 8.2
+ \li QDirModel
+ \li Demonstrates the use of multiple views
+ \li Book2, Chapter 8.2
\row
- \o Address Book
- \o QListView
+ \li Address Book
+ \li QListView
QTableView
QTreeView
- \o Custom model based on
+ \li Custom model based on
QAbstractTableModel
- \o Read / write
- \o Book2, Chapter 8.4
+ \li Read / write
+ \li Book2, Chapter 8.4
\row
- \o Address Book with sorting
- \o
- \o QProxyModel
- \o Introducing sort and filter capabilities
- \o Book2, Chapter 8.5
+ \li Address Book with sorting
+ \li
+ \li QProxyModel
+ \li Introducing sort and filter capabilities
+ \li Book2, Chapter 8.5
\row
- \o Address Book
+ \li Address Book
with checkboxes
- \o
- \o
- \o Introducing checkboxes in model/view
- \o Book2, Chapter 8.6
- \row
- \o Address Book with transposed grid
- \o
- \o Custom proxy Model based on QAbstractProxyModel
- \o Introducing a custom model
- \o Book2, Chapter 8.7
- \row
- \o Address Book with drag and drop
- \o
- \o
- \o Introducing drag and drop support
- \o Book2, Chapter 8.8
- \row
- \o Address Book with custom editor
- \o
- \o
- \o Introducing custom delegates
- \o Book2, Chapter 8.9
- \row
- \o Views
- \o QListView
+ \li
+ \li
+ \li Introducing checkboxes in model/view
+ \li Book2, Chapter 8.6
+ \row
+ \li Address Book with transposed grid
+ \li
+ \li Custom proxy Model based on QAbstractProxyModel
+ \li Introducing a custom model
+ \li Book2, Chapter 8.7
+ \row
+ \li Address Book with drag and drop
+ \li
+ \li
+ \li Introducing drag and drop support
+ \li Book2, Chapter 8.8
+ \row
+ \li Address Book with custom editor
+ \li
+ \li
+ \li Introducing custom delegates
+ \li Book2, Chapter 8.9
+ \row
+ \li Views
+ \li QListView
QTableView
QTreeView
- \o QStandardItemModel
- \o Read only
- \o Book 3, Chapter 5, figure 5-3
- \row
- \o Bardelegate
- \o QTableView
- \o
- \o Custom delegate for presentation based on QAbstractItemDelegate
- \o Book 3, Chapter 5, figure 5-5
- \row
- \o Editdelegate
- \o QTableView
- \o
- \o Custom delegate for editing based on QAbstractItemDelegate
- \o Book 3, Chapter 5, figure 5-6
- \row
- \o Singleitemview
- \o Custom view based on QAbstractItemView
- \o
- \o Custom view
- \o Book 3,
+ \li QStandardItemModel
+ \li Read only
+ \li Book 3, Chapter 5, figure 5-3
+ \row
+ \li Bardelegate
+ \li QTableView
+ \li
+ \li Custom delegate for presentation based on QAbstractItemDelegate
+ \li Book 3, Chapter 5, figure 5-5
+ \row
+ \li Editdelegate
+ \li QTableView
+ \li
+ \li Custom delegate for editing based on QAbstractItemDelegate
+ \li Book 3, Chapter 5, figure 5-6
+ \row
+ \li Singleitemview
+ \li Custom view based on QAbstractItemView
+ \li
+ \li Custom view
+ \li Book 3,
Chapter 5,
figure 5-7
\row
- \o listmodel
- \o QTableView
- \o Custom Model based on QAbstractTableModel
- \o Read only
- \o Book 3, Chapter 5, Figure 5-8
- \row
- \o treemodel
- \o QTreeView
- \o Custom Model based on QAbstractItemModel
- \o Read only
- \o Book 3, Chapter 5, Figure 5-10
- \row
- \o edit integers
- \o QListView
- \o Custom Model based on QAbstractListModel
- \o Read / write
- \o Book 3, Chapter 5, Listing 5-37, Figure 5-11
- \row
- \o sorting
- \o QTableView
- \o QSortFilterProxyModel applied to QStringListModel
- \o Demonstrates sorting
- \o Book 3, Chapter 5, Figure 5-12
+ \li listmodel
+ \li QTableView
+ \li Custom Model based on QAbstractTableModel
+ \li Read only
+ \li Book 3, Chapter 5, Figure 5-8
+ \row
+ \li treemodel
+ \li QTreeView
+ \li Custom Model based on QAbstractItemModel
+ \li Read only
+ \li Book 3, Chapter 5, Figure 5-10
+ \row
+ \li edit integers
+ \li QListView
+ \li Custom Model based on QAbstractListModel
+ \li Read / write
+ \li Book 3, Chapter 5, Listing 5-37, Figure 5-11
+ \row
+ \li sorting
+ \li QTableView
+ \li QSortFilterProxyModel applied to QStringListModel
+ \li Demonstrates sorting
+ \li Book 3, Chapter 5, Figure 5-12
\endtable
\table
\header
- \o Example name
- \o View class used
- \o Model used
- \o Aspects covered
- \row
- \o Address Book
- \o QTableView
- \o QAbstractTableModel
+ \li Example name
+ \li View class used
+ \li Model used
+ \li Aspects covered
+ \row
+ \li Address Book
+ \li QTableView
+ \li QAbstractTableModel
QSortFilterProxyModel
- \o Usage of QSortFilterProxyModel to generate different
+ \li Usage of QSortFilterProxyModel to generate different
subsets from one data pool
\row
- \o Basic Sort/Filter Model
- \o QTreeView
- \o QStandardItemModel
+ \li Basic Sort/Filter Model
+ \li QTreeView
+ \li QStandardItemModel
QSortFilterProxyModel
- \o
+ \li
\row
- \o Chart
- \o Custom view
- \o QStandardItemModel
- \o Designing custom views that cooperate with selection models
+ \li Chart
+ \li Custom view
+ \li QStandardItemModel
+ \li Designing custom views that cooperate with selection models
\row
- \o Color Editor Factory
- \o {2, 1} QTableWidget
- \o Enhancing the standard delegate with a new custom editor to choose colours
+ \li Color Editor Factory
+ \li {2, 1} QTableWidget
+ \li Enhancing the standard delegate with a new custom editor to choose colours
\row
- \o Combo Widget Mapper
- \o QDataWidgetMapper to map QLineEdit, QTextEdit and QComboBox
- \o QStandardItemModel
- \o Shows how a QComboBox can serve as a view class
+ \li Combo Widget Mapper
+ \li QDataWidgetMapper to map QLineEdit, QTextEdit and QComboBox
+ \li QStandardItemModel
+ \li Shows how a QComboBox can serve as a view class
\row
- \o Custom Sort/Filter Model
- \o QTreeView
- \o QStandardItemModel
+ \li Custom Sort/Filter Model
+ \li QTreeView
+ \li QStandardItemModel
QSortFilterProxyModel
- \o Subclass QSortFilterProxyModel for advanced sorting and filtering
+ \li Subclass QSortFilterProxyModel for advanced sorting and filtering
\row
- \o Dir View
- \o QTreeView
- \o QDirModel
- \o Very small example to demonstrate how to assign a model to a view
+ \li Dir View
+ \li QTreeView
+ \li QDirModel
+ \li Very small example to demonstrate how to assign a model to a view
\row
- \o Editable Tree Model
- \o QTreeView
- \o Custom tree model
- \o Comprehensive example for working with trees, demonstrates
+ \li Editable Tree Model
+ \li QTreeView
+ \li Custom tree model
+ \li Comprehensive example for working with trees, demonstrates
editing cells and tree structure with an underlying custom
model
\row
- \o Fetch More
- \o QListView
- \o Custom list model
- \o Dynamically changing model
- \row
- \o Frozen Column
- \o QTableView
- \o QStandardItemModel
- \o
- \row
- \o Interview
- \o Multiple
- \o Custom item model
- \o Multiple views
- \row
- \o Pixelator
- \o QTableView
- \o Custom table model
- \o Implementation of a custom delegate
- \row
- \o Puzzle
- \o QListView
- \o Custom list model
- \o Model/view with drag and drop
- \row
- \o Simple DOM Model
- \o QTreeView
- \o Custom tree model
- \o Read only example for a custom tree model
- \row
- \o Simple Tree Model
- \o QTreeView
- \o Custom tree model
- \o Read only example for a custom tree model
- \row
- \o Simple Widget Mapper
- \o QDataWidgetMapper to map QLineEdit, QTextEdit and QSpinBox
- \o QStandardItemModel
- \o Basic QDataWidgetMapper usage
- \row
- \o Spin Box Delegate
- \o QTableView
- \o QStandardItemModel
- \o Custom delegate that uses a spin box as a cell editor
- \row
- \o Spreadsheet
- \o {2, 1} QTableView
- \o Custom delegates
- \row
- \o Star Delegate
- \o {2, 1} QTableWidget
- \o Comprehensive custom delegate example.
+ \li Fetch More
+ \li QListView
+ \li Custom list model
+ \li Dynamically changing model
+ \row
+ \li Frozen Column
+ \li QTableView
+ \li QStandardItemModel
+ \li
+ \row
+ \li Interview
+ \li Multiple
+ \li Custom item model
+ \li Multiple views
+ \row
+ \li Pixelator
+ \li QTableView
+ \li Custom table model
+ \li Implementation of a custom delegate
+ \row
+ \li Puzzle
+ \li QListView
+ \li Custom list model
+ \li Model/view with drag and drop
+ \row
+ \li Simple DOM Model
+ \li QTreeView
+ \li Custom tree model
+ \li Read only example for a custom tree model
+ \row
+ \li Simple Tree Model
+ \li QTreeView
+ \li Custom tree model
+ \li Read only example for a custom tree model
+ \row
+ \li Simple Widget Mapper
+ \li QDataWidgetMapper to map QLineEdit, QTextEdit and QSpinBox
+ \li QStandardItemModel
+ \li Basic QDataWidgetMapper usage
+ \row
+ \li Spin Box Delegate
+ \li QTableView
+ \li QStandardItemModel
+ \li Custom delegate that uses a spin box as a cell editor
+ \row
+ \li Spreadsheet
+ \li {2, 1} QTableView
+ \li Custom delegates
+ \row
+ \li Star Delegate
+ \li {2, 1} QTableWidget
+ \li Comprehensive custom delegate example.
\endtable
A \l{Model/View Programming}{reference document} for model/view technology
\list 1
- \o The user presses \key Tab (or \key Shift+Tab).
- \o The user clicks a widget.
- \o The user presses a keyboard shortcut.
- \o The user uses the mouse wheel.
- \o The user moves the focus to a window, and the application must
+ \li The user presses \key Tab (or \key Shift+Tab).
+ \li The user clicks a widget.
+ \li The user presses a keyboard shortcut.
+ \li The user uses the mouse wheel.
+ \li The user moves the focus to a window, and the application must
determine which widget within the window should get the focus.
\endlist
\list 1
- \o If the program can determine whether the field is needed, it can
+ \li If the program can determine whether the field is needed, it can
move focus there when the user finishes entry and presses \gui OK, or when
the user presses Enter after finishing the other fields. Alternately,
include the field in the tab order but disable it. Enable it if it
becomes appropriate in view of what the user has set in the other
fields.
- \o The label for the field can include a keyboard shortcut that moves
+ \li The label for the field can include a keyboard shortcut that moves
focus to this field.
\endlist
\table 100%
\row
-\o \image cde-checkbox.png
+\li \image cde-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image cde-radiobutton.png
+\li \image cde-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
-\o \image cde-pushbutton.png
+\li \image cde-pushbutton.png
\image cde-toolbutton.png
\caption The QPushButton widget provides a command button.
\endtable
\table 100%
\row
-\o \image cde-groupbox.png
+\li \image cde-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image cde-tabwidget.png
+\li \image cde-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image cde-frame.png
+\li \image cde-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image cde-toolbox.png
+\li \image cde-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image cde-listview.png
+\li \image cde-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image cde-treeview.png
+\li \image cde-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image cde-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image cde-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image cde-progressbar.png
+\li \image cde-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image cde-label.png
+\li \image cde-label.png
The QLabel widget provides a text or image display.
-\o \image cde-lcdnumber.png
+\li \image cde-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image cde-lineedit.png
+\li \image cde-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image cde-dateedit.png
+\li \image cde-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image cde-timeedit.png
+\li \image cde-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image cde-datetimeedit.png
+\li \image cde-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image cde-slider.png
+\li \image cde-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image cde-combobox.png
+\li \image cde-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image cde-spinbox.png
+\li \image cde-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image cde-fontcombobox.png
+\li \image cde-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image cde-doublespinbox.png
+\li \image cde-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image cde-horizontalscrollbar.png
+\li \image cde-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image cde-dial.png
+\li \image cde-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image cde-textedit.png
+\li \image cde-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image cde-calendarwidget.png
+\li \image cde-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
\table 100%
\row
-\o \image cleanlooks-pushbutton.png
+\li \image cleanlooks-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image cleanlooks-toolbutton.png
+\li \image cleanlooks-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image cleanlooks-checkbox.png
+\li \image cleanlooks-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image cleanlooks-radiobutton.png
+\li \image cleanlooks-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image cleanlooks-groupbox.png
+\li \image cleanlooks-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image cleanlooks-tabwidget.png
+\li \image cleanlooks-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image cleanlooks-frame.png
+\li \image cleanlooks-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image cleanlooks-toolbox.png
+\li \image cleanlooks-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image cleanlooks-listview.png
+\li \image cleanlooks-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image cleanlooks-treeview.png
+\li \image cleanlooks-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image cleanlooks-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image cleanlooks-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image cleanlooks-progressbar.png
+\li \image cleanlooks-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image cleanlooks-label.png
+\li \image cleanlooks-label.png
The QLabel widget provides a text or image display.
-\o \image cleanlooks-lcdnumber.png
+\li \image cleanlooks-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image cleanlooks-lineedit.png
+\li \image cleanlooks-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image cleanlooks-dateedit.png
+\li \image cleanlooks-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image cleanlooks-timeedit.png
+\li \image cleanlooks-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image cleanlooks-datetimeedit.png
+\li \image cleanlooks-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image cleanlooks-slider.png
+\li \image cleanlooks-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image cleanlooks-combobox.png
+\li \image cleanlooks-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image cleanlooks-spinbox.png
+\li \image cleanlooks-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image cleanlooks-fontcombobox.png
+\li \image cleanlooks-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image cleanlooks-doublespinbox.png
+\li \image cleanlooks-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image cleanlooks-horizontalscrollbar.png
+\li \image cleanlooks-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image cleanlooks-dial.png
+\li \image cleanlooks-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image cleanlooks-textedit.png
+\li \image cleanlooks-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image cleanlooks-calendarwidget.png
+\li \image cleanlooks-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image gtk-pushbutton.png
+\li \image gtk-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image gtk-toolbutton.png
+\li \image gtk-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image gtk-checkbox.png
+\li \image gtk-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image gtk-radiobutton.png
+\li \image gtk-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image gtk-groupbox.png
+\li \image gtk-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image gtk-tabwidget.png
+\li \image gtk-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image gtk-frame.png
+\li \image gtk-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image gtk-toolbox.png
+\li \image gtk-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image gtk-listview.png
+\li \image gtk-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image gtk-treeview.png
+\li \image gtk-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image gtk-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image gtk-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image gtk-progressbar.png
+\li \image gtk-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image gtk-label.png
+\li \image gtk-label.png
The QLabel widget provides a text or image display.
-\o \image gtk-lcdnumber.png
+\li \image gtk-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image gtk-lineedit.png
+\li \image gtk-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image gtk-dateedit.png
+\li \image gtk-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image gtk-timeedit.png
+\li \image gtk-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image gtk-datetimeedit.png
+\li \image gtk-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image gtk-slider.png
+\li \image gtk-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image gtk-combobox.png
+\li \image gtk-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image gtk-spinbox.png
+\li \image gtk-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image gtk-fontcombobox.png
+\li \image gtk-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image gtk-doublespinbox.png
+\li \image gtk-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image gtk-horizontalscrollbar.png
+\li \image gtk-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image gtk-dial.png
+\li \image gtk-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image gtk-textedit.png
+\li \image gtk-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image gtk-calendarwidget.png
+\li \image gtk-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image macintosh-pushbutton.png
+\li \image macintosh-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image macintosh-toolbutton.png
+\li \image macintosh-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image macintosh-checkbox.png
+\li \image macintosh-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image macintosh-radiobutton.png
+\li \image macintosh-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image macintosh-groupbox.png
+\li \image macintosh-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image macintosh-tabwidget.png
+\li \image macintosh-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image macintosh-frame.png
+\li \image macintosh-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image macintosh-toolbox.png
+\li \image macintosh-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image macintosh-listview.png
+\li \image macintosh-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image macintosh-treeview.png
+\li \image macintosh-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image macintosh-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image macintosh-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image macintosh-progressbar.png
+\li \image macintosh-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image macintosh-label.png
+\li \image macintosh-label.png
The QLabel widget provides a text or image display.
-\o \image macintosh-lcdnumber.png
+\li \image macintosh-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image macintosh-lineedit.png
+\li \image macintosh-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image macintosh-dateedit.png
+\li \image macintosh-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image macintosh-timeedit.png
+\li \image macintosh-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image macintosh-datetimeedit.png
+\li \image macintosh-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image macintosh-slider.png
+\li \image macintosh-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image macintosh-combobox.png
+\li \image macintosh-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image macintosh-spinbox.png
+\li \image macintosh-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image macintosh-fontcombobox.png
+\li \image macintosh-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image macintosh-doublespinbox.png
+\li \image macintosh-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image macintosh-horizontalscrollbar.png
+\li \image macintosh-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image macintosh-dial.png
+\li \image macintosh-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image macintosh-textedit.png
+\li \image macintosh-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image macintosh-calendarwidget.png
+\li \image macintosh-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image motif-pushbutton.png
+\li \image motif-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image motif-toolbutton.png
+\li \image motif-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image motif-checkbox.png
+\li \image motif-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image motif-radiobutton.png
+\li \image motif-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image motif-groupbox.png
+\li \image motif-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image motif-tabwidget.png
+\li \image motif-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image motif-frame.png
+\li \image motif-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image motif-toolbox.png
+\li \image motif-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image motif-listview.png
+\li \image motif-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image motif-treeview.png
+\li \image motif-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image motif-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image motif-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image motif-progressbar.png
+\li \image motif-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image motif-label.png
+\li \image motif-label.png
The QLabel widget provides a text or image display.
-\o \image motif-lcdnumber.png
+\li \image motif-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image motif-lineedit.png
+\li \image motif-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image motif-dateedit.png
+\li \image motif-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image motif-timeedit.png
+\li \image motif-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image motif-datetimeedit.png
+\li \image motif-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image motif-slider.png
+\li \image motif-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image motif-combobox.png
+\li \image motif-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image motif-spinbox.png
+\li \image motif-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image motif-fontcombobox.png
+\li \image motif-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image motif-doublespinbox.png
+\li \image motif-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image motif-horizontalscrollbar.png
+\li \image motif-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image motif-dial.png
+\li \image motif-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image motif-textedit.png
+\li \image motif-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image motif-calendarwidget.png
+\li \image motif-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image plastique-pushbutton.png
+\li \image plastique-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image plastique-toolbutton.png
+\li \image plastique-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image plastique-checkbox.png
+\li \image plastique-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image plastique-radiobutton.png
+\li \image plastique-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image plastique-groupbox.png
+\li \image plastique-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image plastique-tabwidget.png
+\li \image plastique-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image plastique-frame.png
+\li \image plastique-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image plastique-toolbox.png
+\li \image plastique-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image plastique-listview.png
+\li \image plastique-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image plastique-treeview.png
+\li \image plastique-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image plastique-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image plastique-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image plastique-progressbar.png
+\li \image plastique-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image plastique-label.png
+\li \image plastique-label.png
The QLabel widget provides a text or image display.
-\o \image plastique-lcdnumber.png
+\li \image plastique-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image plastique-lineedit.png
+\li \image plastique-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image plastique-dateedit.png
+\li \image plastique-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image plastique-timeedit.png
+\li \image plastique-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image plastique-datetimeedit.png
+\li \image plastique-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image plastique-slider.png
+\li \image plastique-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image plastique-combobox.png
+\li \image plastique-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image plastique-spinbox.png
+\li \image plastique-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image plastique-fontcombobox.png
+\li \image plastique-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image plastique-doublespinbox.png
+\li \image plastique-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image plastique-horizontalscrollbar.png
+\li \image plastique-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image plastique-dial.png
+\li \image plastique-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image plastique-textedit.png
+\li \image plastique-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image plastique-calendarwidget.png
+\li \image plastique-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image windows-pushbutton.png
+\li \image windows-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image windows-toolbutton.png
+\li \image windows-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image windows-checkbox.png
+\li \image windows-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image windows-radiobutton.png
+\li \image windows-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image windows-groupbox.png
+\li \image windows-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image windows-tabwidget.png
+\li \image windows-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image windows-frame.png
+\li \image windows-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image windows-toolbox.png
+\li \image windows-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image windows-listview.png
+\li \image windows-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image windows-treeview.png
+\li \image windows-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image windows-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image windows-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image windows-progressbar.png
+\li \image windows-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image windows-label.png
+\li \image windows-label.png
The QLabel widget provides a text or image display.
-\o \image windows-lcdnumber.png
+\li \image windows-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image windows-lineedit.png
+\li \image windows-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image windows-dateedit.png
+\li \image windows-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image windows-timeedit.png
+\li \image windows-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image windows-datetimeedit.png
+\li \image windows-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image windows-slider.png
+\li \image windows-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image windows-combobox.png
+\li \image windows-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image windows-spinbox.png
+\li \image windows-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image windows-fontcombobox.png
+\li \image windows-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image windows-doublespinbox.png
+\li \image windows-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image windows-horizontalscrollbar.png
+\li \image windows-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image windows-dial.png
+\li \image windows-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image windows-textedit.png
+\li \image windows-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image windows-calendarwidget.png
+\li \image windows-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image windowsvista-pushbutton.png
+\li \image windowsvista-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image windowsvista-toolbutton.png
+\li \image windowsvista-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image windowsvista-checkbox.png
+\li \image windowsvista-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image windowsvista-radiobutton.png
+\li \image windowsvista-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image windowsvista-groupbox.png
+\li \image windowsvista-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image windowsvista-tabwidget.png
+\li \image windowsvista-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image windowsvista-frame.png
+\li \image windowsvista-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image windowsvista-toolbox.png
+\li \image windowsvista-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image windowsvista-listview.png
+\li \image windowsvista-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image windowsvista-treeview.png
+\li \image windowsvista-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image windowsvista-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image windowsvista-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image windowsvista-progressbar.png
+\li \image windowsvista-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image windowsvista-label.png
+\li \image windowsvista-label.png
The QLabel widget provides a text or image display.
-\o \image windowsvista-lcdnumber.png
+\li \image windowsvista-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image windowsvista-lineedit.png
+\li \image windowsvista-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image windowsvista-dateedit.png
+\li \image windowsvista-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image windowsvista-timeedit.png
+\li \image windowsvista-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image windowsvista-datetimeedit.png
+\li \image windowsvista-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image windowsvista-slider.png
+\li \image windowsvista-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image windowsvista-combobox.png
+\li \image windowsvista-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image windowsvista-spinbox.png
+\li \image windowsvista-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image windowsvista-fontcombobox.png
+\li \image windowsvista-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image windowsvista-doublespinbox.png
+\li \image windowsvista-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image windowsvista-horizontalscrollbar.png
+\li \image windowsvista-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image windowsvista-dial.png
+\li \image windowsvista-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image windowsvista-textedit.png
+\li \image windowsvista-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image windowsvista-calendarwidget.png
+\li \image windowsvista-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table 100%
\row
-\o \image windowsxp-pushbutton.png
+\li \image windowsxp-pushbutton.png
\caption The QPushButton widget provides a command button.
-\o \image windowsxp-toolbutton.png
+\li \image windowsxp-toolbutton.png
\caption The QToolButton class provides a quick-access button to commands
or options, usually used inside a QToolBar.
\endtable
\table 100%
\row
-\o \image windowsxp-checkbox.png
+\li \image windowsxp-checkbox.png
\caption The QCheckBox widget provides a checkbox with a text label.
-\o \image windowsxp-radiobutton.png
+\li \image windowsxp-radiobutton.png
\caption The QRadioButton widget provides a radio button with a text or pixmap label.
\endtable
\table 100%
\row
-\o \image windowsxp-groupbox.png
+\li \image windowsxp-groupbox.png
The The QGroupBox widget provides a group box frame with a title.
-\o \image windowsxp-tabwidget.png
+\li \image windowsxp-tabwidget.png
The QTabWidget class provides a stack of tabbed widgets.
-\o \image windowsxp-frame.png
+\li \image windowsxp-frame.png
The QFrame widget provides a simple decorated container for other widgets.
-\o \image windowsxp-toolbox.png
+\li \image windowsxp-toolbox.png
The QToolBox class provides a column of tabbed widget items.
\endtable
\table 100%
\row
-\o \image windowsxp-listview.png
+\li \image windowsxp-listview.png
The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.
-\o \image windowsxp-treeview.png
+\li \image windowsxp-treeview.png
The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.
-\o \image windowsxp-tableview.png
- The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\o
-\o
+\li \image windowsxp-tableview.png
+ The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\li
+\li
\endtable
\section2 Display Widgets
\table 100%
\row
-\o \image windowsxp-progressbar.png
+\li \image windowsxp-progressbar.png
The QProgressBar widget provides a horizontal progress bar.
-\o \image windowsxp-label.png
+\li \image windowsxp-label.png
The QLabel widget provides a text or image display.
-\o \image windowsxp-lcdnumber.png
+\li \image windowsxp-lcdnumber.png
The QLCDNumber widget displays a number with LCD-like digits.
\endtable
\table 100%
\row
-\o \image windowsxp-lineedit.png
+\li \image windowsxp-lineedit.png
The QLineEdit widget is a one-line text editor.
-\o \image windowsxp-dateedit.png
+\li \image windowsxp-dateedit.png
The QDateEdit class provides a widget for editing dates.
-\o \image windowsxp-timeedit.png
+\li \image windowsxp-timeedit.png
The QTimeEdit class provides a widget for editing times.
-\o \image windowsxp-datetimeedit.png
+\li \image windowsxp-datetimeedit.png
The QDateTimeEdit class provides a widget for editing dates and times.
\endtable
\table 100%
\row
-\o \image windowsxp-slider.png
+\li \image windowsxp-slider.png
The QSlider widget provides a vertical or horizontal slider.
-\o \image windowsxp-combobox.png
+\li \image windowsxp-combobox.png
The QComboBox widget is a combined button and pop-up list.
-\o \image windowsxp-spinbox.png
+\li \image windowsxp-spinbox.png
The QSpinBox class provides a spin box widget.
\endtable
\table 100%
\row
-\o \image windowsxp-fontcombobox.png
+\li \image windowsxp-fontcombobox.png
The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.
-\o \image windowsxp-doublespinbox.png
+\li \image windowsxp-doublespinbox.png
The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.
-\o \image windowsxp-horizontalscrollbar.png
+\li \image windowsxp-horizontalscrollbar.png
The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.
\endtable
\table 100%
\row
-\o \image windowsxp-dial.png
+\li \image windowsxp-dial.png
The QDial class provides a rounded range control (like a speedometer or potentiometer).
-\o \image windowsxp-textedit.png
+\li \image windowsxp-textedit.png
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
-\o \image windowsxp-calendarwidget.png
+\li \image windowsxp-calendarwidget.png
The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.
\endtable
*/
\table
\row
- \o \image plastique-tabwidget.png Plastique Style Widget Gallery
+ \li \image plastique-tabwidget.png Plastique Style Widget Gallery
\caption \l{Plastique Style Widget Gallery}
The Plastique style is provided by QPlastiqueStyle.
- \o \image windowsxp-tabwidget.png Windows XP Style Widget Gallery
+ \li \image windowsxp-tabwidget.png Windows XP Style Widget Gallery
\caption \l{Windows XP Style Widget Gallery}
The Windows XP style is provided by QWindowsXPStyle.
- \o \image windows-tabwidget.png Windows Style Widget Gallery
+ \li \image windows-tabwidget.png Windows Style Widget Gallery
\caption \l{Windows Style Widget Gallery}
The Windows style is provided by QWindowsStyle.
\table
\row
- \o \image macintosh-tabwidget.png Macintosh Style Widget Gallery
+ \li \image macintosh-tabwidget.png Macintosh Style Widget Gallery
\caption \l{Macintosh Style Widget Gallery}
The Macintosh style is provided by QMacStyle.
- \o \image cleanlooks-tabwidget.png Cleanlooks Style Widget Gallery
+ \li \image cleanlooks-tabwidget.png Cleanlooks Style Widget Gallery
\caption \l{Cleanlooks Style Widget Gallery}
The Cleanlooks style is provided by QCleanlooksStyle.
- \o \image windowsvista-tabwidget.png Windows Vista Style Widget Gallery
+ \li \image windowsvista-tabwidget.png Windows Vista Style Widget Gallery
\caption \l{Windows Vista Style Widget Gallery}
The Windows Vista style is provided by QWindowsVistaStyle.
\table
\row
- \o \image gtk-tabwidget.png GTK Style Widget Gallery
+ \li \image gtk-tabwidget.png GTK Style Widget Gallery
\caption \l{GTK Style Widget Gallery}
The GTK style is provided by QGtkStyle.
- \o \image motif-tabwidget.png Motif Style Widget Gallery
+ \li \image motif-tabwidget.png Motif Style Widget Gallery
\caption \l{Motif Style Widget Gallery}
The Motif style is provided by QMotifStyle.
- \o \image cde-tabwidget.png CDE Style Widget Gallery
+ \li \image cde-tabwidget.png CDE Style Widget Gallery
\caption \l{CDE Style Widget Gallery}
The Common Desktop Environment style is provided by QCDEStyle.
is set on a widget in this way, it takes charge of the following tasks:
\list
- \o Positioning of child widgets.
- \o Sensible default sizes for windows.
- \o Sensible minimum sizes for windows.
- \o Resize handling.
- \o Automatic updates when contents change:
+ \li Positioning of child widgets.
+ \li Sensible default sizes for windows.
+ \li Sensible minimum sizes for windows.
+ \li Resize handling.
+ \li Automatic updates when contents change:
\list
- \o Font size, text or other contents of child widgets.
- \o Hiding or showing a child widget.
- \o Removal of child widgets.
+ \li Font size, text or other contents of child widgets.
+ \li Hiding or showing a child widget.
+ \li Removal of child widgets.
\endlist
\endlist
create more complex layouts, you can nest layout managers inside each other.
\list
- \o A QHBoxLayout lays out widgets in a horizontal row, from left to
+ \li A QHBoxLayout lays out widgets in a horizontal row, from left to
right (or right to left for right-to-left languages).
\image qhboxlayout-with-5-children.png
- \o A QVBoxLayout lays out widgets in a vertical column, from top to
+ \li A QVBoxLayout lays out widgets in a vertical column, from top to
bottom.
\image qvboxlayout-with-5-children.png
- \o A QGridLayout lays out widgets in a two-dimensional grid. Widgets
+ \li A QGridLayout lays out widgets in a two-dimensional grid. Widgets
can occupy multiple cells.
\image qgridlayout-with-5-children.png
- \o A QFormLayout lays out widgets in a 2-column descriptive label-
+ \li A QFormLayout lays out widgets in a 2-column descriptive label-
field style.
\image qformlayout-with-6-children.png
\endlist
When you add widgets to a layout, the layout process works as follows:
\list 1
- \o All the widgets will initially be allocated an amount of space in
+ \li All the widgets will initially be allocated an amount of space in
accordance with their QWidget::sizePolicy() and
QWidget::sizeHint().
- \o If any of the widgets have stretch factors set, with a value
+ \li If any of the widgets have stretch factors set, with a value
greater than zero, then they are allocated space in proportion to
their stretch factor (explained below).
- \o If any of the widgets have stretch factors set to zero they will
+ \li If any of the widgets have stretch factors set to zero they will
only get more space if no other widgets want the space. Of these,
space is allocated to widgets with an
\l{QSizePolicy::Expanding}{Expanding} size policy first.
- \o Any widgets that are allocated less space than their minimum size
+ \li Any widgets that are allocated less space than their minimum size
(or minimum size hint if no minimum size is specified) are
allocated this minimum size they require. (Widgets don't have to
have a minimum size or minimum size hint in which case the stretch
factor is their determining factor.)
- \o Any widgets that are allocated more space than their maximum size
+ \li Any widgets that are allocated more space than their maximum size
are allocated the maximum size space they require. (Widgets do not
have to have a maximum size in which case the stretch factor is
their determining factor.)
following mechanisms:
\list
- \o Reimplement QWidget::sizeHint() to return the preferred size of the
+ \li Reimplement QWidget::sizeHint() to return the preferred size of the
widget.
- \o Reimplement QWidget::minimumSizeHint() to return the smallest size
+ \li Reimplement QWidget::minimumSizeHint() to return the smallest size
the widget can have.
- \o Call QWidget::setSizePolicy() to specify the space requirements of
+ \li Call QWidget::setSizePolicy() to specify the space requirements of
the widget.
\endlist
To write your own layout class, you must define the following:
\list
- \o A data structure to store the items handled by the layout. Each
+ \li A data structure to store the items handled by the layout. Each
item is a \link QLayoutItem QLayoutItem\endlink. We will use a
QList in this example.
- \o \l{QLayout::}{addItem()}, how to add items to the layout.
- \o \l{QLayout::}{setGeometry()}, how to perform the layout.
- \o \l{QLayout::}{sizeHint()}, the preferred size of the layout.
- \o \l{QLayout::}{itemAt()}, how to iterate over the layout.
- \o \l{QLayout::}{takeAt()}, how to remove items from the layout.
+ \li \l{QLayout::}{addItem()}, how to add items to the layout.
+ \li \l{QLayout::}{setGeometry()}, how to perform the layout.
+ \li \l{QLayout::}{sizeHint()}, the preferred size of the layout.
+ \li \l{QLayout::}{itemAt()}, how to iterate over the layout.
+ \li \l{QLayout::}{takeAt()}, how to remove items from the layout.
\endlist
In most cases, you will also implement \l{QLayout::}{minimumSize()}.
\section2 Further Notes
\list
- \o This custom layout does not handle height for width.
- \o We ignore QLayoutItem::isEmpty(); this means that the layout will
+ \li This custom layout does not handle height for width.
+ \li We ignore QLayoutItem::isEmpty(); this means that the layout will
treat hidden widgets as visible.
- \o For complex layouts, speed can be greatly increased by caching
+ \li For complex layouts, speed can be greatly increased by caching
calculated values. In that case, implement
QLayoutItem::invalidate() to mark the cached data is dirty.
- \o Calling QLayoutItem::sizeHint(), etc. may be expensive. So, you
+ \li Calling QLayoutItem::sizeHint(), etc. may be expensive. So, you
should store the value in a local variable if you need it again
later within in the same function.
- \o You should not call QLayoutItem::setGeometry() twice on the same
+ \li You should not call QLayoutItem::setGeometry() twice on the same
item in the same function. This call can be very expensive if the
item has several child widgets, because the layout manager must do
a complete layout every time. Instead, calculate the geometry and
bar. Most draw functions now take four arguments:
\list
- \o an enum value specifying which graphical element to draw
- \o a QStyleOption specifying how and where to render that element
- \o a QPainter that should be used to draw the element
- \o a QWidget on which the drawing is performed (optional)
+ \li an enum value specifying which graphical element to draw
+ \li a QStyleOption specifying how and where to render that element
+ \li a QPainter that should be used to draw the element
+ \li a QWidget on which the drawing is performed (optional)
\endlist
When a widget asks a style to draw an element, it provides the style
following parameters:
\list
- \o the enum value of the element to draw
- \o a QStyleOption which contains the information needed to
+ \li the enum value of the element to draw
+ \li a QStyleOption which contains the information needed to
draw the element.
- \o a QPainter with which to draw the element.
- \o a pointer to a QWidget, typically the widget
+ \li a QPainter with which to draw the element.
+ \li a pointer to a QWidget, typically the widget
that the element is painted on.
\endlist
typically takes the same arguments.
\list
- \o The \l{QStyle::}{subElementRect()} function takes a
+ \li The \l{QStyle::}{subElementRect()} function takes a
\l{QStyle::}{SubElement} enum value, and calculates a bounding
rectangle for a sub element. The style uses this function to
know where to draw the different parts of an element. This is
mainly done for reuse. If you create a new style, you can use
the same location of sub elements as the super class.
- \o The \l{QStyle::}{subControlRect()} function is used to
+ \li The \l{QStyle::}{subControlRect()} function is used to
calculate bounding rectangles for sub controls in complex
controls. When you implement a new style, you reimplement \c
subControlRect() and calculate the rectangles that are different
from the super class.
- \o The \l{QStyle::}{pixelMetric()} function returns a pixel
+ \li The \l{QStyle::}{pixelMetric()} function returns a pixel
metric, which is a style dependent size given in screen
pixels. It takes a value of the \l{QStyle::}{PixelMetric} enum
and returns the correct measure. Note that pixel metrics do
not necessarily have to be static measures, but can be
calculated with, for example, the style option.
- \o The \l{QStyle::}{hitTestComplexControl()} function returns the
+ \li The \l{QStyle::}{hitTestComplexControl()} function returns the
sub control that the mouse pointer is over in a complex control.
Usually, this is simply a matter of using
\l{QStyle::}{subControlRect()} to get the bounding rectangles of
\table 90%
\header
- \o State flag
- \o Set
+ \li State flag
+ \li Set
\row
- \o State_Sunken
- \o Yes
+ \li State_Sunken
+ \li Yes
\row
- \o State_NoChange
- \o No
+ \li State_NoChange
+ \li No
\row
- \o State_On
- \o Yes
+ \li State_On
+ \li Yes
\row
- \o State_Off
- \o No
+ \li State_Off
+ \li No
\row
- \o State_MouseOver
- \o Yes
+ \li State_MouseOver
+ \li Yes
\row
- \o State_Enabled
- \o Yes
+ \li State_Enabled
+ \li Yes
\row
- \o State_HasFocus
- \o Yes
+ \li State_HasFocus
+ \li Yes
\row
- \o State_KeyboardFocusChange
- \o No
+ \li State_KeyboardFocusChange
+ \li No
\row
- \o State_Active
- \o Yes
+ \li State_Active
+ \li Yes
\endtable
The QCheckBox paints itself in QWidget::paintEvent() with
The following is given for each widget:
\list
- \o A table with the members (variables, etc.) of its style option.
- \o A table over the state flags (QStyle::StateFlag) that
+ \li A table with the members (variables, etc.) of its style option.
+ \li A table over the state flags (QStyle::StateFlag) that
can be set on the widget and when the states are set.
- \o Its element tree (see section \l{The Style Elements}).
- \o An image of the widget in which the elements are outlined.
+ \li Its element tree (see section \l{The Style Elements}).
+ \li An image of the widget in which the elements are outlined.
\omit This is not written yet - probably never will be
either
- \o List of style hints that should be checked for the
+ \li List of style hints that should be checked for the
widget.
- \o List of standard pixmaps that could be used by the
+ \li List of standard pixmaps that could be used by the
elements.
\endomit
\endlist
Our approach on styling center on the drawing of the widgets. The
calculations of sub elements rectangles, sub controls, and pixel
- metrics used \bold during drawing is only listed as contents in
+ metrics used \b during drawing is only listed as contents in
the element trees. Note that there are rectangles and pixel
metrics that are only used by widgets. This leaves these
calculations untreated in the walkthrough. For instance, the
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_Enabled
- \o Set if the widget is not disabled (see
+ \li State_Enabled
+ \li Set if the widget is not disabled (see
QWidget::setEnabled())
\row
- \o State_Focus
- \o Set if the widget has focus (see
+ \li State_Focus
+ \li Set if the widget has focus (see
QWidget::hasFocus())
\row
- \o State_KeyobordFocusChange
- \o Set when the user changes focus with the keyboard
+ \li State_KeyobordFocusChange
+ \li Set when the user changes focus with the keyboard
(see Qt::WA_KeyboardFocusChange)
\row
- \o State_MouseOver
- \o Set if the mouse cursor is over the widget
+ \li State_MouseOver
+ \li Set if the mouse cursor is over the widget
\row
- \o State_Active
- \o Set if the widget is a child of the active window.
+ \li State_Active
+ \li Set if the widget is a child of the active window.
\row
- \o State_HasEditFocus
- \o Set if the widget has the edit focus
+ \li State_HasEditFocus
+ \li Set if the widget has the edit focus
\endtable
The other common members for widgets are:
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o rect
- \o The bounding rectangle of the element to draw. This
+ \li rect
+ \li The bounding rectangle of the element to draw. This
is set to the widget bounding rectangle
(QWidget::rect()).
\row
- \o direction
- \o The layout direction; a value of the
+ \li direction
+ \li The layout direction; a value of the
Qt::LayoutDirection enum.
\row
- \o palette
- \o The QPalette to use when drawing the element. This
+ \li palette
+ \li The QPalette to use when drawing the element. This
is set to the widgets palette (QWidget::palette()).
\row
- \o fontMetrics
- \o The QFontMetrics to use when drawing text on the
+ \li fontMetrics
+ \li The QFontMetrics to use when drawing text on the
widget.
\endtable
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_Sunken
- \o Button is down or menu is pressed shown
+ \li State_Sunken
+ \li Button is down or menu is pressed shown
\row
- \o State_On
- \o Button is checked
+ \li State_On
+ \li Button is checked
\row
- \o State_Raised
- \o Button is not flat and not pressed down
+ \li State_Raised
+ \li Button is not flat and not pressed down
\endtable
Other members of QStyleOptionButton is:
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o features
- \o Flags of the QStyleOptionButton::ButtonFeatures enum,
+ \li features
+ \li Flags of the QStyleOptionButton::ButtonFeatures enum,
which describes various button properties (see enum)
\row
- \o icon
- \o The buttons QIcon (if any)
+ \li icon
+ \li The buttons QIcon (if any)
\row
- \o iconSize
- \o The QSize of the icon
+ \li iconSize
+ \li The QSize of the icon
\row
- \o text
- \o a QString with the buttons text
+ \li text
+ \li a QString with the buttons text
\endtable
\section3 Check and Radio Buttons
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_sunken
- \o The box is pressed down
+ \li State_sunken
+ \li The box is pressed down
\row
- \o State_NoChange
- \o The box is partially checked (for tristate
+ \li State_NoChange
+ \li The box is partially checked (for tristate
checkboxes.)
\row
- \o State_On
- \o The box is checked
+ \li State_On
+ \li The box is checked
\row
- \o State_Off
- \o The box is unchecked
+ \li State_Off
+ \li The box is unchecked
\endtable
See \l{Push Buttons} for a table over other members in the
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_Sunken
- \o The tab is pressed on with the mouse.
+ \li State_Sunken
+ \li The tab is pressed on with the mouse.
\row
- \o State_Selected
- \o If it is the current tab.
+ \li State_Selected
+ \li If it is the current tab.
\row
- \o State_HasFocus
- \o The tab bar has focus and the tab is selected
+ \li State_HasFocus
+ \li The tab bar has focus and the tab is selected
\endtable
Note that individual tabs may be disabled even if the tab bar
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o cornerWidgets
- \o Is flags of the CornerWidget enum, which indicate
+ \li cornerWidgets
+ \li Is flags of the CornerWidget enum, which indicate
if and which corner widgets the tab bar has.
\row
- \o icon
- \o The QIcon of the tab
+ \li icon
+ \li The QIcon of the tab
\row
- \o iconSize
- \o The QSize of the icon
+ \li iconSize
+ \li The QSize of the icon
\row
- \o position
- \o A TabPosition enum value that indicates the tabs
+ \li position
+ \li A TabPosition enum value that indicates the tabs
position on the bar relative to the other tabs.
\row
- \o row
- \o holds which row the tab is in
+ \li row
+ \li holds which row the tab is in
\row
- \o selectedPosition
- \o A value of the SelectedPosition enum that indicates
+ \li selectedPosition
+ \li A value of the SelectedPosition enum that indicates
whether the selected tab is adjacent to or is the
tab.
\row
- \o shape
- \o A value of the QTabBar::Shape enum indication
+ \li shape
+ \li A value of the QTabBar::Shape enum indication
whether the tab has rounded or triangular corners
and the orientation of the tab.
\row
- \o text
- \o The tab text
+ \li text
+ \li The tab text
\endtable
The frame for tab widgets use QStyleOptionTabWidgetFrame as
\table 90%
\header
- \o Member
- \o content
+ \li Member
+ \li content
\row
- \o leftCornerWidgetSize
- \o The QSize of the left corner widget (if any).
+ \li leftCornerWidgetSize
+ \li The QSize of the left corner widget (if any).
\row
- \o rightCornerWidgetSize
- \o The QSize of the right corner widget (if any).
+ \li rightCornerWidgetSize
+ \li The QSize of the right corner widget (if any).
\row
- \o lineWidth
- \o holds the line with for drawing the panel.
+ \li lineWidth
+ \li holds the line with for drawing the panel.
\row
- \o midLineWith
- \o this value is currently always 0.
+ \li midLineWith
+ \li this value is currently always 0.
\row
- \o shape
- \o The shape of the tabs on the tab bar.
+ \li shape
+ \li The shape of the tabs on the tab bar.
\row
- \o tabBarSize
- \o The QSize of the tab bar.
+ \li tabBarSize
+ \li The QSize of the tab bar.
\endtable
\section3 Scroll Bars
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_Horizontal
- \o The scroll bar is horizontal
+ \li State_Horizontal
+ \li The scroll bar is horizontal
\endtable
The style option of QScrollBar is QStyleOptionSlider. Its
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o maximum
- \o the maximum value of the scroll bar
+ \li maximum
+ \li the maximum value of the scroll bar
\row
- \o minimum
- \o the minimum value of the scroll bar
+ \li minimum
+ \li the minimum value of the scroll bar
\row
- \o notchTarget
- \o the number of pixels between notches
+ \li notchTarget
+ \li the number of pixels between notches
\row
- \o orientation
- \o a value of the Qt::Orientation enum that specifies
+ \li orientation
+ \li a value of the Qt::Orientation enum that specifies
whether the scroll bar is vertical or horizontal
\row
- \o pageStep
- \o the number to increase or decrease the sliders
+ \li pageStep
+ \li the number to increase or decrease the sliders
value (relative to the size of the slider and its value
range) on page steps.
\row
- \o singleStep
- \o the number to increase or decrease the sliders
+ \li singleStep
+ \li the number to increase or decrease the sliders
value on single (or line) steps
\row
- \o sliderValue
- \o The value of the slider
+ \li sliderValue
+ \li The value of the slider
\row
- \o sliderPosition
- \o the position of the slider handle. This is the same
+ \li sliderPosition
+ \li the position of the slider handle. This is the same
as \c sliderValue if the scroll bar is
QAbstractSlider::tracking. If not, the scroll
bar does not update its value before the mouse
releases the handle.
\row
- \o upsideDown
- \o holds the direction in which the scroll bar
+ \li upsideDown
+ \li holds the direction in which the scroll bar
increases its value. This is used instead of
QStyleOption::direction for all abstract sliders.
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o maximum
- \o the maximum value of the slider
+ \li maximum
+ \li the maximum value of the slider
\row
- \o minimum
- \o the minimum value of the slider
+ \li minimum
+ \li the minimum value of the slider
\row
- \o notchTarget
- \o this is the number of pixels between each notch
+ \li notchTarget
+ \li this is the number of pixels between each notch
\row
- \o orientation
- \o a Qt::Orientation enum value that gives whether the
+ \li orientation
+ \li a Qt::Orientation enum value that gives whether the
slider is vertical or horizontal.
\row
- \o pageStep
- \o a number in slider value to increase or decrease
+ \li pageStep
+ \li a number in slider value to increase or decrease
for page steps
\row
- \o singleStep
- \o the number to increase or decrease the sliders
+ \li singleStep
+ \li the number to increase or decrease the sliders
value on single (or line) steps.
\row
- \o sliderValue
- \o the value of the slider.
+ \li sliderValue
+ \li the value of the slider.
\row
- \o sliderPosition
- \o the position of the slider given as a slider value.
+ \li sliderPosition
+ \li the position of the slider given as a slider value.
This will be equal to the \c sliderValue if the
slider is \l{QAbstractSlider::}{tracking}; if
not, the sliders value will not change until the handle is
released with the mouse.
\row
- \o upsideDown
- \o this member is used instead of QStyleOption::direction
+ \li upsideDown
+ \li this member is used instead of QStyleOption::direction
for all abstract sliders.
\endtable
\table 90%
\header
- \o State
- \o State Set When
+ \li State
+ \li State Set When
\row
- \o State_Sunken
- \o Is set if one of the sub controls CC_SpinUp or
+ \li State_Sunken
+ \li Is set if one of the sub controls CC_SpinUp or
CC_SpinDown is pressed on with the mouse.
\endtable
\table 90%
\header
- \o Property
- \o Function
+ \li Property
+ \li Function
\row
- \o frame
- \o boolean that is true if the spin box is to draw a
+ \li frame
+ \li boolean that is true if the spin box is to draw a
frame.
\row
- \o buttonSymbols
- \o Value of the ButtonSymbols enum that decides the
+ \li buttonSymbols
+ \li Value of the ButtonSymbols enum that decides the
symbol on the up/down buttons.
\row
- \o stepEnabled
- \o A value of the StepEnabled indication which of the
+ \li stepEnabled
+ \li A value of the StepEnabled indication which of the
spin box buttons are pressed down.
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o icon
- \o The title bars icon
+ \li icon
+ \li The title bars icon
\row
- \o text
- \o the text for the title bar's label
+ \li text
+ \li the text for the title bar's label
\row
- \o windowFlags
- \o flags of the Qt::WindowFlag enum. The window flags
+ \li windowFlags
+ \li flags of the Qt::WindowFlag enum. The window flags
used by QMdiArea for window management.
\row
- \o titleBarState
- \o this is the QWidget::windowState() of the window
+ \li titleBarState
+ \li this is the QWidget::windowState() of the window
that contains the title bar.
\endtable
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_Selected
- \o The box is not editable and has focus
+ \li State_Selected
+ \li The box is not editable and has focus
\row
- \o State_Sunken
- \o SC_ComboBoxArrow is active
+ \li State_Sunken
+ \li SC_ComboBoxArrow is active
\row
- \o State_on
- \o The container (list) of the box is visible
+ \li State_on
+ \li The container (list) of the box is visible
\endtable
The style options other members are:
\table
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o currentIcon
- \o the icon of the current (selected) item of the
+ \li currentIcon
+ \li the icon of the current (selected) item of the
combo box.
\row
- \o currentText
- \o the text of the current item in the box.
+ \li currentText
+ \li the text of the current item in the box.
\row
- \o editable
- \o holds whether the combo box is editable or not
+ \li editable
+ \li holds whether the combo box is editable or not
\row
- \o frame
- \o holds whether the combo box has a frame or not
+ \li frame
+ \li holds whether the combo box has a frame or not
\row
- \o iconSize
- \o the size of the current items icon.
+ \li iconSize
+ \li the size of the current items icon.
\row
- \o popupRect
- \o the bounding rectangle of the combo box's popup
+ \li popupRect
+ \li the bounding rectangle of the combo box's popup
list.
\endtable
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_On
- \o The check box is checked
+ \li State_On
+ \li The check box is checked
\row
- \o State_Sunken
- \o The checkbox is pressed down
+ \li State_Sunken
+ \li The checkbox is pressed down
\row
- \o State_Off
- \o The check box is unchecked (or there is no check box)
+ \li State_Off
+ \li The check box is unchecked (or there is no check box)
\endtable
The remaining members of QStyleOptionGroupBox are:
\table
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o features
- \o flags of the QStyleOptionFrameV2::FrameFeatures
+ \li features
+ \li flags of the QStyleOptionFrameV2::FrameFeatures
enum describing the frame of the group box.
\row
- \o lineWidth
- \o the line width with which to draw the panel. This
+ \li lineWidth
+ \li the line width with which to draw the panel. This
is always 1.
\row
- \o text
- \o the text of the group box.
+ \li text
+ \li the text of the group box.
\row
- \o textAlignment
- \o the alignment of the group box title
+ \li textAlignment
+ \li the alignment of the group box title
\row
- \o textColor
- \o the QColor of the text
+ \li textColor
+ \li the QColor of the text
\endtable
\section3 Splitters
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_Horizontal
- \o Set if it is a horizontal splitter
+ \li State_Horizontal
+ \li Set if it is a horizontal splitter
\endtable
QSplitter does not use \l{QStyleOption::}{initFrom()} to set up its
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o minimum
- \o The minimum value of the bar
+ \li minimum
+ \li The minimum value of the bar
\row
- \o maximum
- \o The maximum value of the bar
+ \li maximum
+ \li The maximum value of the bar
\row
- \o progress
- \o The current value of the bar
+ \li progress
+ \li The current value of the bar
\row
- \o textAlignment
- \o How the text is aligned in the label
+ \li textAlignment
+ \li How the text is aligned in the label
\row
- \o textVisible
- \o Whether the label is drawn
+ \li textVisible
+ \li Whether the label is drawn
\row
- \o text
- \o The label text
+ \li text
+ \li The label text
\row
- \o orientation
- \o Progress bars can be vertical or horizontal
+ \li orientation
+ \li Progress bars can be vertical or horizontal
\row
- \o invertedAppearance
- \o The progress is inverted (i.e., right to left in a
+ \li invertedAppearance
+ \li The progress is inverted (i.e., right to left in a
horizontal bar)
\row
- \o bottomToTop
- \o Boolean that if true, turns the label of vertical
+ \li bottomToTop
+ \li Boolean that if true, turns the label of vertical
progress bars 90 degrees.
\endtable
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_AutoRise
- \o the tool button has the autoRise property set
+ \li State_AutoRise
+ \li the tool button has the autoRise property set
\row
- \o State_raised
- \o the button is not sunken (i.e., by being checked or
+ \li State_raised
+ \li the button is not sunken (i.e., by being checked or
pressed on with the mouse).
\row
- \o State_Sunken
- \o the button is down
+ \li State_Sunken
+ \li the button is down
\row
- \o State_On
- \o the button is checkable and checked.
+ \li State_On
+ \li the button is checkable and checked.
\endtable
QStyleOptionToolButton also contains the following members:
\table
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o arrowType
- \o a Qt::ArrowType enum value, which contains the
+ \li arrowType
+ \li a Qt::ArrowType enum value, which contains the
direction of the buttons arrow (if an arrow is to
be used in place of an icon)
\row
- \o features
- \o flags of the QStyleOptionToolButton::ButtonFeature
+ \li features
+ \li flags of the QStyleOptionToolButton::ButtonFeature
enum describing if the button has an arrow, a menu,
and/or has a popup-delay.
\row
- \o font
- \o the QFont of the buttons label
+ \li font
+ \li the QFont of the buttons label
\row
- \o icon
- \o the QIcon of the tool button
+ \li icon
+ \li the QIcon of the tool button
\row
- \o iconSize
- \o the icon size of the button's icon
+ \li iconSize
+ \li the icon size of the button's icon
\row
- \o pos
- \o the position of the button, as given by
+ \li pos
+ \li the position of the button, as given by
QWidget::pos()
\row
- \o text
- \o the text of the button
+ \li text
+ \li the text of the button
\row
- \o toolButtonStyle
- \o a Qt::ToolButtonStyle enum value which decides
+ \li toolButtonStyle
+ \li a Qt::ToolButtonStyle enum value which decides
whether the button shows the icon, the text, or both.
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o features
- \o Holds whether the bar is movable in a value of the
+ \li features
+ \li Holds whether the bar is movable in a value of the
ToolBarFeature, which is either Movable or None.
\row
- \o lineWidth
- \o The width of the tool bar frame.
+ \li lineWidth
+ \li The width of the tool bar frame.
\row
- \o midLineWidth
- \o This variable is currently not used and is always
+ \li midLineWidth
+ \li This variable is currently not used and is always
0.
\row
- \o positionOfLine
- \o The position of the toolbar line within the toolbar
+ \li positionOfLine
+ \li The position of the toolbar line within the toolbar
area to which it belongs.
\row
- \o positionWithinLine
- \o The position of the toolbar within the toolbar line.
+ \li positionWithinLine
+ \li The position of the toolbar within the toolbar line.
\row
- \o toolBarArea
- \o The toolbar area in which the toolbar lives.
+ \li toolBarArea
+ \li The toolbar area in which the toolbar lives.
\endtable
\section3 Menus
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_Selected
- \o The mouse is over the action and the action is not
+ \li State_Selected
+ \li The mouse is over the action and the action is not
a separator.
\row
- \o State_Sunken
- \o The mouse is pressed down on the menu item.
+ \li State_Sunken
+ \li The mouse is pressed down on the menu item.
\row
- \o State_DownArrow
- \o Set if the menu item is a menu scroller and it scrolls
+ \li State_DownArrow
+ \li Set if the menu item is a menu scroller and it scrolls
the menu downwards.
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o checkType
- \o A value of the \l{QStyleOptionMenuItem::}{CheckType} enum,
+ \li checkType
+ \li A value of the \l{QStyleOptionMenuItem::}{CheckType} enum,
which is either NotCheckable, Exclusive, or
NonExclusive.
\row
- \o checked
- \o Boolean that is true if the menu item is checked.
+ \li checked
+ \li Boolean that is true if the menu item is checked.
\row
- \o font
- \o The QFont to use for the menu item's text.
+ \li font
+ \li The QFont to use for the menu item's text.
\row
- \o icon
- \o the QIcon of the menu item.
+ \li icon
+ \li the QIcon of the menu item.
\row
- \o maxIconWidth
- \o The maximum width allowed for the icon
+ \li maxIconWidth
+ \li The maximum width allowed for the icon
\row
- \o menuHasChecableItem
- \o Boolean which is true if at least one item in the
+ \li menuHasChecableItem
+ \li Boolean which is true if at least one item in the
menu is checkable.
\row
- \o menuItemType
- \o The type of the menu item. This a value of the
+ \li menuItemType
+ \li The type of the menu item. This a value of the
\l{QStyleOptionMenuItem::}{MenuItemType}.
\row
- \o menuRect
- \o The bounding rectangle for the QMenu that the menu
+ \li menuRect
+ \li The bounding rectangle for the QMenu that the menu
item lives in.
\row
- \o tabWidth
- \o This is the distance between the text of the menu
+ \li tabWidth
+ \li This is the distance between the text of the menu
item and the shortcut.
\row
- \o text
- \o The text of the menu item.
+ \li text
+ \li The text of the menu item.
\endtable
The setup of the style option for CE_MenuTearOff and
\table
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o menuRect
- \o the bounding rectangle of the entire menu bar to
+ \li menuRect
+ \li the bounding rectangle of the entire menu bar to
which the item belongs.
\row
- \o text
- \o the text of the item
+ \li text
+ \li the text of the item
\row
- \o icon
- \o the icon of the menu item (it is not common that
+ \li icon
+ \li the icon of the menu item (it is not common that
styles draw this icon)
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o icon
- \o the icon of the header (for section that is being
+ \li icon
+ \li the icon of the header (for section that is being
drawn).
\row
- \o iconAlignment
- \o the alignment (Qt::Alignment) of the icon in the header.
+ \li iconAlignment
+ \li the alignment (Qt::Alignment) of the icon in the header.
\row
- \o orientation
- \o a Qt::Orientation value deciding whether the header
+ \li orientation
+ \li a Qt::Orientation value deciding whether the header
is the horizontal header above the view or the
vertical header on the left.
\row
- \o position
- \o a QStyleOptionHeader::SectionPosition value
+ \li position
+ \li a QStyleOptionHeader::SectionPosition value
giving the header section's position relative to
the other sections.
\row
- \o section
- \o holds the section that is being drawn.
+ \li section
+ \li holds the section that is being drawn.
\row
- \o selectedPosition
- \o a QStyleOptionHeader::SelectedPosition value giving
+ \li selectedPosition
+ \li a QStyleOptionHeader::SelectedPosition value giving
the selected section's position relative to the
section that is being painted.
\row
- \o sortIndicator
- \o a QStyleOptionHeader::SortIndicator value that
+ \li sortIndicator
+ \li a QStyleOptionHeader::SortIndicator value that
describes the direction in which the section's sort
indicator should be drawn.
\row
- \o text
- \o the text of the currently drawn section.
+ \li text
+ \li the text of the currently drawn section.
\row
- \o textAlignment
- \o the Qt::Alignment of the text within the
+ \li textAlignment
+ \li the Qt::Alignment of the text within the
headersection.
\endtable
\table 90%
\header
- \o State
- \o Set When
+ \li State
+ \li Set When
\row
- \o State_Sibling
- \o the node in the tree has a sibling (i.e., there is
+ \li State_Sibling
+ \li the node in the tree has a sibling (i.e., there is
another node in the same column).
\row
- \o State_Item
- \o this branch indicator has an item.
+ \li State_Item
+ \li this branch indicator has an item.
\row
- \o State_Children
- \o the branch has children (i.e., a new sub-tree can
+ \li State_Children
+ \li the branch has children (i.e., a new sub-tree can
be opened at the branch).
\row
- \o State_Open
- \o the branch indicator has an opened sub-tree.
+ \li State_Open
+ \li the branch indicator has an opened sub-tree.
\endtable
The tree view (and tree widget) use the style to draw the branches
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o icon
- \o the icon on the toolbox tab
+ \li icon
+ \li the icon on the toolbox tab
\row
- \o text
- \o the text on the toolbox tab
+ \li text
+ \li the text on the toolbox tab
\endtable
\section3 Size Grip
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o corner
- \o a Qt::Corner value that describe which corner in a
+ \li corner
+ \li a Qt::Corner value that describe which corner in a
window (or equivalent) the grip is located.
\endtable
\table
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o opaque
- \o boolean that is true if the rubber band must be
+ \li opaque
+ \li boolean that is true if the rubber band must be
drawn in an opaque style (i.e., color)
\row
- \o shape
- \o a QRubberBand::Shape enum value that holds the
+ \li shape
+ \li a QRubberBand::Shape enum value that holds the
shape of the band (which is either a rectangle or a
line)
\endtable
\table 90%
\header
- \o Member
- \o Content
+ \li Member
+ \li Content
\row
- \o closeable
- \o boolean that holds whether the dock window can be
+ \li closeable
+ \li boolean that holds whether the dock window can be
closed
\row
- \o floatable
- \o boolean that holds whether the dock window can
+ \li floatable
+ \li boolean that holds whether the dock window can
float (i.e., detach from the main window in which
it lives)
\row
- \o movable
- \o boolean that holds whether the window is movable
+ \li movable
+ \li boolean that holds whether the window is movable
(i.e., can move to other dock widget areas)
\row
- \o title
- \o the title text of the dock window
+ \li title
+ \li the title text of the dock window
\endtable
For the buttons, QStyleOptionButton is used (see \l{Tool Buttons}
Topics:
\list
- \i \l{Overview}
- \i \l{The Style Sheet Syntax}
- \i \l{Qt Designer Integration}
- \i \l{Customizing Qt Widgets Using Style Sheets}
- \i \l{Qt Style Sheets Reference}
- \i \l{Qt Style Sheets Examples}
+ \li \l{Overview}
+ \li \l{The Style Sheet Syntax}
+ \li \l{Qt Designer Integration}
+ \li \l{Customizing Qt Widgets Using Style Sheets}
+ \li \l{Qt Style Sheets Reference}
+ \li \l{Qt Style Sheets Examples}
\endlist
\target overview
will.
\table
- \row \o \inlineimage stylesheet-coffee-xp.png
- \o \inlineimage stylesheet-pagefold.png
- \row \o Coffee theme running on Windows XP
- \o Pagefold theme running on Windows XP
+ \row \li \inlineimage stylesheet-coffee-xp.png
+ \li \inlineimage stylesheet-pagefold.png
+ \row \li Coffee theme running on Windows XP
+ \li Pagefold theme running on Windows XP
\endtable
\table
- \row \o \inlineimage stylesheet-coffee-cleanlooks.png
- \o \inlineimage stylesheet-pagefold-mac.png
- \row \o Coffee theme running on Ubuntu Linux
- \o Pagefold theme running on Mac OS X
+ \row \li \inlineimage stylesheet-coffee-cleanlooks.png
+ \li \inlineimage stylesheet-pagefold-mac.png
+ \row \li Coffee theme running on Ubuntu Linux
+ \li Pagefold theme running on Mac OS X
\endtable
When a style sheet is active, the QStyle returned by QWidget::style()
\table 100%
\header
- \o Selector
- \o Example
- \o Explanation
+ \li Selector
+ \li Example
+ \li Explanation
\row
- \o Universal Selector
- \o \c *
- \o Matches all widgets.
+ \li Universal Selector
+ \li \c *
+ \li Matches all widgets.
\row
- \o Type Selector
- \o \c QPushButton
- \o Matches instances of QPushButton and of its subclasses.
+ \li Type Selector
+ \li \c QPushButton
+ \li Matches instances of QPushButton and of its subclasses.
\row
- \o Property Selector
- \o \c{QPushButton[flat="false"]}
- \o Matches instances of QPushButton that are not
+ \li Property Selector
+ \li \c{QPushButton[flat="false"]}
+ \li Matches instances of QPushButton that are not
\l{QPushButton::}{flat}. You may use this selector to test
for any Qt \l{Qt's Property System}{property} that supports
QVariant::toString() (see the \l{QVariant::}{toString()}
unset the style sheet and set it again.
\row
- \o Class Selector
- \o \c .QPushButton
- \o Matches instances of QPushButton, but not of its subclasses.
+ \li Class Selector
+ \li \c .QPushButton
+ \li Matches instances of QPushButton, but not of its subclasses.
This is equivalent to \c{*[class~="QPushButton"]}.
\row
- \o ID \target ID Selector
+ \li ID \target ID Selector
Selector
- \o \c{QPushButton#okButton}
- \o Matches all QPushButton instances whose
+ \li \c{QPushButton#okButton}
+ \li Matches all QPushButton instances whose
\l{QObject::objectName}{object name} is \c okButton.
\row
- \o Descendant Selector
- \o \c{QDialog QPushButton}
- \o Matches all instances of QPushButton that are descendants
+ \li Descendant Selector
+ \li \c{QDialog QPushButton}
+ \li Matches all instances of QPushButton that are descendants
(children, grandchildren, etc.) of a QDialog.
\row
- \o Child Selector
- \o \c{QDialog > QPushButton}
- \o Matches all instances of QPushButton that are direct
+ \li Child Selector
+ \li \c{QDialog > QPushButton}
+ \li Matches all instances of QPushButton that are direct
children of a QDialog.
\endtable
Sub-Control} for a realistic example.
\note With complex widgets such as QComboBox and QScrollBar, if one
- property or sub-control is customized, \bold{all} the other properties or
+ property or sub-control is customized, \b{all} the other properties or
sub-controls must be customized as well.
\section1 Pseudo-States
\e{A selector's specificity is calculated as follows:}
\list
- \o \e{count the number of ID attributes in the selector (= a)}
- \o \e{count the number of other attributes and pseudo-classes in the selector (= b)}
- \o \e{count the number of element names in the selector (= c)}
- \o \e{ignore pseudo-elements [i.e., \l{subcontrols}].}
+ \li \e{count the number of ID attributes in the selector (= a)}
+ \li \e{count the number of other attributes and pseudo-classes in the selector (= b)}
+ \li \e{count the number of element names in the selector (= c)}
+ \li \e{ignore pseudo-elements [i.e., \l{subcontrols}].}
\endlist
\e{Concatenating the three numbers a-b-c (in a number system with a
In classic CSS, when font and color of an item is not explicitly set,
it gets automatically inherited from the parent. When using Qt Style Sheets,
- a widget does \bold{not} automatically inherit its font and color setting
+ a widget does \b{not} automatically inherit its font and color setting
from its parent widget.
For example, consider a QPushButton inside a QGroupBox:
\image stylesheet-boxmodel.png
\list
- \o The margin falls outside the border.
- \o The border is drawn between the margin and the padding.
- \o The padding falls inside the border, between the border and
+ \li The margin falls outside the border.
+ \li The border is drawn between the margin and the padding.
+ \li The padding falls inside the border, between the border and
the actual contents.
- \o The content is what is left from the original widget or
+ \li The content is what is left from the original widget or
subcontrol once we have removed the margin, the border, and
the padding.
\endlist
The steps to render a rule are as follows:
\list
- \o Set clip for entire rendering operation (border-radius)
- \o Draw the background (background-image)
- \o Draw the border (border-image, border)
- \o Draw overlay image (image)
+ \li Set clip for entire rendering operation (border-radius)
+ \li Draw the background (background-image)
+ \li Draw the border (border-image, border)
+ \li Draw overlay image (image)
\endlist
\target sub controls
followed by the down-arrow sub-control. A QComboBox is thus rendered as
follows:
\list
- \o Render the QComboBox { } rule
- \o Render the QComboBox::drop-down { } rule
- \o Render the QComboBox::down-arrow { } rule
+ \li Render the QComboBox { } rule
+ \li Render the QComboBox::drop-down { } rule
+ \li Render the QComboBox::down-arrow { } rule
\endlist
Sub-controls share a parent-child relationship. In the case of QComboBox,
Once positioned, sub-controls can be styled using the \l{box model}.
\note With complex widgets such as QComboBox and QScrollBar, if one
- property or sub-control is customized, \bold{all} the other properties or
+ property or sub-control is customized, \b{all} the other properties or
sub-controls must be customized as well.
*/
\table 100%
\header
- \o Widget
- \o How to Style
+ \li Widget
+ \li How to Style
\row
- \o QAbstractScrollArea \target qabstractscrollarea-widget
- \o Supports the \l{box model}.
+ \li QAbstractScrollArea \target qabstractscrollarea-widget
+ \li Supports the \l{box model}.
All derivatives of QAbstractScrollArea, including QTextEdit,
and QAbstractItemView (all item view classes), support
{Customizing QAbstractScrollArea} for an example.
\row
- \o QCheckBox \target qcheckbox-widget
- \o Supports the \l{box model}. The check indicator can be
+ \li QCheckBox \target qcheckbox-widget
+ \li Supports the \l{box model}. The check indicator can be
styled using the \l{#indicator-sub}{::indicator}
subcontrol. By default, the indicator is placed in the Top
Left corner of the Contents rectangle of the widget.
{Customizing QCheckBox} for an example.
\row
- \o QColumnView \target qcolumnview-widget
- \o The grip can be styled be using the \l{image-prop}{image} property.
+ \li QColumnView \target qcolumnview-widget
+ \li The grip can be styled be using the \l{image-prop}{image} property.
The arrow indicators can by styled using the
\l{left-arrow-sub}{::left-arrow} subcontrol and the
\l{right-arrow-sub}{::right-arrow} subcontrol.
\row
- \o QComboBox \target qcombobox-widget
- \o The frame around the combobox can be styled using the
+ \li QComboBox \target qcombobox-widget
+ \li The frame around the combobox can be styled using the
\l{box model}. The drop-down button can be styled using
the \l{#drop-down-sub}{::drop-down} subcontrol. By default, the
drop-down button is placed in the top right corner of the padding
for an example.
\row
- \o QDateEdit \target qdateedit-widget
- \o See \l{#qspinbox-widget}{QSpinBox}.
+ \li QDateEdit \target qdateedit-widget
+ \li See \l{#qspinbox-widget}{QSpinBox}.
\row
- \o QDateTimeEdit \target qdatetimeedit-widget
- \o See \l{#qspinbox-widget}{QSpinBox}.
+ \li QDateTimeEdit \target qdatetimeedit-widget
+ \li See \l{#qspinbox-widget}{QSpinBox}.
\row
- \o QDialog \target qdialog-widget
- \o Supports only the \l{Qt Style Sheets Reference#background-prop}{background},
+ \li QDialog \target qdialog-widget
+ \li Supports only the \l{Qt Style Sheets Reference#background-prop}{background},
\l{#background-clip-prop}{background-clip} and
\l{#background-origin-prop}{background-origin} properties.
widget.
\row
- \o QDialogButtonBox \target qdialogbuttonbox-widget
- \o The layout of buttons can be altered using the
+ \li QDialogButtonBox \target qdialogbuttonbox-widget
+ \li The layout of buttons can be altered using the
\l{#button-layout-prop}{button-layout} property.
\row
- \o QDockWidget \target qdockwidget-widget
- \o Supports styling of the title bar and the title bar buttons when docked.
+ \li QDockWidget \target qdockwidget-widget
+ \li Supports styling of the title bar and the title bar buttons when docked.
The dock widget border can be styled using the \l{#border-prop}{border}
property. The \l{#title-sub}{::title} subcontrol can be used to customize
{Customizing QDockWidget} for an example.
\row
- \o QDoubleSpinBox \target qdoublespinbox-widget
- \o See \l{#qspinbox-widget}{QSpinBox}.
+ \li QDoubleSpinBox \target qdoublespinbox-widget
+ \li See \l{#qspinbox-widget}{QSpinBox}.
\row
- \o QFrame \target qframe-widget
- \o Supports the \l{box model}.
+ \li QFrame \target qframe-widget
+ \li Supports the \l{box model}.
Since 4.3, setting a stylesheet on a QLabel automatically
sets the QFrame::frameStyle property to QFrame::StyledPanel.
for an example.
\row
- \o QGroupBox \target qgroupbox-widget
- \o Supports the \l{box model}. The title can be styled using the
+ \li QGroupBox \target qgroupbox-widget
+ \li Supports the \l{box model}. The title can be styled using the
\l{#title-sub}{::title} subcontrol. By default, the title is placed
depending on QGroupBox::textAlignment.
for an example.
\row
- \o QHeaderView \target qheaderview-widget
- \o Supports the \l{box model}. The sections of the header view are
+ \li QHeaderView \target qheaderview-widget
+ \li Supports the \l{box model}. The sections of the header view are
styled using the \l{#section-sub}{::section} sub control. The
\c{section} Sub-control supports the \l{#middle-ps}{:middle},
\l{#first-ps}{:first}, \l{#last-ps}{:last},
for an example.
\row
- \o QLabel \target qlabel-widget
- \o Supports the \l{box model}. Does not support the
+ \li QLabel \target qlabel-widget
+ \li Supports the \l{box model}. Does not support the
\l{#hover-ps}{:hover} pseudo-state.
Since 4.3, setting a stylesheet on a QLabel automatically
example (a QLabel derives from QFrame).
\row
- \o QLineEdit \target qlineedit-widget
- \o Support the \l{box model}.
+ \li QLineEdit \target qlineedit-widget
+ \li Support the \l{box model}.
The color and background of the selected item is styled using
\l{#selection-color-prop}{selection-color} and
for an example.
\row
- \o QListView \target qlistview-widget
- \o Supports the \l{box model}. When
+ \li QListView \target qlistview-widget
+ \li Supports the \l{box model}. When
\l{QAbstractItemView::alternatingRowColors}{alternating row colors}
is enabled, the alternating colors can be styled using the
\l{#alternate-background-color-prop}{alternate-background-color}
{Customzing QListView} for an example.
\row
- \o QListWidget \target qlistwidget-widget
- \o See \l{#qlistview-widget}{QListView}.
+ \li QListWidget \target qlistwidget-widget
+ \li See \l{#qlistview-widget}{QListView}.
\row
- \o QMainWindow \target qmainwindow-widget
- \o Supports styling of the separator
+ \li QMainWindow \target qmainwindow-widget
+ \li Supports styling of the separator
The separator in a QMainWindow when using QDockWidget is styled
using the \l{#separator-sub}{::separator} subcontrol.
for an example.
\row
- \o QMenu \target qmenu-widget
- \o Supports the \l{box model}.
+ \li QMenu \target qmenu-widget
+ \li Supports the \l{box model}.
Individual items are styled using the \l{#item-sub}{::item}
subcontrol. In addition to the usually supported pseudo states,
for an example.
\row
- \o QMenuBar \target qmenubar-widget
- \o Supports the \l{box model}. The \l{#spacing-prop}{spacing}
+ \li QMenuBar \target qmenubar-widget
+ \li Supports the \l{box model}. The \l{#spacing-prop}{spacing}
property specifies the spacing between menu items.
Individual items are styled using the \l{#item-sub}{::item}
subcontrol.
for an example.
\row
- \o QMessageBox \target qmessagebox-widget
- \o The \l{#messagebox-text-interaction-flags-prop}
+ \li QMessageBox \target qmessagebox-widget
+ \li The \l{#messagebox-text-interaction-flags-prop}
{messagebox-text-interaction-flags} property can be used to alter
the interaction with text in the message box.
\row
- \o QProgressBar \target qprogressbar-widget
- \o Supports the \l{box model}. The chunks of the progress bar
+ \li QProgressBar \target qprogressbar-widget
+ \li Supports the \l{box model}. The chunks of the progress bar
can be styled using the \l{#chunk-sub}{::chunk} subcontrol.
The chunk is displayed on the Contents rectangle of the widget.
for an example.
\row
- \o QPushButton \target qpushbutton-widget
- \o Supports the \l{box model}. Supports the \l{#default-ps}{:default},
+ \li QPushButton \target qpushbutton-widget
+ \li Supports the \l{box model}. Supports the \l{#default-ps}{:default},
\l{#flat-ps}{:flat}, \l{#checked-ps}{:checked} pseudo states.
For QPushButton with a menu, the menu indicator is styled
for an example.
\row
- \o QRadioButton \target qradiobutton-widget
- \o Supports the \l{box model}. The check indicator can be
+ \li QRadioButton \target qradiobutton-widget
+ \li Supports the \l{box model}. The check indicator can be
styled using the \l{#indicator-sub}{::indicator}
subcontrol. By default, the indicator is placed in the Top
Left corner of the Contents rectangle of the widget.
{Customizing QRadioButton} for an example.
\row
- \o QScrollBar \target qscrollbar-widget
- \o Supports the \l{box model}. The Contents rectangle of the widget
+ \li QScrollBar \target qscrollbar-widget
+ \li Supports the \l{box model}. The Contents rectangle of the widget
is considered to be the groove over which the slider moves. The extent
of the QScrollBar (i.e the width or the height depending on the orientation)
is set using the \l{#width-prop}{width} or \l{#height-prop}{height} property
for an example.
\row
- \o QSizeGrip \target qsizegrip-widget
- \o Supports the \l{#width-prop}{width},
+ \li QSizeGrip \target qsizegrip-widget
+ \li Supports the \l{#width-prop}{width},
\l{#height-prop}{height}, and \l{#image-prop}{image}
properties.
for an example.
\row
- \o QSlider \target qslider-widget
- \o Supports the \l{box model}. For horizontal slides, the
+ \li QSlider \target qslider-widget
+ \li Supports the \l{box model}. For horizontal slides, the
\l{min-width-prop}{min-width} and \l{height-prop}{height}
properties must be provided. For vertical sliders, the
\l{min-height-prop}{min-height} and \l{width-prop}{width}
for an example.
\row
- \o QSpinBox \target qspinbox-widget
- \o The frame of the spin box can be styled using the \l{box
+ \li QSpinBox \target qspinbox-widget
+ \li The frame of the spin box can be styled using the \l{box
model}.
The up button and arrow can be styled using the
for an example.
\row
- \o QSplitter \target qsplitter-widget
- \o Supports the \l{box model}. The handle of the splitter
+ \li QSplitter \target qsplitter-widget
+ \li Supports the \l{box model}. The handle of the splitter
is styled using the \l{#handle-sub}{::handle} subcontrol.
See \l{Qt Style Sheets Examples#Customizing QSplitter}{Customizing QSplitter}
for an example.
\row
- \o QStatusBar \target qstatusbar-widget
- \o Supports only the \l{Qt Style Sheets Reference#background-prop}
+ \li QStatusBar \target qstatusbar-widget
+ \li Supports only the \l{Qt Style Sheets Reference#background-prop}
{background} property.
The frame for individual items can be style using the
\l{#item-sub}{::item} subcontrol.
for an example.
\row
- \o QTabBar \target qtabbar-widget
- \o Individual tabs may be styled using the \l{#tab-sub}{::tab} subcontrol.
+ \li QTabBar \target qtabbar-widget
+ \li Individual tabs may be styled using the \l{#tab-sub}{::tab} subcontrol.
Close buttons using the \l{#close-button-sub}{::close-button}
The tabs support the
\l{#only-one-ps}{:only-one}, \l{#first-ps}{:first},
for an example.
\row
- \o QTabWidget \target qtabwidget-widget
- \o The frame of the tab widget is styled using the
+ \li QTabWidget \target qtabwidget-widget
+ \li The frame of the tab widget is styled using the
\l{#pane-sub}{::pane} subcontrol. The left and right
corners are styled using the \l{#left-corner-sub}{::left-corner}
and \l{#right-corner-sub}{::right-corner} respectively.
{Customizing QTabWidget} for an example.
\row
- \o QTableView \target qtableview-widget
- \o Supports the \l{box model}. When
+ \li QTableView \target qtableview-widget
+ \li Supports the \l{box model}. When
\l{QAbstractItemView::alternatingRowColors}{alternating row colors}
is enabled, the alternating colors can be styled using the
\l{#alternate-background-color-prop}{alternate-background-color}
{Customzing QTableView} for an example.
\row
- \o QTableWidget \target qtablewidget-widget
- \o See \l{#qtableview-widget}{QTableView}.
+ \li QTableWidget \target qtablewidget-widget
+ \li See \l{#qtableview-widget}{QTableView}.
\row
- \o QTextEdit \target qtextedit-widget
- \o Supports the \l{box model}.
+ \li QTextEdit \target qtextedit-widget
+ \li Supports the \l{box model}.
The color and background of selected text is styled using
\l{#selection-color-prop}{selection-color} and
style scrollable backgrounds.
\row
- \o QTimeEdit \target qtimeedit-widget
- \o See \l{#qspinbox-widget}{QSpinBox}.
+ \li QTimeEdit \target qtimeedit-widget
+ \li See \l{#qspinbox-widget}{QSpinBox}.
\row
- \o QToolBar \target qtoolbar-widget
- \o Supports the \l{box model}.
+ \li QToolBar \target qtoolbar-widget
+ \li Supports the \l{box model}.
The \l{#top-ps}{:top}, \l{#left-ps}{:left}, \l{#right-ps}{:right},
\l{#bottom-ps}{:bottom} pseudo states depending on the area in
for an example.
\row
- \o QToolButton \target qtoolbutton-widget
- \o Supports the \l{box model}.
+ \li QToolButton \target qtoolbutton-widget
+ \li Supports the \l{box model}.
If the QToolButton has a menu, is
\l{#menu-indicator-sub}{::menu-indicator} subcontrol can be used to
for an example.
\row
- \o QToolBox \target qtoolbox-widget
- \o Supports the \l{box model}.
+ \li QToolBox \target qtoolbox-widget
+ \li Supports the \l{box model}.
The individual tabs can by styled using the
\l{#tab-sub}{::tab} subcontrol. The tabs support the
\l{#selected-ps}{:selected} pseudo states.
\row
- \o QToolTip \target qtooltip-widget
- \o Supports the \l{box model}. The \l{#opacity-prop}{opacity}
+ \li QToolTip \target qtooltip-widget
+ \li Supports the \l{box model}. The \l{#opacity-prop}{opacity}
property controls the opacity of the tooltip.
See \l{Qt Style Sheets Examples#Customizing QFrame}{Customizing QFrame}
for an example (a QToolTip is a QFrame).
\row
- \o QTreeView \target qtreeview-widget
- \o Supports the \l{box model}. When
+ \li QTreeView \target qtreeview-widget
+ \li Supports the \l{box model}. When
\l{QAbstractItemView::alternatingRowColors}{alternating row colors}
is enabled, the alternating colors can be styled using the
\l{#alternate-background-color-prop}{alternate-background-color}
for an example to style the branches.
\row
- \o QTreeWidget \target qtreewidget-widget
- \o See \l{#qtreeview-widget}{QTreeView}.
+ \li QTreeWidget \target qtreewidget-widget
+ \li See \l{#qtreeview-widget}{QTreeView}.
\row
- \o QWidget \target qwidget-widget
- \o Supports only the \l{Qt Style Sheets Reference#background-prop}{background},
+ \li QWidget \target qwidget-widget
+ \li Supports only the \l{Qt Style Sheets Reference#background-prop}{background},
\l{#background-clip-prop}{background-clip} and
\l{#background-origin-prop}{background-origin} properties.
\table 100%
\header
- \o Property
- \o Type
- \o Description
+ \li Property
+ \li Type
+ \li Description
\row
- \o \bold{\c alternate-background-color} \target alternate-background-color-prop
- \o \l{#Brush}{Brush} \BR
- \o The \l{QAbstractItemView::alternatingRowColors}
+ \li \b{\c alternate-background-color} \target alternate-background-color-prop
+ \li \l{#Brush}{Brush} \BR
+ \li The \l{QAbstractItemView::alternatingRowColors}
{alternate background color} used in QAbstractItemView subclasses.
If this property is not set, the default value is
\l{#selection-background-color-prop}{selection-background-color}.
\row
- \o \bold{\c background} \target background-prop
- \o \l{#Background}{Background}
- \o Shorthand notation for setting the background. Equivalent
+ \li \b{\c background} \target background-prop
+ \li \l{#Background}{Background}
+ \li Shorthand notation for setting the background. Equivalent
to specifying \c background-color, \c background-image, \c
background-repeat, and/or \c background-position.
and \l{#alternate-background-color-prop}{alternate-background-color}.
\row
- \o \c background-color \target background-color-prop
- \o \l{#Brush}{Brush} \BR
- \o The background color used for the widget.
+ \li \c background-color \target background-color-prop
+ \li \l{#Brush}{Brush} \BR
+ \li The background color used for the widget.
Examples:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 36
\row
- \o \c background-image \target background-image-prop
- \o \l{#Url}{Url}
- \o The background image used for the widget. Semi-transparent
+ \li \c background-image \target background-image-prop
+ \li \l{#Url}{Url}
+ \li The background image used for the widget. Semi-transparent
parts of the image let the \c background-color shine
through.
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 37
\row
- \o \c background-repeat \target background-repeat-prop
- \o \l{#Repeat}{Repeat}
- \o Whether and how the background image is repeated to fill
+ \li \c background-repeat \target background-repeat-prop
+ \li \l{#Repeat}{Repeat}
+ \li Whether and how the background image is repeated to fill
the \c background-origin rectangle.
If this property is not specified, the background image
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 38
\row
- \o \c background-position
- \o \l{#Alignment}{Alignment}
- \o The alignment of the background image within the \c
+ \li \c background-position
+ \li \l{#Alignment}{Alignment}
+ \li The alignment of the background image within the \c
background-origin rectangle.
If this property is not specified, the alignment is \c
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 39
\row
- \o \bold{\c background-attachment} \target background-attachment-prop
- \o \l{#Attachment}{Attachment}
- \o Determines whether the background-image in a QAbstractScrollArea
+ \li \b{\c background-attachment} \target background-attachment-prop
+ \li \l{#Attachment}{Attachment}
+ \li Determines whether the background-image in a QAbstractScrollArea
is scrolled or fixed with respect to the viewport.
By default, the background-image scrolls with the viewport.
See also \l{Qt Style Sheets Reference#background-prop}{background}
\row
- \o \bold{\c background-clip} \target background-clip-prop
- \o \l{#Origin}{Origin}
- \o The widget's rectangle, in which the \c background is drawn.
+ \li \b{\c background-clip} \target background-clip-prop
+ \li \l{#Origin}{Origin}
+ \li The widget's rectangle, in which the \c background is drawn.
This property specifies the rectangle to which the \c background-color
and \c background-image are clipped.
\l{#background-origin-prop}{background-origin} and \l{The Box Model}.
\row
- \o \bold{\c background-origin} \target background-origin-prop
- \o \l{#Origin}{Origin}
- \o The widget's background rectangle, to use in conjunction
+ \li \b{\c background-origin} \target background-origin-prop
+ \li \l{#Origin}{Origin}
+ \li The widget's background rectangle, to use in conjunction
with \c background-position and \c background-image.
This property is supported by QAbstractItemView
\l{The Box Model}.
\row
- \o \bold{\c border} \target border-prop
- \o \l{#Border}{Border}
- \o Shorthand notation for setting the widget's border. Equivalent
+ \li \b{\c border} \target border-prop
+ \li \l{#Border}{Border}
+ \li Shorthand notation for setting the widget's border. Equivalent
to specifying \c border-color, \c border-style, and/or
\c border-width.
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 43
\row
- \o \c border-top
- \o \l{#Border}{Border}
- \o Shorthand notation for setting the widget's top border.
+ \li \c border-top
+ \li \l{#Border}{Border}
+ \li Shorthand notation for setting the widget's top border.
Equivalent to specifying \c border-top-color, \c
border-top-style, and/or \c border-top-width.
\row
- \o \c border-right
- \o \l{#Border}{Border}
- \o Shorthand notation for setting the widget's right border.
+ \li \c border-right
+ \li \l{#Border}{Border}
+ \li Shorthand notation for setting the widget's right border.
Equivalent to specifying \c border-right-color, \c
border-right-style, and/or \c border-right-width.
\row
- \o \c border-bottom
- \o \l{#Border}{Border}
- \o Shorthand notation for setting the widget's bottom border.
+ \li \c border-bottom
+ \li \l{#Border}{Border}
+ \li Shorthand notation for setting the widget's bottom border.
Equivalent to specifying \c border-bottom-color, \c
border-bottom-style, and/or \c border-bottom-width.
\row
- \o \c border-left
- \o \l{#Border}{Border}
- \o Shorthand notation for setting the widget's left border.
+ \li \c border-left
+ \li \l{#Border}{Border}
+ \li Shorthand notation for setting the widget's left border.
Equivalent to specifying \c border-left-color, \c
border-left-style, and/or \c border-left-width.
\row
- \o \bold{\c border-color} \target border-attrs
+ \li \b{\c border-color} \target border-attrs
\target border-color-prop
- \o \l{#Box Colors}{Box Colors}
- \o The color of all the border's edges. Equivalent to
+ \li \l{#Box Colors}{Box Colors}
+ \li The color of all the border's edges. Equivalent to
specifying \c border-top-color, \c border-right-color, \c
border-bottom-color, and \c border-left-color.
\l{#border-image-prop}{border-image}, and \l{The Box Model}.
\row
- \o \c border-top-color
- \o \l{#Brush}{Brush} \BR
- \o The color of the border's top edge.
+ \li \c border-top-color
+ \li \l{#Brush}{Brush} \BR
+ \li The color of the border's top edge.
\row
- \o \c border-right-color
- \o \l{#Brush}{Brush} \BR
- \o The color of the border's right edge.
+ \li \c border-right-color
+ \li \l{#Brush}{Brush} \BR
+ \li The color of the border's right edge.
\row
- \o \c border-bottom-color
- \o \l{#Brush}{Brush} \BR
- \o The color of the border's bottom edge.
+ \li \c border-bottom-color
+ \li \l{#Brush}{Brush} \BR
+ \li The color of the border's bottom edge.
\row
- \o \c border-left-color
- \o \l{#Brush}{Brush} \BR
- \o The color of the border's left edge.
+ \li \c border-left-color
+ \li \l{#Brush}{Brush} \BR
+ \li The color of the border's left edge.
\row
- \o \bold{\c border-image} \target border-image-prop
- \o \l{#Border Image}{Border Image}
- \o The image used to fill the border. The image is cut into
+ \li \b{\c border-image} \target border-image-prop
+ \li \l{#Border Image}{Border Image}
+ \li The image used to fill the border. The image is cut into
nine parts and stretched appropriately if necessary. See
\l{#Border Image}{Border Image} for details.
\l{The Box Model}.
\row
- \o \bold{\c border-radius} \target border-radius-prop
- \o \l{#Radius}{Radius}
- \o The radius of the border's corners. Equivalent to
+ \li \b{\c border-radius} \target border-radius-prop
+ \li \l{#Radius}{Radius}
+ \li The radius of the border's corners. Equivalent to
specifying \c border-top-left-radius, \c
border-top-right-radius, \c border-bottom-right-radius,
and \c border-bottom-left-radius.
\l{The Box Model}.
\row
- \o \c border-top-left-radius
- \o \l{#Radius}{Radius}
- \o The radius of the border's top-left corner.
+ \li \c border-top-left-radius
+ \li \l{#Radius}{Radius}
+ \li The radius of the border's top-left corner.
\row
- \o \c border-top-right-radius
- \o \l{#Radius}{Radius}
- \o The radius of the border's top-right corner.
+ \li \c border-top-right-radius
+ \li \l{#Radius}{Radius}
+ \li The radius of the border's top-right corner.
\row
- \o \c border-bottom-right-radius
- \o \l{#Radius}{Radius}
- \o The radius of the border's bottom-right corner. Setting
+ \li \c border-bottom-right-radius
+ \li \l{#Radius}{Radius}
+ \li The radius of the border's bottom-right corner. Setting
this property to a positive value results in a rounded
corner.
\row
- \o \c border-bottom-left-radius
- \o \l{#Radius}{Radius}
- \o The radius of the border's bottom-left corner. Setting this
+ \li \c border-bottom-left-radius
+ \li \l{#Radius}{Radius}
+ \li The radius of the border's bottom-left corner. Setting this
property to a positive value results in a rounded corner.
\row
- \o \bold{\c border-style} \target border-style-prop
- \o \l {Border Style}
- \o The style of all the border's edges.
+ \li \b{\c border-style} \target border-style-prop
+ \li \l {Border Style}
+ \li The style of all the border's edges.
This property is supported by QAbstractItemView
subclasses, QAbstractSpinBox subclasses, QCheckBox,
\l{#border-image-prop}{border-image}, and \l{The Box Model}.
\row
- \o \c border-top-style
- \o \l{#Border Style}{Border Style}
- \o The style of the border's top edge.
+ \li \c border-top-style
+ \li \l{#Border Style}{Border Style}
+ \li The style of the border's top edge.
\row
- \o \c border-right-style
- \o \l{#Border Style}{Border Style}
- \o The style of the border's right edge/
+ \li \c border-right-style
+ \li \l{#Border Style}{Border Style}
+ \li The style of the border's right edge/
\row
- \o \c border-bottom-style
- \o \l{#Border Style}{Border Style}
- \o The style of the border's bottom edge.
+ \li \c border-bottom-style
+ \li \l{#Border Style}{Border Style}
+ \li The style of the border's bottom edge.
\row
- \o \c border-left-style
- \o \l{#Border Style}{Border Style}
- \o The style of the border's left edge.
+ \li \c border-left-style
+ \li \l{#Border Style}{Border Style}
+ \li The style of the border's left edge.
\row
- \o \bold{\c border-width} \target border-width-prop
- \o \l{#Box Lengths}{Box Lengths}
- \o The width of the border. Equivalent to setting \c
+ \li \b{\c border-width} \target border-width-prop
+ \li \l{#Box Lengths}{Box Lengths}
+ \li The width of the border. Equivalent to setting \c
border-top-width, \c border-right-width, \c
border-bottom-width, and \c border-left-width.
\l{The Box Model}.
\row
- \o \c border-top-width
- \o \l{#Length}{Length}
- \o The width of the border's top edge.
+ \li \c border-top-width
+ \li \l{#Length}{Length}
+ \li The width of the border's top edge.
\row
- \o \c border-right-width
- \o \l{#Length}{Length}
- \o The width of the border's right edge.
+ \li \c border-right-width
+ \li \l{#Length}{Length}
+ \li The width of the border's right edge.
\row
- \o \c border-bottom-width
- \o \l{#Length}{Length}
- \o The width of the border's bottom edge.
+ \li \c border-bottom-width
+ \li \l{#Length}{Length}
+ \li The width of the border's bottom edge.
\row
- \o \c border-left-width
- \o \l{#Length}{Length}
- \o The width of the border's left edge.
+ \li \c border-left-width
+ \li \l{#Length}{Length}
+ \li The width of the border's left edge.
\row
- \o \bold{\c bottom} \target bottom-prop
- \o \l{#Length}{Length}
- \o If \l{#position-prop}{position} is \c relative (the
+ \li \b{\c bottom} \target bottom-prop
+ \li \l{#Length}{Length}
+ \li If \l{#position-prop}{position} is \c relative (the
default), moves a \l{subcontrol} by a certain offset up;
specifying \tt{bottom: \e{y}} is then equivalent to
specifying \tt{\l{Qt Style Sheets Reference#top-prop}{top}: -\e{y}}.
\l{Qt Style Sheets Reference#top-prop}{top}.
\row
- \o \bold{\c button-layout} \target button-layout-prop
- \o \l{#Number}{Number}
- \o The layout of buttons in a QDialogButtonBox or
+ \li \b{\c button-layout} \target button-layout-prop
+ \li \l{#Number}{Number}
+ \li The layout of buttons in a QDialogButtonBox or
a QMessageBox. The possible values are 0
(\l{QDialogButtonBox::}{WinLayout}), 1
(\l{QDialogButtonBox::}{MacLayout}), 2
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 49
\row
- \o \bold{\c color} \target color-prop
- \o \l{#Brush}{Brush} \BR
- \o The color used to render text.
+ \li \b{\c color} \target color-prop
+ \li \l{#Brush}{Brush} \BR
+ \li The color used to render text.
This property is supported by all widgets that respect
the \l QWidget::palette.
\l{#selection-color-prop}{selection-color}.
\row
- \o \bold{\c dialogbuttonbox-buttons-have-icons}
- \o \l{#Boolean}{Boolean}
- \o Whether the buttons in a QDialogButtonBox show icons
+ \li \b{\c dialogbuttonbox-buttons-have-icons}
+ \li \l{#Boolean}{Boolean}
+ \li Whether the buttons in a QDialogButtonBox show icons
If this property is set to 1, the buttons of a QDialogButtonBox
show icons; if it is set to 0, the icons are not shown.
\omit
\row
- \o \bold{\c etch-disabled-text}*
- \o \l{#Boolean}{Boolean}
- \o Whether disabled text is drawn etched.
+ \li \b{\c etch-disabled-text}*
+ \li \l{#Boolean}{Boolean}
+ \li Whether disabled text is drawn etched.
If this property is not specified, it defaults to the
value specified by the current style for the
\endomit
\row
- \o \bold{\c font} \target font-prop
- \o \l{#Font}{Font}
- \o Shorthand notation for setting the text's font. Equivalent
+ \li \b{\c font} \target font-prop
+ \li \l{#Font}{Font}
+ \li Shorthand notation for setting the text's font. Equivalent
to specifying \c font-family, \c font-size, \c font-style,
and/or \c font-weight.
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 53
\row
- \o \c font-family
- \o String
- \o The font family.
+ \li \c font-family
+ \li String
+ \li The font family.
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 54
\row
- \o \c font-size
- \o \l{#Font Size}{Font Size}
- \o The font size. In this version of Qt, only pt and px metrics are
+ \li \c font-size
+ \li \l{#Font Size}{Font Size}
+ \li The font size. In this version of Qt, only pt and px metrics are
supported.
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 55
\row
- \o \c font-style
- \o \l {Font Style}
- \o The font style.
+ \li \c font-style
+ \li \l {Font Style}
+ \li The font style.
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 56
\row
- \o \c font-weight
- \o \l{#Font Weight}{Font Weight}
- \o The weight of the font.
+ \li \c font-weight
+ \li \l{#Font Weight}{Font Weight}
+ \li The weight of the font.
\row
- \o \bold{\c gridline-color}* \target gridline-color-prop
- \o \l{#Color}{Color} \BR
- \o The color of the grid line in a QTableView.
+ \li \b{\c gridline-color}* \target gridline-color-prop
+ \li \l{#Color}{Color} \BR
+ \li The color of the grid line in a QTableView.
If this property is not specified, it defaults to the
value specified by the current style for the
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 57
\row
- \o \bold{\c height} \target height-prop
- \o \l{#Length}{Length}
- \o The height of a \l{subcontrol} (or in some case, a widget).
+ \li \b{\c height} \target height-prop
+ \li \l{#Length}{Length}
+ \li The height of a \l{subcontrol} (or in some case, a widget).
If this property is not specified, it defaults to a value
that depends on the subcontrol/widget and on the current style.
See also \l{#width-prop}{width}.
\row
- \o \bold{\c icon-size} \target icon-size-prop
- \o \l{#Length}{Length}
- \o The width and height of the icon in a widget.
+ \li \b{\c icon-size} \target icon-size-prop
+ \li \l{#Length}{Length}
+ \li The width and height of the icon in a widget.
The icon size of the following widgets can be set using this
property.
\list
- \i QCheckBox
- \i QListView
- \i QPushButton
- \i QRadioButton
- \i QTabBar
- \i QToolBar
- \i QToolBox
- \i QTreeView
+ \li QCheckBox
+ \li QListView
+ \li QPushButton
+ \li QRadioButton
+ \li QTabBar
+ \li QToolBar
+ \li QToolBox
+ \li QTreeView
\endlist
\row
- \o \bold{\c image}* \target image-prop
- \o \l{#Url}{Url}+
- \o The image that is drawn in the contents rectangle of a
+ \li \b{\c image}* \target image-prop
+ \li \l{#Url}{Url}+
+ \li The image that is drawn in the contents rectangle of a
\l{subcontrol}.
The image property accepts a list of \l{#Url}{Url}s or
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 59
\row
- \o \bold{\c image-position} \target image-position-prop
- \o \l{#Alignment}{alignment}
- \o In Qt 4.3 and later, the alignment of the image image's position can be specified
+ \li \b{\c image-position} \target image-position-prop
+ \li \l{#Alignment}{alignment}
+ \li In Qt 4.3 and later, the alignment of the image image's position can be specified
using relative or absolute position.
\row
- \o \bold{\c left} \target left-prop
- \o \l{#Length}{Length}
- \o If \l{#position-prop}{position} is \c relative (the
+ \li \b{\c left} \target left-prop
+ \li \l{#Length}{Length}
+ \li If \l{#position-prop}{position} is \c relative (the
default), moves a \l{subcontrol} by a certain offset to
the right.
\l{#bottom-prop}{bottom}.
\row
- \o \bold{\c lineedit-password-character*} \target lineedit-password-character-prop
- \o \l{#Number}{Number}
- \o The QLineEdit password character as a Unicode number.
+ \li \b{\c lineedit-password-character*} \target lineedit-password-character-prop
+ \li \l{#Number}{Number}
+ \li The QLineEdit password character as a Unicode number.
If this property is not specified, it defaults to the
value specified by the current style for the
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 61
\row
- \o \bold{\c margin} \target margin-prop
- \o \l {Box Lengths}
- \o The widget's margins. Equivalent to specifying \c
+ \li \b{\c margin} \target margin-prop
+ \li \l {Box Lengths}
+ \li The widget's margins. Equivalent to specifying \c
margin-top, \c margin-right, \c margin-bottom, and \c
margin-left.
\l{#spacing-prop}{spacing}, and \l{The Box Model}.
\row
- \o \c margin-top
- \o \l{#Length}{Length}
- \o The widget's top margin.
+ \li \c margin-top
+ \li \l{#Length}{Length}
+ \li The widget's top margin.
\row
- \o \c margin-right
- \o \l{#Length}{Length}
- \o The widget's right margin.
+ \li \c margin-right
+ \li \l{#Length}{Length}
+ \li The widget's right margin.
\row
- \o \c margin-bottom
- \o \l{#Length}{Length}
- \o The widget's bottom margin.
+ \li \c margin-bottom
+ \li \l{#Length}{Length}
+ \li The widget's bottom margin.
\row
- \o \c margin-left
- \o \l{#Length}{Length}
- \o The widget's left margin.
+ \li \c margin-left
+ \li \l{#Length}{Length}
+ \li The widget's left margin.
\row
- \o \bold{\c max-height} \target max-height-prop
- \o \l{#Length}{Length}
- \o The widget's or a subcontrol's maximum height.
+ \li \b{\c max-height} \target max-height-prop
+ \li \l{#Length}{Length}
+ \li The widget's or a subcontrol's maximum height.
This property is supported by QAbstractItemView
subclasses, QAbstractSpinBox subclasses, QCheckBox,
See also \l{#max-width-prop}{max-width}.
\row
- \o \bold{\c max-width} \target max-width-prop
- \o \l{#Length}{Length}
- \o The widget's or a subcontrol's maximum width.
+ \li \b{\c max-width} \target max-width-prop
+ \li \l{#Length}{Length}
+ \li The widget's or a subcontrol's maximum width.
This property is supported by QAbstractItemView
subclasses, QAbstractSpinBox subclasses, QCheckBox,
\row
- \o \bold{\c messagebox-text-interaction-flags*} \target messagebox-text-interaction-flags-prop
- \o \l{#Number}{Number}
- \o The interaction behavior for text in a message box.
+ \li \b{\c messagebox-text-interaction-flags*} \target messagebox-text-interaction-flags-prop
+ \li \l{#Number}{Number}
+ \li The interaction behavior for text in a message box.
Possible values are based on Qt::TextInteractionFlags.
If this property is not specified, it defaults to the
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 65
\row
- \o \bold{\c min-height} \target min-height-prop
- \o \l{#Length}{Length}
- \o The widget's or a subcontrol's minimum height.
+ \li \b{\c min-height} \target min-height-prop
+ \li \l{#Length}{Length}
+ \li The widget's or a subcontrol's minimum height.
This property is supported by QAbstractItemView
subclasses, QAbstractSpinBox subclasses, QCheckBox,
See also \l{#min-width-prop}{min-width}.
\row
- \o \bold{\c min-width} \target min-width-prop
- \o \l{#Length}{Length}
- \o The widget's or a subcontrol's minimum width.
+ \li \b{\c min-width} \target min-width-prop
+ \li \l{#Length}{Length}
+ \li The widget's or a subcontrol's minimum width.
This property is supported by QAbstractItemView
subclasses, QAbstractSpinBox subclasses, QCheckBox,
See also \l{#min-height-prop}{min-height}.
\row
- \o \bold{\c opacity*} \target opacity-prop
- \o \l{#Number}{Number}
- \o The opacity for a widget. Possible values are from 0
+ \li \b{\c opacity*} \target opacity-prop
+ \li \l{#Number}{Number}
+ \li The opacity for a widget. Possible values are from 0
(transparent) to 255 (opaque). For the moment, this is
only supported for \l{QToolTip}{tooltips}.
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 68
\row
- \o \bold{\c padding} \target padding-prop
- \o \l{#Box Lengths}{Box Lengths}
- \o The widget's padding. Equivalent to specifying \c
+ \li \b{\c padding} \target padding-prop
+ \li \l{#Box Lengths}{Box Lengths}
+ \li The widget's padding. Equivalent to specifying \c
padding-top, \c padding-right, \c padding-bottom, and \c
padding-left.
\l{#spacing-prop}{spacing}, and \l{The Box Model}.
\row
- \o \c padding-top
- \o \l{#Length}{Length}
- \o The widget's top padding.
+ \li \c padding-top
+ \li \l{#Length}{Length}
+ \li The widget's top padding.
\row
- \o \c padding-right
- \o \l{#Length}{Length}
- \o The widget's right padding.
+ \li \c padding-right
+ \li \l{#Length}{Length}
+ \li The widget's right padding.
\row
- \o \c padding-bottom
- \o \l{#Length}{Length}
- \o The widget's bottom padding.
+ \li \c padding-bottom
+ \li \l{#Length}{Length}
+ \li The widget's bottom padding.
\row
- \o \c padding-left
- \o \l{#Length}{Length}
- \o The widget's left padding.
+ \li \c padding-left
+ \li \l{#Length}{Length}
+ \li The widget's left padding.
\row
- \o \bold{\c paint-alternating-row-colors-for-empty-area}
+ \li \b{\c paint-alternating-row-colors-for-empty-area}
\target paint-alternating-row-colors-for-empty-area-prop
- \o \c bool
- \o Whether the QTreeView paints alternating row colors for the empty
+ \li \c bool
+ \li Whether the QTreeView paints alternating row colors for the empty
area (i.e the area where there are no items)
\row
- \o \bold{\c position} \target position-prop
- \o \c relative \BR
+ \li \b{\c position} \target position-prop
+ \li \c relative \BR
| \c absolute
- \o Whether offsets specified using \l{Qt Style Sheets Reference#left-prop}{left},
+ \li Whether offsets specified using \l{Qt Style Sheets Reference#left-prop}{left},
\l{#right-prop}{right}, \l{Qt Style Sheets Reference#top-prop}{top}, and
\l{#bottom-prop}{bottom} are relative or absolute
coordinates.
relative.
\row
- \o \bold{\c right} \target right-prop
- \o \l{#Length}{Length}
- \o If \l{#position-prop}{position} is \c relative (the
+ \li \b{\c right} \target right-prop
+ \li \l{#Length}{Length}
+ \li If \l{#position-prop}{position} is \c relative (the
default), moves a \l{subcontrol} by a certain offset to
the left; specifying \tt{right: \e{x}} is then equivalent
to specifying \tt{\l{Qt Style Sheets Reference#left-prop}{left}: -\e{x}}.
\l{#bottom-prop}{bottom}.
\row
- \o \bold{\c selection-background-color*} \target selection-background-color-prop
- \o \l{#Brush}{Brush} \BR
- \o The background of selected text or items.
+ \li \b{\c selection-background-color*} \target selection-background-color-prop
+ \li \l{#Brush}{Brush} \BR
+ \li The background of selected text or items.
This property is supported by all widgets that respect
the \l QWidget::palette and that show selection text.
\l{Qt Style Sheets Reference#background-prop}{background}.
\row
- \o \bold{\c selection-color*} \target selection-color-prop
- \o \l{#Brush}{Brush} \BR
- \o The foreground of selected text or items.
+ \li \b{\c selection-color*} \target selection-color-prop
+ \li \l{#Brush}{Brush} \BR
+ \li The foreground of selected text or items.
This property is supported by all widgets that respect
the \l QWidget::palette and that show selection text.
and \l{#color-prop}{color}.
\row
- \o \bold{\c show-decoration-selected*} \target show-decoration-selected-prop
- \o \l{#Boolean}{Boolean}
- \o Controls whether selections in a QListView cover the
+ \li \b{\c show-decoration-selected*} \target show-decoration-selected-prop
+ \li \l{#Boolean}{Boolean}
+ \li Controls whether selections in a QListView cover the
entire row or just the extent of the text.
If this property is not specified, it defaults to the
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 73
\row
- \o \bold{\c spacing*} \target spacing-prop
- \o \l{#Length}{Length}
- \o Internal spacing in the widget.
+ \li \b{\c spacing*} \target spacing-prop
+ \li \l{#Length}{Length}
+ \li Internal spacing in the widget.
This property is supported by QCheckBox, checkable
\l{QGroupBox}es, QMenuBar, and QRadioButton.
\l{#margin-prop}{margin}.
\row
- \o \bold{\c subcontrol-origin*} \target subcontrol-origin-prop
- \o \l{#Origin}{Origin}
- \o The origin rectangle of the \l subcontrol within the
+ \li \b{\c subcontrol-origin*} \target subcontrol-origin-prop
+ \li \l{#Origin}{Origin}
+ \li The origin rectangle of the \l subcontrol within the
parent element.
If this property is not specified, the default is \c
\l{Qt Style Sheets Reference#subcontrol-position-prop}{subcontrol-position}.
\row
- \o \bold{\c subcontrol-position*} \target subcontrol-position-prop
- \o \l{#Alignment}{Alignment}
- \o The alignment of the \l subcontrol within the origin
+ \li \b{\c subcontrol-position*} \target subcontrol-position-prop
+ \li \l{#Alignment}{Alignment}
+ \li The alignment of the \l subcontrol within the origin
rectangle specified by \l{Qt Style Sheets Reference#subcontrol-origin-prop}
{subcontrol-origin}.
\l{Qt Style Sheets Reference#subcontrol-origin-prop}{subcontrol-origin}.
\row
- \o \bold{\c text-align} \target text-align-prop
- \o \l{#Alignment}{Alignment}
- \o The alignment of text and icon within the contents of the widget.
+ \li \b{\c text-align} \target text-align-prop
+ \li \l{#Alignment}{Alignment}
+ \li The alignment of text and icon within the contents of the widget.
If this value is not specified, it defaults to the value
that depends on the native style.
and QProgressBar.
\row
- \o \bold{\c text-decoration}
- \o \c none \BR
+ \li \b{\c text-decoration}
+ \li \c none \BR
\c underline \BR
\c overline \BR
\c line-through
- \o Additional text effects
+ \li Additional text effects
\row
- \o \bold{\c top} \target top-prop
- \o \l{#Length}{Length}
- \o If \l{#position-prop}{position} is \c relative (the
+ \li \b{\c top} \target top-prop
+ \li \l{#Length}{Length}
+ \li If \l{#position-prop}{position} is \c relative (the
default), moves a \l{subcontrol} by a certain offset
down.
\l{#bottom-prop}{bottom}.
\row
- \o \bold{\c width} \target width-prop
- \o \l{#Length}{Length}
- \o The width of a \l{subcontrol} (or a widget in some cases).
+ \li \b{\c width} \target width-prop
+ \li \l{#Length}{Length}
+ \li The width of a \l{subcontrol} (or a widget in some cases).
If this property is not specified, it defaults to a value
that depends on the subcontrol/widget and on the current style.
\table 100%
\header
- \o Name
- \o QStyle::StandardPixmap
+ \li Name
+ \li QStyle::StandardPixmap
\row
- \o backward-icon
- \o QStyle::SP_ArrowBack
+ \li backward-icon
+ \li QStyle::SP_ArrowBack
\row
- \o cd-icon
- \o QStyle::SP_DriveCDIcon
+ \li cd-icon
+ \li QStyle::SP_DriveCDIcon
\row
- \o computer-icon
- \o QStyle::SP_ComputerIcon
+ \li computer-icon
+ \li QStyle::SP_ComputerIcon
\row
- \o desktop-icon
- \o QStyle::SP_DesktopIcon
+ \li desktop-icon
+ \li QStyle::SP_DesktopIcon
\row
- \o dialog-apply-icon
- \o QStyle::SP_DialogApplyButton
+ \li dialog-apply-icon
+ \li QStyle::SP_DialogApplyButton
\row
- \o dialog-cancel-icon
- \o QStyle::SP_DialogCancelButton
+ \li dialog-cancel-icon
+ \li QStyle::SP_DialogCancelButton
\row
- \o dialog-close-icon
- \o QStyle::SP_DialogCloseButton
+ \li dialog-close-icon
+ \li QStyle::SP_DialogCloseButton
\row
- \o dialog-discard-icon
- \o QStyle::SP_DialogDiscardButton
+ \li dialog-discard-icon
+ \li QStyle::SP_DialogDiscardButton
\row
- \o dialog-help-icon
- \o QStyle::SP_DialogHelpButton
+ \li dialog-help-icon
+ \li QStyle::SP_DialogHelpButton
\row
- \o dialog-no-icon
- \o QStyle::SP_DialogNoButton
+ \li dialog-no-icon
+ \li QStyle::SP_DialogNoButton
\row
- \o dialog-ok-icon
- \o QStyle::SP_DialogOkButton
+ \li dialog-ok-icon
+ \li QStyle::SP_DialogOkButton
\row
- \o dialog-open-icon
- \o QStyle::SP_DialogOpenButton
+ \li dialog-open-icon
+ \li QStyle::SP_DialogOpenButton
\row
- \o dialog-reset-icon
- \o QStyle::SP_DialogResetButton
+ \li dialog-reset-icon
+ \li QStyle::SP_DialogResetButton
\row
- \o dialog-save-icon
- \o QStyle::SP_DialogSaveButton
+ \li dialog-save-icon
+ \li QStyle::SP_DialogSaveButton
\row
- \o dialog-yes-icon
- \o QStyle::SP_DialogYesButton
+ \li dialog-yes-icon
+ \li QStyle::SP_DialogYesButton
\row
- \o directory-closed-icon
- \o QStyle::SP_DirClosedIcon
+ \li directory-closed-icon
+ \li QStyle::SP_DirClosedIcon
\row
- \o directory-icon
- \o QStyle::SP_DirIcon
+ \li directory-icon
+ \li QStyle::SP_DirIcon
\row
- \o directory-link-icon
- \o QStyle::SP_DirLinkIcon
+ \li directory-link-icon
+ \li QStyle::SP_DirLinkIcon
\row
- \o directory-open-icon
- \o QStyle::SP_DirOpenIcon
+ \li directory-open-icon
+ \li QStyle::SP_DirOpenIcon
\row
- \o dockwidget-close-icon
- \o QStyle::SP_DockWidgetCloseButton
+ \li dockwidget-close-icon
+ \li QStyle::SP_DockWidgetCloseButton
\row
- \o downarrow-icon
- \o QStyle::SP_ArrowDown
+ \li downarrow-icon
+ \li QStyle::SP_ArrowDown
\row
- \o dvd-icon
- \o QStyle::SP_DriveDVDIcon
+ \li dvd-icon
+ \li QStyle::SP_DriveDVDIcon
\row
- \o file-icon
- \o QStyle::SP_FileIcon
+ \li file-icon
+ \li QStyle::SP_FileIcon
\row
- \o file-link-icon
- \o QStyle::SP_FileLinkIcon
+ \li file-link-icon
+ \li QStyle::SP_FileLinkIcon
\omit
\row
- \o filedialog-backward-icon
- \o QStyle::SP_FileDialogBack
+ \li filedialog-backward-icon
+ \li QStyle::SP_FileDialogBack
\endomit
\row
- \o filedialog-contentsview-icon
- \o QStyle::SP_FileDialogContentsView
+ \li filedialog-contentsview-icon
+ \li QStyle::SP_FileDialogContentsView
\row
- \o filedialog-detailedview-icon
- \o QStyle::SP_FileDialogDetailedView
+ \li filedialog-detailedview-icon
+ \li QStyle::SP_FileDialogDetailedView
\row
- \o filedialog-end-icon
- \o QStyle::SP_FileDialogEnd
+ \li filedialog-end-icon
+ \li QStyle::SP_FileDialogEnd
\row
- \o filedialog-infoview-icon
- \o QStyle::SP_FileDialogInfoView
+ \li filedialog-infoview-icon
+ \li QStyle::SP_FileDialogInfoView
\row
- \o filedialog-listview-icon
- \o QStyle::SP_FileDialogListView
+ \li filedialog-listview-icon
+ \li QStyle::SP_FileDialogListView
\row
- \o filedialog-new-directory-icon
- \o QStyle::SP_FileDialogNewFolder
+ \li filedialog-new-directory-icon
+ \li QStyle::SP_FileDialogNewFolder
\row
- \o filedialog-parent-directory-icon
- \o QStyle::SP_FileDialogToParent
+ \li filedialog-parent-directory-icon
+ \li QStyle::SP_FileDialogToParent
\row
- \o filedialog-start-icon
- \o QStyle::SP_FileDialogStart
+ \li filedialog-start-icon
+ \li QStyle::SP_FileDialogStart
\row
- \o floppy-icon
- \o QStyle::SP_DriveFDIcon
+ \li floppy-icon
+ \li QStyle::SP_DriveFDIcon
\row
- \o forward-icon
- \o QStyle::SP_ArrowForward
+ \li forward-icon
+ \li QStyle::SP_ArrowForward
\row
- \o harddisk-icon
- \o QStyle::SP_DriveHDIcon
+ \li harddisk-icon
+ \li QStyle::SP_DriveHDIcon
\row
- \o home-icon
- \o QStyle::SP_DirHomeIcon
+ \li home-icon
+ \li QStyle::SP_DirHomeIcon
\row
- \o leftarrow-icon
- \o QStyle::SP_ArrowLeft
+ \li leftarrow-icon
+ \li QStyle::SP_ArrowLeft
\row
- \o messagebox-critical-icon
- \o QStyle::SP_MessageBoxCritical
+ \li messagebox-critical-icon
+ \li QStyle::SP_MessageBoxCritical
\row
- \o messagebox-information-icon
- \o QStyle::SP_MessageBoxInformation
+ \li messagebox-information-icon
+ \li QStyle::SP_MessageBoxInformation
\row
- \o messagebox-question-icon
- \o QStyle::SP_MessageBoxQuestion
+ \li messagebox-question-icon
+ \li QStyle::SP_MessageBoxQuestion
\row
- \o messagebox-warning-icon
- \o QStyle::SP_MessageBoxWarning
+ \li messagebox-warning-icon
+ \li QStyle::SP_MessageBoxWarning
\row
- \o network-icon
- \o QStyle::SP_DriveNetIcon
+ \li network-icon
+ \li QStyle::SP_DriveNetIcon
\row
- \o rightarrow-icon
- \o QStyle::SP_ArrowRight
+ \li rightarrow-icon
+ \li QStyle::SP_ArrowRight
\row
- \o titlebar-contexthelp-icon
- \o QStyle::SP_TitleBarContextHelpButton
+ \li titlebar-contexthelp-icon
+ \li QStyle::SP_TitleBarContextHelpButton
\row
- \o titlebar-maximize-icon
- \o QStyle::SP_TitleBarMaxButton
+ \li titlebar-maximize-icon
+ \li QStyle::SP_TitleBarMaxButton
\row
- \o titlebar-menu-icon
- \o QStyle::SP_TitleBarMenuButton
+ \li titlebar-menu-icon
+ \li QStyle::SP_TitleBarMenuButton
\row
- \o titlebar-minimize-icon
- \o QStyle::SP_TitleBarMinButton
+ \li titlebar-minimize-icon
+ \li QStyle::SP_TitleBarMinButton
\row
- \o titlebar-normal-icon
- \o QStyle::SP_TitleBarNormalButton
+ \li titlebar-normal-icon
+ \li QStyle::SP_TitleBarNormalButton
\row
- \o titlebar-shade-icon
- \o QStyle::SP_TitleBarShadeButton
+ \li titlebar-shade-icon
+ \li QStyle::SP_TitleBarShadeButton
\row
- \o titlebar-unshade-icon
- \o QStyle::SP_TitleBarUnshadeButton
+ \li titlebar-unshade-icon
+ \li QStyle::SP_TitleBarUnshadeButton
\row
- \o trash-icon
- \o QStyle::SP_TrashIcon
+ \li trash-icon
+ \li QStyle::SP_TrashIcon
\row
- \o uparrow-icon
- \o QStyle::SP_ArrowUp
+ \li uparrow-icon
+ \li QStyle::SP_ArrowUp
\endtable
\table 100%
\header
- \o Type
- \o Syntax
- \o Description
+ \li Type
+ \li Syntax
+ \li Description
\row
- \o \bold Alignment \target Alignment
- \o \{ \c top \BR
+ \li \b Alignment \target Alignment
+ \li \{ \c top \BR
| \c bottom \BR
| \c left \BR
| \c right \BR
| \c center \}*
- \o Horizontal and/or vertical alignment.
+ \li Horizontal and/or vertical alignment.
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 80
\row
- \o \bold Attachment \target Attachment
- \o \{ \c scroll \BR
+ \li \b Attachment \target Attachment
+ \li \{ \c scroll \BR
| \c fixed \}*
- \o Scroll or fixed attachment.
+ \li Scroll or fixed attachment.
\row
- \o \bold Background \target Background
- \o \{ \l{#Brush}{Brush} \BR
+ \li \b Background \target Background
+ \li \{ \l{#Brush}{Brush} \BR
| \l{#Url}{Url} \BR
| \l{#Repeat}{Repeat} \BR
| \l{#Alignment}{Alignment} \}*
- \o A sequence of \l{#Brush}{Brush}, \l{#Url}{Url},
+ \li A sequence of \l{#Brush}{Brush}, \l{#Url}{Url},
\l{#Repeat}{Repeat}, and \l{#Alignment}{Alignment}.
\row
- \o \bold Boolean \target Boolean
- \o 0 | 1
- \o True (\c 1) or false (\c 0).
+ \li \b Boolean \target Boolean
+ \li 0 | 1
+ \li True (\c 1) or false (\c 0).
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 81
\row
- \o \bold Border \target Border
- \o \{ \l{#Border Style}{Border Style} \BR
+ \li \b Border \target Border
+ \li \{ \l{#Border Style}{Border Style} \BR
| \l{#Length}{Length} \BR
| \l{#Brush}{Brush} \}*
- \o Shorthand border property.
+ \li Shorthand border property.
\row
- \o \bold{Border Image} \target Border Image
- \o \c none \BR
+ \li \b{Border Image} \target Border Image
+ \li \c none \BR
| \l{Url} \l{Number}\{4\} \BR (\c stretch | \c repeat){0,2}
- \o A border image is an image that is composed of nine parts
+ \li A border image is an image that is composed of nine parts
(top left, top center, top right, center left, center,
center right, bottom left, bottom center, and bottom
right). When a border of a certain size is required, the
{CSS3 Draft Specification} for details.
\row
- \o \bold{Border Style} \target Border Style
- \o \c dashed \BR
+ \li \b{Border Style} \target Border Style
+ \li \c dashed \BR
| \c dot-dash \BR
| \c dot-dot-dash \BR
| \c dotted \BR
| \c ridge \BR
| \c solid \BR
| \c none
- \o Specifies the pattern used to draw a border.
+ \li Specifies the pattern used to draw a border.
See the \l{http://www.w3.org/TR/css3-background/#border-style}
{CSS3 Draft Specification} for details.
\row
- \o \bold{Box Colors} \target Box Colors
- \o \l{#Brush}{Brush}\{1,4\}
- \o One to four occurrences of \l{#Brush}{Brush}, specifying the top,
+ \li \b{Box Colors} \target Box Colors
+ \li \l{#Brush}{Brush}\{1,4\}
+ \li One to four occurrences of \l{#Brush}{Brush}, specifying the top,
right, bottom, and left edges of a box, respectively. If
the left color is not specified, it is taken to be the
same as the right color. If the bottom color is not
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 82
\row
- \o \bold{Box Lengths} \target Box Lengths
- \o \l{#Length}{Length}\{1,4\}
- \o One to four occurrences of \l{#Length}{Length}, specifying the
+ \li \b{Box Lengths} \target Box Lengths
+ \li \l{#Length}{Length}\{1,4\}
+ \li One to four occurrences of \l{#Length}{Length}, specifying the
top, right, bottom, and left edges of a box,
respectively. If the left length is not specified, it is
taken to be the same as the right length. If the bottom
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 83
\row
- \o \bold{Brush} \target Brush
- \o \l{#Color}{Color} \BR
+ \li \b{Brush} \target Brush
+ \li \l{#Color}{Color} \BR
| \l{Gradient} \BR
| \l{PaletteRole}
- \o Specifies a Color or a Gradient or an entry in the Palette.
+ \li Specifies a Color or a Gradient or an entry in the Palette.
\row
- \o \bold{Color} \target Color
- \o \tt{rgb(\e{r}, \e{g}, \e{b})} \BR
+ \li \b{Color} \target Color
+ \li \tt{rgb(\e{r}, \e{g}, \e{b})} \BR
| \tt{rgba(\e{r}, \e{g}, \e{b}, \e{a})} \BR
| \tt{hsv(\e{h}, \e{s}, \e{v})} \BR
| \tt{hsva(\e{h}, \e{s}, \e{v}, \e{a})} \BR
| \tt{#\e{rrggbb}} \BR
| \l{QColor::setNamedColor()}{Color Name} \BR
- \o Specifies a color as RGB (red, green, blue) or RGBA
+ \li Specifies a color as RGB (red, green, blue) or RGBA
(red, green, blue, alpha) or HSV (hue, saturation, value) or HSVA
(hue, saturation, value, alpha) or a named color. The \c rgb() or \c rgba()
syntax can be used with integer values between 0 and 255, or with
\l{http://www.w3.org/TR/CSS21/syndata.html#color-units}{here}.
\row
- \o \bold{Font} \target Font
- \o (\l{#Font Style}{Font Style} | \l{#Font Weight}{Font Weight}){0,2} \l{#Font Size}{Font Size} String
- \o Shorthand font property.
+ \li \b{Font} \target Font
+ \li (\l{#Font Style}{Font Style} | \l{#Font Weight}{Font Weight}){0,2} \l{#Font Size}{Font Size} String
+ \li Shorthand font property.
\row
- \o \bold{Font Size} \target Font Size
- \o \l{Length}
- \o The size of a font.
+ \li \b{Font Size} \target Font Size
+ \li \l{Length}
+ \li The size of a font.
\row
- \o \bold{Font Style} \target Font Style
- \o \c normal \BR
+ \li \b{Font Style} \target Font Style
+ \li \c normal \BR
| \c italic \BR
| \c oblique
- \o The style of a font.
+ \li The style of a font.
\row
- \o \bold{Font Weight} \target Font Weight
- \o \c normal \BR
+ \li \b{Font Weight} \target Font Weight
+ \li \c normal \BR
| \c bold \BR
| \c 100 \BR
| \c 200 \BR
... \BR
| \c 900
- \o The weight of a font.
+ \li The weight of a font.
\row
- \o \bold{Gradient} \target Gradient
- \o \c qlineargradient \BR
+ \li \b{Gradient} \target Gradient
+ \li \c qlineargradient \BR
| \c qradialgradient \BR
| \c qconicalgradient
- \o Specifies gradient fills. There are three types of gradient fills:
+ \li Specifies gradient fills. There are three types of gradient fills:
\list
- \o \e{Linear} gradients interpolate colors between start and
+ \li \e{Linear} gradients interpolate colors between start and
end points.
- \o \e{Radial} gradients interpolate colors between a focal
+ \li \e{Radial} gradients interpolate colors between a focal
point and end points on a circle surrounding it.
- \o \e{Conical} gradients interpolate colors around a center
+ \li \e{Conical} gradients interpolate colors around a center
point.
\endlist
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 85
\row
- \o \bold{Icon} \target Icon
- \o (\l{#Url}{Url} (\c disabled | \c active | \c normal | \c selected)?
+ \li \b{Icon} \target Icon
+ \li (\l{#Url}{Url} (\c disabled | \c active | \c normal | \c selected)?
(\c on | \c off)? )*
- \o A list of url, QIcon::Mode and QIcon::State.
+ \li A list of url, QIcon::Mode and QIcon::State.
Example:
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 86
\row
- \o \bold{Length} \target Length
- \o \l{#Number}{Number} (\c px | \c pt | \c em | \c ex)?
- \o A number followed by a measurement unit. The CSS standard recommends
+ \li \b{Length} \target Length
+ \li \l{#Number}{Number} (\c px | \c pt | \c em | \c ex)?
+ \li A number followed by a measurement unit. The CSS standard recommends
that user agents must
\l{http://www.w3.org/TR/CSS21/syndata.html#illegalvalues}{ignore}
a declaration with an illegal value. In Qt, it is mandatory to
in most contexts. The supported units are:
\list
- \o \c px: pixels
- \o \c pt: the size of one point (i.e., 1/72 of an inch)
- \o \c em: the em width of the font (i.e., the width of 'M')
- \o \c ex: the ex width of the font (i.e., the height of 'x')
+ \li \c px: pixels
+ \li \c pt: the size of one point (i.e., 1/72 of an inch)
+ \li \c em: the em width of the font (i.e., the width of 'M')
+ \li \c ex: the ex width of the font (i.e., the height of 'x')
\endlist
\row
- \o \bold{Number} \target Number
- \o A decimal integer or a real number
- \o Examples: \c 0, \c 18, \c +127, \c -255, \c 12.34, \c -.5,
+ \li \b{Number} \target Number
+ \li A decimal integer or a real number
+ \li Examples: \c 0, \c 18, \c +127, \c -255, \c 12.34, \c -.5,
\c 0009.
\row
- \o \bold{Origin} \target Origin
- \o \c margin \BR
+ \li \b{Origin} \target Origin
+ \li \c margin \BR
| \c border \BR
| \c padding \BR
| \c content
- \o Indicates which of four rectangles to use.
+ \li Indicates which of four rectangles to use.
\list
- \o \c margin: The margin rectangle. The margin falls outside the border.
- \o \c border: The border rectangle. This is where any border is drawn.
- \o \c padding: The padding rectangle. Unlike the margins,
+ \li \c margin: The margin rectangle. The margin falls outside the border.
+ \li \c border: The border rectangle. This is where any border is drawn.
+ \li \c padding: The padding rectangle. Unlike the margins,
padding is located inside the border.
- \o \c content: The content rectangle. This specifies where
+ \li \c content: The content rectangle. This specifies where
the actual contents go, excluding any
padding, border, or margin.
\endlist
See also \l{The Box Model}.
\row
- \o \bold{PaletteRole} \target PaletteRole
- \o \c alternate-base \BR
+ \li \b{PaletteRole} \target PaletteRole
+ \li \c alternate-base \BR
| \c base \BR
| \c bright-text \BR
| \c button \BR
| \c text \BR
| \c window \BR
| \c window-text \BR
- \o These values correspond the \l{QPalette::ColorRole}{Color roles}
+ \li These values correspond the \l{QPalette::ColorRole}{Color roles}
in the widget's QPalette.
For example,
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 87
\row
- \o \bold{Radius} \target Radius
- \o \l{#Length}{Length}\{1, 2\}
- \o One or two occurrences of \l{#Length}{Length}. If only one length is
+ \li \b{Radius} \target Radius
+ \li \l{#Length}{Length}\{1, 2\}
+ \li One or two occurrences of \l{#Length}{Length}. If only one length is
specified, it is used as the radius of the quarter circle
defining the corner. If two lengths are specified, the
first length is the horizontal radius of a quarter
ellipse, whereas the second length is the vertical radius.
\row
- \o \bold{Repeat} \target Repeat
- \o \c repeat-x \BR
+ \li \b{Repeat} \target Repeat
+ \li \c repeat-x \BR
| \c repeat-y \BR
| \c repeat \BR
| \c no-repeat
- \o A value indicating the nature of repetition.
+ \li A value indicating the nature of repetition.
\list
- \o \c repeat-x: Repeat horizontally.
- \o \c repeat-y: Repeat vertically.
- \o \c repeat: Repeat horizontally and vertically.
- \o \c no-repeat: Don't repeat.
+ \li \c repeat-x: Repeat horizontally.
+ \li \c repeat-y: Repeat vertically.
+ \li \c repeat: Repeat horizontally and vertically.
+ \li \c no-repeat: Don't repeat.
\endlist
\row
- \o \bold{Url} \target Url
- \o \tt{url(\e{filename})}
- \o \tt{\e{filename}} is the name of a file on the local disk
+ \li \b{Url} \target Url
+ \li \tt{url(\e{filename})}
+ \li \tt{\e{filename}} is the name of a file on the local disk
or stored using \l{the Qt Resource System}. Setting an
image implicitly sets the width and height of the element.
\table 100%
\header
- \o Pseudo-State
- \o Description
+ \li Pseudo-State
+ \li Description
- \row \o \c :active \target active
- \o This state is set when the widget resides in an active window.
+ \row \li \c :active \target active
+ \li This state is set when the widget resides in an active window.
\row
- \o \c :adjoins-item \target adjoins-item-ps
- \o This state is set when the \l{#branch-sub}{::branch} of a QTreeView
+ \li \c :adjoins-item \target adjoins-item-ps
+ \li This state is set when the \l{#branch-sub}{::branch} of a QTreeView
is adjacent to an item.
\row
- \o \c :alternate \target alternate-ps
- \o This state is set for every alternate row whe painting the row of
+ \li \c :alternate \target alternate-ps
+ \li This state is set for every alternate row whe painting the row of
a QAbstractItemView when QAbstractItemView::alternatingRowColors()
is set to true.
\row
- \o \c :bottom \target bottom-ps
- \o The item is positioned at the bottom. For example, a QTabBar
+ \li \c :bottom \target bottom-ps
+ \li The item is positioned at the bottom. For example, a QTabBar
that has its tabs positioned at the bottom.
\row
- \o \c :checked \target checked-ps
- \o The item is checked. For example, the
+ \li \c :checked \target checked-ps
+ \li The item is checked. For example, the
\l{QAbstractButton::checked}{checked} state of QAbstractButton.
\row
- \o \c :closable \target closable-ps
- \o The items can be closed. For example, the QDockWidget has the
+ \li \c :closable \target closable-ps
+ \li The items can be closed. For example, the QDockWidget has the
QDockWidget::DockWidgetClosable feature turned on.
\row
- \o \c :closed \target closed-ps
- \o The item is in the closed state. For example, an non-expanded
+ \li \c :closed \target closed-ps
+ \li The item is in the closed state. For example, an non-expanded
item in a QTreeView
\row
- \o \c :default \target default-ps
- \o The item is the default. For example, a
+ \li \c :default \target default-ps
+ \li The item is the default. For example, a
\l{QPushButton::default}{default} QPushButton or a default action
in a QMenu.
\row
- \o \c :disabled \target disabled-ps
- \o The item is \l{QWidget::enabled}{disabled}.
+ \li \c :disabled \target disabled-ps
+ \li The item is \l{QWidget::enabled}{disabled}.
\row
- \o \c :editable \target editable-ps
- \o The QComboBox is editable.
+ \li \c :editable \target editable-ps
+ \li The QComboBox is editable.
\row
- \o \c :edit-focus \target edit-focus-ps
- \o The item has edit focus (See QStyle::State_HasEditFocus). This state
+ \li \c :edit-focus \target edit-focus-ps
+ \li The item has edit focus (See QStyle::State_HasEditFocus). This state
is available only for Qt Extended applications.
\row
- \o \c :enabled \target enabled-ps
- \o The item is \l{QWidget::enabled}{enabled}.
+ \li \c :enabled \target enabled-ps
+ \li The item is \l{QWidget::enabled}{enabled}.
\row
- \o \c :exclusive \target exclusive-ps
- \o The item is part of an exclusive item group. For example, a menu
+ \li \c :exclusive \target exclusive-ps
+ \li The item is part of an exclusive item group. For example, a menu
item in a exclusive QActionGroup.
\row
- \o \c :first \target first-ps
- \o The item is the first (in a list). For example, the first
+ \li \c :first \target first-ps
+ \li The item is the first (in a list). For example, the first
tab in a QTabBar.
\row
- \o \c :flat \target flat-ps
- \o The item is flat. For example, a
+ \li \c :flat \target flat-ps
+ \li The item is flat. For example, a
\l{QPushButton::flat}{flat} QPushButton.
\row
- \o \c :floatable \target floatable-ps
- \o The items can be floated. For example, the QDockWidget has the
+ \li \c :floatable \target floatable-ps
+ \li The items can be floated. For example, the QDockWidget has the
QDockWidget::DockWidgetFloatable feature turned on.
\row
- \o \c :focus \target focus-ps
- \o The item has \l{QWidget::hasFocus()}{input focus}.
+ \li \c :focus \target focus-ps
+ \li The item has \l{QWidget::hasFocus()}{input focus}.
\row
- \o \c :has-children \target has-children-ps
- \o The item has children. For example, an item in a
+ \li \c :has-children \target has-children-ps
+ \li The item has children. For example, an item in a
QTreeView that has child items.
\row
- \o \c :has-siblings \target has-siblings-ps
- \o The item has siblings. For example, an item in a
+ \li \c :has-siblings \target has-siblings-ps
+ \li The item has siblings. For example, an item in a
QTreeView that siblings.
\row
- \o \c :horizontal \target horizontal-ps
- \o The item has horizontal orientation
+ \li \c :horizontal \target horizontal-ps
+ \li The item has horizontal orientation
\row
- \o \c :hover \target hover-ps
- \o The mouse is hovering over the item.
+ \li \c :hover \target hover-ps
+ \li The mouse is hovering over the item.
\row
- \o \c :indeterminate \target indeterminate-ps
- \o The item has indeterminate state. For example, a QCheckBox
+ \li \c :indeterminate \target indeterminate-ps
+ \li The item has indeterminate state. For example, a QCheckBox
or QRadioButton is \l{Qt::PartiallyChecked}{partially checked}.
\row
- \o \c :last \target last-ps
- \o The item is the last (in a list). For example, the last
+ \li \c :last \target last-ps
+ \li The item is the last (in a list). For example, the last
tab in a QTabBar.
\row
- \o \c :left \target left-ps
- \o The item is positioned at the left. For example, a QTabBar
+ \li \c :left \target left-ps
+ \li The item is positioned at the left. For example, a QTabBar
that has its tabs positioned at the left.
\row
- \o \c :maximized \target maximized-ps
- \o The item is maximized. For example, a maximized QMdiSubWindow.
+ \li \c :maximized \target maximized-ps
+ \li The item is maximized. For example, a maximized QMdiSubWindow.
\row
- \o \c :middle \target middle-ps
- \o The item is in the middle (in a list). For example, a tab
+ \li \c :middle \target middle-ps
+ \li The item is in the middle (in a list). For example, a tab
that is not in the beginning or the end in a QTabBar.
\row
- \o \c :minimized \target minimized-ps
- \o The item is minimized. For example, a minimized QMdiSubWindow.
+ \li \c :minimized \target minimized-ps
+ \li The item is minimized. For example, a minimized QMdiSubWindow.
\row
- \o \c :movable \target movable-ps
- \o The item can be moved around. For example, the QDockWidget has the
+ \li \c :movable \target movable-ps
+ \li The item can be moved around. For example, the QDockWidget has the
QDockWidget::DockWidgetMovable feature turned on.
\row
- \o \c :no-frame \target no-frame-ps
- \o The item has no frame. For example, a frameless QSpinBox
+ \li \c :no-frame \target no-frame-ps
+ \li The item has no frame. For example, a frameless QSpinBox
or QLineEdit.
\row
- \o \c :non-exclusive \target non-exclusive-ps
- \o The item is part of a non-exclusive item group. For example, a menu
+ \li \c :non-exclusive \target non-exclusive-ps
+ \li The item is part of a non-exclusive item group. For example, a menu
item in a non-exclusive QActionGroup.
\row
- \o \c :off \target off-ps
- \o For items that can be toggled, this applies to items
+ \li \c :off \target off-ps
+ \li For items that can be toggled, this applies to items
in the "off" state.
\row
- \o \c :on \target on-ps
- \o For items that can be toggled, this applies to widgets
+ \li \c :on \target on-ps
+ \li For items that can be toggled, this applies to widgets
in the "on" state.
\row
- \o \c :only-one \target only-one-ps
- \o The item is the only one (in a list). For example, a lone tab
+ \li \c :only-one \target only-one-ps
+ \li The item is the only one (in a list). For example, a lone tab
in a QTabBar.
\row
- \o \c :open \target open-ps
- \o The item is in the open state. For example, an expanded
+ \li \c :open \target open-ps
+ \li The item is in the open state. For example, an expanded
item in a QTreeView, or a QComboBox or QPushButton with
an open menu.
\row
- \o \c :next-selected \target next-selected-ps
- \o The next item (in a list) is selected. For example, the
+ \li \c :next-selected \target next-selected-ps
+ \li The next item (in a list) is selected. For example, the
selected tab of a QTabBar is next to this item.
\row
- \o \c :pressed \target pressed-ps
- \o The item is being pressed using the mouse.
+ \li \c :pressed \target pressed-ps
+ \li The item is being pressed using the mouse.
\row
- \o \c :previous-selected \target previous-selected-ps
- \o The previous item (in a list) is selected. For example, a
+ \li \c :previous-selected \target previous-selected-ps
+ \li The previous item (in a list) is selected. For example, a
tab in a QTabBar that is next to the selected tab.
\row
- \o \c :read-only \target read-only-ps
- \o The item is marked read only or non-editable. For example,
+ \li \c :read-only \target read-only-ps
+ \li The item is marked read only or non-editable. For example,
a read only QLineEdit or a non-editable QComboBox.
\row
- \o \c :right \target right-ps
- \o The item is positioned at the right. For example, a QTabBar
+ \li \c :right \target right-ps
+ \li The item is positioned at the right. For example, a QTabBar
that has its tabs positioned at the right.
\row
- \o \c :selected \target selected-ps
- \o The item is selected. For example, the selected tab in
+ \li \c :selected \target selected-ps
+ \li The item is selected. For example, the selected tab in
a QTabBar or the selected item in a QMenu.
\row
- \o \c :top \target top-ps
- \o The item is positioned at the top. For example, a QTabBar
+ \li \c :top \target top-ps
+ \li The item is positioned at the top. For example, a QTabBar
that has its tabs positioned at the top.
\row
- \o \c :unchecked \target unchecked-ps
- \o The item is
+ \li \c :unchecked \target unchecked-ps
+ \li The item is
\l{QAbstractButton::checked}{unchecked}.
\row
- \o \c :vertical \target vertical-ps
- \o The item has vertical orientation.
+ \li \c :vertical \target vertical-ps
+ \li The item has vertical orientation.
\row
- \o \c :window \target window-ps
- \o The widget is a window (i.e top level widget)
+ \li \c :window \target window-ps
+ \li The widget is a window (i.e top level widget)
\endtable
\table 100%
\header
- \o Sub-Control
- \o Description
+ \li Sub-Control
+ \li Description
\row
- \o \c ::add-line \target add-line-sub
- \o The button to add a line of a QScrollBar.
+ \li \c ::add-line \target add-line-sub
+ \li The button to add a line of a QScrollBar.
\row
- \o \c ::add-page \target add-page-sub
- \o The region between the handle (slider) and the \l{#add-line-sub}{add-line}
+ \li \c ::add-page \target add-page-sub
+ \li The region between the handle (slider) and the \l{#add-line-sub}{add-line}
of a QScrollBar.
\row
- \o \c ::branch \target branch-sub
- \o The branch indicator of a QTreeView.
+ \li \c ::branch \target branch-sub
+ \li The branch indicator of a QTreeView.
\row
- \o \c ::chunk \target chunk-sub
- \o The progress chunk of a QProgressBar.
+ \li \c ::chunk \target chunk-sub
+ \li The progress chunk of a QProgressBar.
\row
- \o \c ::close-button \target close-button-sub
- \o The close button of a QDockWidget or tabs of QTabBar
+ \li \c ::close-button \target close-button-sub
+ \li The close button of a QDockWidget or tabs of QTabBar
\row
- \o \c ::corner \target corner-sub
- \o The corner between two scrollbars in a QAbstractScrollArea
+ \li \c ::corner \target corner-sub
+ \li The corner between two scrollbars in a QAbstractScrollArea
\row
- \o \c ::down-arrow \target down-arrow-sub
- \o The down arrow of a QComboBox, QHeaderView (sort indicator),
+ \li \c ::down-arrow \target down-arrow-sub
+ \li The down arrow of a QComboBox, QHeaderView (sort indicator),
QScrollBar or QSpinBox.
\row
- \o \c ::down-button \target down-button-sub
- \o The down button of a QScrollBar or a QSpinBox.
+ \li \c ::down-button \target down-button-sub
+ \li The down button of a QScrollBar or a QSpinBox.
\row
- \o \c ::drop-down \target drop-down-sub
- \o The drop-down button of a QComboBox.
+ \li \c ::drop-down \target drop-down-sub
+ \li The drop-down button of a QComboBox.
\row
- \o \c ::float-button \target float-button-sub
- \o The float button of a QDockWidget
+ \li \c ::float-button \target float-button-sub
+ \li The float button of a QDockWidget
\row
- \o \c ::groove \target groove-sub
- \o The groove of a QSlider.
+ \li \c ::groove \target groove-sub
+ \li The groove of a QSlider.
\row
- \o \c ::indicator \target indicator-sub
- \o The indicator of a QAbstractItemView, a QCheckBox, a QRadioButton,
+ \li \c ::indicator \target indicator-sub
+ \li The indicator of a QAbstractItemView, a QCheckBox, a QRadioButton,
a checkable QMenu item or a checkable QGroupBox.
\row
- \o \c ::handle \target handle-sub
- \o The handle (slider) of a QScrollBar, a QSplitter, or a QSlider.
+ \li \c ::handle \target handle-sub
+ \li The handle (slider) of a QScrollBar, a QSplitter, or a QSlider.
\row
- \o \c ::icon \target icon-sub
- \o The icon of a QAbstractItemView or a QMenu.
+ \li \c ::icon \target icon-sub
+ \li The icon of a QAbstractItemView or a QMenu.
\row
- \o \c ::item \target item-sub
- \o An item of a QAbstractItemView, a QMenuBar, a QMenu, or
+ \li \c ::item \target item-sub
+ \li An item of a QAbstractItemView, a QMenuBar, a QMenu, or
a QStatusBar.
\row
- \o \c ::left-arrow \target left-arrow-sub
- \o The left arrow of a QScrollBar.
+ \li \c ::left-arrow \target left-arrow-sub
+ \li The left arrow of a QScrollBar.
\row
- \o \c ::left-corner \target left-corner-sub
- \o The left corner of a QTabWidget. For example, this control can be
+ \li \c ::left-corner \target left-corner-sub
+ \li The left corner of a QTabWidget. For example, this control can be
used to control position the left corner widget in a QTabWidget.
\row
- \o \c ::menu-arrow \target menu-arrow-sub
- \o The arrow of a QToolButton with a menu.
+ \li \c ::menu-arrow \target menu-arrow-sub
+ \li The arrow of a QToolButton with a menu.
\row
- \o \c ::menu-button \target menu-button-sub
- \o The menu button of a QToolButton.
+ \li \c ::menu-button \target menu-button-sub
+ \li The menu button of a QToolButton.
\row
- \o \c ::menu-indicator \target menu-indicator-sub
- \o The menu indicator of a QPushButton.
+ \li \c ::menu-indicator \target menu-indicator-sub
+ \li The menu indicator of a QPushButton.
\row
- \o \c ::right-arrow \target right-arrow-sub
- \o The right arrow of a QMenu or a QScrollBar.
+ \li \c ::right-arrow \target right-arrow-sub
+ \li The right arrow of a QMenu or a QScrollBar.
\row
- \o \c ::pane \target pane-sub
- \o The pane (frame) of a QTabWidget.
+ \li \c ::pane \target pane-sub
+ \li The pane (frame) of a QTabWidget.
\row
- \o \c ::right-corner \target right-corner-sub
- \o The right corner of a QTabWidget. For example, this control can be
+ \li \c ::right-corner \target right-corner-sub
+ \li The right corner of a QTabWidget. For example, this control can be
used to control the position the right corner widget in a QTabWidget.
\row
- \o \c ::scroller \target scroller-sub
- \o The scroller of a QMenu or QTabBar.
+ \li \c ::scroller \target scroller-sub
+ \li The scroller of a QMenu or QTabBar.
\row
- \o \c ::section \target section-sub
- \o The section of a QHeaderView.
+ \li \c ::section \target section-sub
+ \li The section of a QHeaderView.
\row
- \o \c ::separator \target separator-sub
- \o The separator of a QMenu or in a QMainWindow.
+ \li \c ::separator \target separator-sub
+ \li The separator of a QMenu or in a QMainWindow.
\row
- \o \c ::sub-line \target sub-line-sub
- \o The button to subtract a line of a QScrollBar.
+ \li \c ::sub-line \target sub-line-sub
+ \li The button to subtract a line of a QScrollBar.
\row
- \o \c ::sub-page \target sub-page-sub
- \o The region between the handle (slider) and the \l{#sub-line-sub}{sub-line}
+ \li \c ::sub-page \target sub-page-sub
+ \li The region between the handle (slider) and the \l{#sub-line-sub}{sub-line}
of a QScrollBar.
\row
- \o \c ::tab \target tab-sub
- \o The tab of a QTabBar or QToolBox.
+ \li \c ::tab \target tab-sub
+ \li The tab of a QTabBar or QToolBox.
\row
- \o \c ::tab-bar \target tab-bar-sub
- \o The tab bar of a QTabWidget. This subcontrol exists only to
+ \li \c ::tab-bar \target tab-bar-sub
+ \li The tab bar of a QTabWidget. This subcontrol exists only to
control the position of the QTabBar inside the QTabWidget. To
style the tabs using the \l{#tab-sub}{::tab} subcontrol.
\row
- \o \c ::tear \target tear-sub
- \o The tear indicator of a QTabBar.
+ \li \c ::tear \target tear-sub
+ \li The tear indicator of a QTabBar.
\row
- \o \c ::tearoff \target tearoff-sub
- \o The tear-off indicator of a QMenu.
+ \li \c ::tearoff \target tearoff-sub
+ \li The tear-off indicator of a QMenu.
\row
- \o \c ::text \target text-ps
- \o The text of a QAbstractItemView.
+ \li \c ::text \target text-ps
+ \li The text of a QAbstractItemView.
\row
- \o \c ::title \target title-sub
- \o The title of a QGroupBox or a QDockWidget.
+ \li \c ::title \target title-sub
+ \li The title of a QGroupBox or a QDockWidget.
\row
- \o \c ::up-arrow \target up-arrow-sub
- \o The up arrow of a QHeaderView (sort indicator), QScrollBar
+ \li \c ::up-arrow \target up-arrow-sub
+ \li The up arrow of a QHeaderView (sort indicator), QScrollBar
or a QSpinBox.
\row
- \o \c ::up-button \target up-button-sub
- \o The up button of a QSpinBox.
+ \li \c ::up-button \target up-button-sub
+ \li The up button of a QSpinBox.
\endtable
What happened is this:
\list
- \o We have made a request that cannot be satisfied using the
+ \li We have made a request that cannot be satisfied using the
native styles alone (e.g., the Windows XP theme engine doesn't
let us specify the background color of a button).
- \o Therefore, the button is rendered using style sheets.
- \o We haven't specified any values for
+ \li Therefore, the button is rendered using style sheets.
+ \li We haven't specified any values for
\l{Qt Style Sheets Reference#border-width-prop}{border-width} and
\l{Qt Style Sheets Reference#border-style-prop}{border-style}, so by default we obtain
a 0-pixel wide border of style \c none.
There are three types of QToolButtons.
\list
- \i The QToolButton has no menu. In this case, the QToolButton is styled
+ \li The QToolButton has no menu. In this case, the QToolButton is styled
exactly like QPushButton. See
\l{#Customizing QPushButton}{Customizing QPushButton} for an
example.
- \i The QToolButton has a menu and has the QToolButton::popupMode set to
+ \li The QToolButton has a menu and has the QToolButton::popupMode set to
QToolButton::DelayedPopup or QToolButton::InstantPopup. In this case,
the QToolButton is styled exactly like a QPushButton with a menu.
See \l{#Customizing QPushButton}{Customizing QPushButton} for an
example of the usage of the menu-indicator pseudo state.
- \i The QToolButton has its QToolButton::popupMode set to
+ \li The QToolButton has its QToolButton::popupMode set to
QToolButton::MenuButtonPopup. In this case, we style it as follows:
\endlist
\table
\row
- \o \inlineimage stylesheet-vline.png
- \o \inlineimage stylesheet-branch-more.png
- \o \inlineimage stylesheet-branch-end.png
- \o \inlineimage stylesheet-branch-closed.png
- \o \inlineimage stylesheet-branch-open.png
- \row
- \o vline.png
- \o branch-more.png
- \o branch-end.png
- \o branch-closed.png
- \o branch-open.png
+ \li \inlineimage stylesheet-vline.png
+ \li \inlineimage stylesheet-branch-more.png
+ \li \inlineimage stylesheet-branch-end.png
+ \li \inlineimage stylesheet-branch-closed.png
+ \li \inlineimage stylesheet-branch-open.png
+ \row
+ \li vline.png
+ \li branch-more.png
+ \li branch-end.png
+ \li branch-closed.png
+ \li branch-open.png
\endtable
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 158
\table
\row
- \o \inlineimage stylesheet-border-image-stretched.png
+ \li \inlineimage stylesheet-border-image-stretched.png
\row
- \o With borders
+ \li With borders
\endtable
\table
\row
- \o \inlineimage stylesheet-border-image-wrong.png
+ \li \inlineimage stylesheet-border-image-wrong.png
\row
- \o Without borders
+ \li Without borders
\endtable
*/
\table
\row
- \o \image qgridlayout-with-5-children.png
- \o \image qformlayout-with-6-children.png
+ \li \image qgridlayout-with-5-children.png
+ \li \image qformlayout-with-6-children.png
\endtable
\l{Qt Designer Manual}{\QD} is a powerful tool for interactively creating and
\table
\row
- \o \image windowsxp-tabwidget.png
- \o \image plastique-tabwidget.png
- \o \image macintosh-tabwidget.png
+ \li \image windowsxp-tabwidget.png
+ \li \image plastique-tabwidget.png
+ \li \image macintosh-tabwidget.png
\endtable
\l{Qt Style Sheets} are a powerful mechanism that allows you to customize the
\table
\row
- \o \image windows-label.png
- \o \image windowsvista-pushbutton.png
- \o \image gtk-progressbar.png
+ \li \image windows-label.png
+ \li \image windowsvista-pushbutton.png
+ \li \image gtk-progressbar.png
\row
- \o \image plastique-combobox.png
- \o \image macintosh-radiobutton.png
- \o \image cde-lineedit.png
+ \li \image plastique-combobox.png
+ \li \image macintosh-radiobutton.png
+ \li \image cde-lineedit.png
\endtable
\annotatedlist basicwidgets
\table
\row
- \o \image windowsxp-treeview.png
- \o \image gtk-calendarwidget.png
- \o \image qundoview.png
+ \li \image windowsxp-treeview.png
+ \li \image gtk-calendarwidget.png
+ \li \image qundoview.png
\endtable
\annotatedlist advanced
\table
\row
- \o \image windowsvista-tabwidget.png
- \o \image macintosh-groupbox.png
+ \li \image windowsvista-tabwidget.png
+ \li \image macintosh-groupbox.png
\endtable
\section2 Organizer Widgets
the \c main() function.
\list
- \o \l {tutorials/widgets/toplevel} {Creating a window}
+ \li \l {tutorials/widgets/toplevel} {Creating a window}
- \o \l {tutorials/widgets/childwidget} {Creating child widgets}
+ \li \l {tutorials/widgets/childwidget} {Creating child widgets}
- \o \l {tutorials/widgets/windowlayout} {Using layouts}
+ \li \l {tutorials/widgets/windowlayout} {Using layouts}
- \o \l {tutorials/widgets/nestedlayouts} {Nested layouts}
+ \li \l {tutorials/widgets/nestedlayouts} {Nested layouts}
\endlist
\section1 Real world widget examples
\list 1
- \o From a command prompt, enter the directory containing the
+ \li From a command prompt, enter the directory containing the
example you have modified.
- \o Type \c qmake and press \key{Return}. If this doesn't work,
+ \li Type \c qmake and press \key{Return}. If this doesn't work,
make sure that the executable is on your path, or enter its
full location.
- \o On Linux/Unix and Mac OS X, type \c make and press
+ \li On Linux/Unix and Mac OS X, type \c make and press
\key{Return}; on Windows with Visual Studio, type \c nmake and
press \key{Return}.
\div {class="qt-code"}
\table
\row
- \o \snippet tutorials/widgets/toplevel/main.cpp main program
- \o \inlineimage widgets-tutorial-toplevel.png
+ \li \snippet tutorials/widgets/toplevel/main.cpp main program
+ \li \inlineimage widgets-tutorial-toplevel.png
\endtable
\enddiv
\div {class="qt-code"}
\table
\row
- \o \snippet tutorials/widgets/childwidget/main.cpp main program
- \o \inlineimage widgets-tutorial-childwidget.png
+ \li \snippet tutorials/widgets/childwidget/main.cpp main program
+ \li \inlineimage widgets-tutorial-childwidget.png
\endtable
\enddiv
\div {class="qt-code"}
\table
\row
- \o \snippet tutorials/widgets/windowlayout/main.cpp main program
- \o \inlineimage widgets-tutorial-windowlayout.png
+ \li \snippet tutorials/widgets/windowlayout/main.cpp main program
+ \li \inlineimage widgets-tutorial-windowlayout.png
\endtable
\enddiv
\div {class="qt-code"}
\table
\row
- \o \snippet tutorials/widgets/nestedlayouts/main.cpp first part
+ \li \snippet tutorials/widgets/nestedlayouts/main.cpp first part
\snippet tutorials/widgets/nestedlayouts/main.cpp last part
- \o \inlineimage widgets-tutorial-nestedlayouts.png
+ \li \inlineimage widgets-tutorial-nestedlayouts.png
\endtable
\enddiv
most common usage transparently.
\list
- \o \bold{Including the window frame:}
+ \li \b{Including the window frame:}
\l{QWidget::x()}{x()},
\l{QWidget::y()}{y()},
\l{QWidget::frameGeometry()}{frameGeometry()},
\l{QWidget::pos()}{pos()}, and
\l{QWidget::move()}{move()}.
- \o \bold{Excluding the window frame:}
+ \li \b{Excluding the window frame:}
\l{QWidget::geometry()}{geometry()},
\l{QWidget::width()}{width()},
\l{QWidget::height()}{height()},
associated user interface components:
\list
- \o QMainWindow remains the central class around which applications
+ \li QMainWindow remains the central class around which applications
can be built. The interface to this class has been simplified, and
much of the functionality previously included in this class is now
present in the companion QDockWidget and QToolBar classes.
- \o QDockWidget provides a widget that can be used to create
+ \li QDockWidget provides a widget that can be used to create
detachable tool palettes or helper windows. Dock widgets keep track
of their own properties, and they can be moved, closed, and floated
as external windows.
- \o QToolBar provides a generic toolbar widget that can hold a
+ \li QToolBar provides a generic toolbar widget that can hold a
number of different action-related widgets, such as buttons,
drop-down menus, comboboxes, and spin boxes. The emphasis on a
unified action model in Qt 4 means that toolbars cooperate well
When using QFuture, transferred exceptions will be thrown when calling the following functions:
\list
- \o QFuture::waitForFinished()
- \o QFuture::result()
- \o QFuture::resultAt()
- \o QFuture::results()
+ \li QFuture::waitForFinished()
+ \li QFuture::result()
+ \li QFuture::resultAt()
+ \li QFuture::results()
\endlist
*/
this:
\list
- \o To call a function that takes more than 5 arguments.
- \o To simplify calling a function with constant arguments.
- \o Changing the order of arguments.
+ \li To call a function that takes more than 5 arguments.
+ \li To simplify calling a function with constant arguments.
+ \li Changing the order of arguments.
\endlist
See the documentation for the relevant functions for details on how to use
supported QVariant types:
\list
- \o \l{QMetaType::}{Int}
- \o \l{QMetaType::}{Double}
- \o \l{QMetaType::}{Float}
- \o \l{QMetaType::}{QLine}
- \o \l{QMetaType::}{QLineF}
- \o \l{QMetaType::}{QPoint}
- \o \l{QMetaType::}{QPointF}
- \o \l{QMetaType::}{QSize}
- \o \l{QMetaType::}{QSizeF}
- \o \l{QMetaType::}{QRect}
- \o \l{QMetaType::}{QRectF}
- \o \l{QMetaType::}{QColor}
+ \li \l{QMetaType::}{Int}
+ \li \l{QMetaType::}{Double}
+ \li \l{QMetaType::}{Float}
+ \li \l{QMetaType::}{QLine}
+ \li \l{QMetaType::}{QLineF}
+ \li \l{QMetaType::}{QPoint}
+ \li \l{QMetaType::}{QPointF}
+ \li \l{QMetaType::}{QSize}
+ \li \l{QMetaType::}{QSizeF}
+ \li \l{QMetaType::}{QRect}
+ \li \l{QMetaType::}{QRectF}
+ \li \l{QMetaType::}{QColor}
\endlist
If you need to interpolate other variant types, including custom
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
Currently, the Big5-HKSCS tables are generated from the following
sources, and with the Euro character added:
\list 1
- \o \l{http://www.microsoft.com/typography/unicode/950.txt}
- \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5-iso.txt}
- \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5cmp.txt}
+ \li \l{http://www.microsoft.com/typography/unicode/950.txt}
+ \li \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5-iso.txt}
+ \li \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5cmp.txt}
\endlist
There may be more fine-tuning to the QBig5hkscsCodec to maximize its
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
Some must-read documents are:
\list
- \o \l{ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf}
- \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/source/gb18030/gb18030.html}
- \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml}
+ \li \l{ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf}
+ \li \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/source/gb18030/gb18030.html}
+ \li \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml}
\endlist
The GBK codec was contributed to Qt by
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
\list
- \o "unicode-0.9" or "unicode-0201" for Unicode style. This assumes
+ \li "unicode-0.9" or "unicode-0201" for Unicode style. This assumes
JISX0201 for 0x00-0x7f. (0.9 is a table version of jisx02xx mapping
used for Unicode 1.1.)
- \o "unicode-ascii" This assumes US-ASCII for 0x00-0x7f; some
+ \li "unicode-ascii" This assumes US-ASCII for 0x00-0x7f; some
chars (JISX0208 0x2140 and JISX0212 0x2237) are different from
Unicode 1.1 to avoid conflict.
- \o "open-19970715-0201" ("open-0201" for convenience) or
+ \li "open-19970715-0201" ("open-0201" for convenience) or
"jisx0221-1995" for JISX0221-JISX0201 style. JIS X 0221 is JIS
version of Unicode, but a few chars (0x5c, 0x7e, 0x2140, 0x216f,
0x2131) are different from Unicode 1.1. This is used when 0x5c is
treated as YEN SIGN.
- \o "open-19970715-ascii" ("open-ascii" for convenience) for
+ \li "open-19970715-ascii" ("open-ascii" for convenience) for
JISX0221-ASCII style. This is used when 0x5c is treated as REVERSE
SOLIDUS.
- \o "open-19970715-ms" ("open-ms" for convenience) or "cp932" for
+ \li "open-19970715-ms" ("open-ms" for convenience) or "cp932" for
Microsoft Windows style. Windows Code Page 932. Some chars (0x2140,
0x2141, 0x2142, 0x215d, 0x2171, 0x2172) are different from Unicode
1.1.
- \o "jdk1.1.7" for Sun's JDK style. Same as Unicode 1.1, except that
+ \li "jdk1.1.7" for Sun's JDK style. Same as Unicode 1.1, except that
JIS 0x2140 is mapped to UFF3C. Either ASCII or JISX0201 can be used
for 0x00-0x7f.
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
are met:
\list 1
- \o Redistributions of source code must retain the above copyright
+ \li Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- \o Redistributions in binary form must reproduce the above copyright
+ \li 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.
\endlist
The supported encodings are:
\list
- \o Apple Roman
- \o \l{Big5 Text Codec}{Big5}
- \o \l{Big5-HKSCS Text Codec}{Big5-HKSCS}
- \o CP949
- \o \l{EUC-JP Text Codec}{EUC-JP}
- \o \l{EUC-KR Text Codec}{EUC-KR}
- \o \l{GBK Text Codec}{GB18030-0}
- \o IBM 850
- \o IBM 866
- \o IBM 874
- \o \l{ISO 2022-JP (JIS) Text Codec}{ISO 2022-JP}
- \o ISO 8859-1 to 10
- \o ISO 8859-13 to 16
- \o Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
- \o JIS X 0201
- \o JIS X 0208
- \o KOI8-R
- \o KOI8-U
- \o MuleLao-1
- \o ROMAN8
- \o \l{Shift-JIS Text Codec}{Shift-JIS}
- \o TIS-620
- \o \l{TSCII Text Codec}{TSCII}
- \o UTF-8
- \o UTF-16
- \o UTF-16BE
- \o UTF-16LE
- \o UTF-32
- \o UTF-32BE
- \o UTF-32LE
- \o Windows-1250 to 1258
- \o WINSAMI2
+ \li Apple Roman
+ \li \l{Big5 Text Codec}{Big5}
+ \li \l{Big5-HKSCS Text Codec}{Big5-HKSCS}
+ \li CP949
+ \li \l{EUC-JP Text Codec}{EUC-JP}
+ \li \l{EUC-KR Text Codec}{EUC-KR}
+ \li \l{GBK Text Codec}{GB18030-0}
+ \li IBM 850
+ \li IBM 866
+ \li IBM 874
+ \li \l{ISO 2022-JP (JIS) Text Codec}{ISO 2022-JP}
+ \li ISO 8859-1 to 10
+ \li ISO 8859-13 to 16
+ \li Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
+ \li JIS X 0201
+ \li JIS X 0208
+ \li KOI8-R
+ \li KOI8-U
+ \li MuleLao-1
+ \li ROMAN8
+ \li \l{Shift-JIS Text Codec}{Shift-JIS}
+ \li TIS-620
+ \li \l{TSCII Text Codec}{TSCII}
+ \li UTF-8
+ \li UTF-16
+ \li UTF-16BE
+ \li UTF-16LE
+ \li UTF-32
+ \li UTF-32BE
+ \li UTF-32LE
+ \li Windows-1250 to 1258
+ \li WINSAMI2
\endlist
QTextCodecs can be used as follows to convert some locally encoded
QTextCodec and implement the functions listed in the table below.
\table
- \header \o Function \o Description
+ \header \li Function \li Description
- \row \o name()
- \o Returns the official name for the encoding. If the
+ \row \li name()
+ \li Returns the official name for the encoding. If the
encoding is listed in the
\l{IANA character-sets encoding file}, the name
should be the preferred MIME name for the encoding.
- \row \o aliases()
- \o Returns a list of alternative names for the encoding.
+ \row \li aliases()
+ \li Returns a list of alternative names for the encoding.
QTextCodec provides a default implementation that returns
an empty list. For example, "ISO-8859-1" has "latin1",
"CP819", "IBM819", and "iso-ir-100" as aliases.
- \row \o mibEnum()
- \o Return the MIB enum for the encoding if it is listed in
+ \row \li mibEnum()
+ \li Return the MIB enum for the encoding if it is listed in
the \l{IANA character-sets encoding file}.
- \row \o convertToUnicode()
- \o Converts an 8-bit character string to Unicode.
+ \row \li convertToUnicode()
+ \li Converts an 8-bit character string to Unicode.
- \row \o convertFromUnicode()
- \o Converts a Unicode string to an 8-bit character string.
+ \row \li convertFromUnicode()
+ \li Converts a Unicode string to an 8-bit character string.
\endtable
\sa QTextStream, QTextDecoder, QTextEncoder, {Codecs Example}
\brief The QSysInfo class provides information about the system.
\list
- \o \l WordSize specifies the size of a pointer for the platform
+ \li \l WordSize specifies the size of a pointer for the platform
on which the application is compiled.
- \o \l ByteOrder specifies whether the platform is big-endian or
+ \li \l ByteOrder specifies whether the platform is big-endian or
little-endian.
- \o \l WindowsVersion specifies the version of the Windows operating
+ \li \l WindowsVersion specifies the version of the Windows operating
system on which the application is run (Windows only)
- \o \l MacintoshVersion specifies the version of the Macintosh
+ \li \l MacintoshVersion specifies the version of the Macintosh
operating system on which the application is run (Mac only).
\endlist
\a Flags can be one of the following:
\list
- \o \c Q_PRIMITIVE_TYPE specifies that \a Type is a POD (plain old
+ \li \c Q_PRIMITIVE_TYPE specifies that \a Type is a POD (plain old
data) type with no constructor or destructor.
- \o \c Q_MOVABLE_TYPE specifies that \a Type has a constructor
+ \li \c Q_MOVABLE_TYPE specifies that \a Type has a constructor
and/or a destructor but can be moved in memory using \c
memcpy().
- \o \c Q_COMPLEX_TYPE (the default) specifies that \a Type has
+ \li \c Q_COMPLEX_TYPE (the default) specifies that \a Type has
constructors and/or a destructor and that it may not be moved
in memory.
\endlist
message handler has been installed, the message is printed to
stderr. Under Windows, the message is sent to the debugger.
- If you are using the \bold{default message handler} this function will
+ If you are using the \b{default message handler} this function will
abort on Unix systems to create a core dump. On Windows, for debug builds,
this function will report a _CRT_ERROR enabling you to connect a debugger
to the application.
This enum provides shorter names for the keyboard modifier keys
supported by Qt.
- \bold{Note:} On Mac OS X, the \c CTRL value corresponds to
+ \b{Note:} On Mac OS X, the \c CTRL value corresponds to
the Command keys on the Macintosh keyboard, and the \c META value
corresponds to the Control keys.
\table
\row
- \o \inlineimage qpen-solid.png
- \o \inlineimage qpen-dash.png
- \o \inlineimage qpen-dot.png
+ \li \inlineimage qpen-solid.png
+ \li \inlineimage qpen-dash.png
+ \li \inlineimage qpen-dot.png
\row
- \o Qt::SolidLine
- \o Qt::DashLine
- \o Qt::DotLine
+ \li Qt::SolidLine
+ \li Qt::DashLine
+ \li Qt::DotLine
\row
- \o \inlineimage qpen-dashdot.png
- \o \inlineimage qpen-dashdotdot.png
- \o \inlineimage qpen-custom.png
+ \li \inlineimage qpen-dashdot.png
+ \li \inlineimage qpen-dashdotdot.png
+ \li \inlineimage qpen-custom.png
\row
- \o Qt::DashDotLine
- \o Qt::DashDotDotLine
- \o Qt::CustomDashLine
+ \li Qt::DashDotLine
+ \li Qt::DashDotDotLine
+ \li Qt::CustomDashLine
\endtable
\value NoPen no line at all. For example, QPainter::drawRect()
\table
\row
- \o \inlineimage qpen-square.png
- \o \inlineimage qpen-flat.png
- \o \inlineimage qpen-roundcap.png
+ \li \inlineimage qpen-square.png
+ \li \inlineimage qpen-flat.png
+ \li \inlineimage qpen-roundcap.png
\row
- \o Qt::SquareCap
- \o Qt::FlatCap
- \o Qt::RoundCap
+ \li Qt::SquareCap
+ \li Qt::FlatCap
+ \li Qt::RoundCap
\endtable
\value FlatCap a square line end that does not cover the end
\table
\row
- \o \inlineimage qpen-bevel.png
- \o \inlineimage qpen-miter.png
- \o \inlineimage qpen-roundjoin.png
+ \li \inlineimage qpen-bevel.png
+ \li \inlineimage qpen-miter.png
+ \li \inlineimage qpen-roundjoin.png
\row
- \o Qt::BevelJoin
- \o Qt::MiterJoin
- \o Qt::RoundJoin
+ \li Qt::BevelJoin
+ \li Qt::MiterJoin
+ \li Qt::RoundJoin
\endtable
\value MiterJoin The outer edges of the lines are extended to
\value WA_NoSystemBackground Indicates that the widget has no background,
i.e. when the widget receives paint events, the background is not
automatically repainted. \note Unlike WA_OpaquePaintEvent, newly exposed
- areas are \bold never filled with the background (e.g., after showing a
+ areas are \b never filled with the background (e.g., after showing a
window for the first time the user can see "through" it until the
application processes the paint events). This flag is set or cleared by the
widget's author.
\endcode
To see if your favorite Qt class has similar stream operators
- defined, check the \bold {Related Non-Members} section of the
+ defined, check the \b {Related Non-Members} section of the
class's documentation page.
\sa QTextStream QVariant
serialization format used by QDataStream.
\table
- \header \i Qt Version \i QDataStream Version
- \row \i Qt 4.6 \i 12
- \row \i Qt 4.5 \i 11
- \row \i Qt 4.4 \i 10
- \row \i Qt 4.3 \i 9
- \row \i Qt 4.2 \i 8
- \row \i Qt 4.0, 4.1 \i 7
- \row \i Qt 3.3 \i 6
- \row \i Qt 3.1, 3.2 \i 5
- \row \i Qt 3.0 \i 4
- \row \i Qt 2.1, 2.2, 2.3 \i 3
- \row \i Qt 2.0 \i 2
- \row \i Qt 1.x \i 1
+ \header \li Qt Version \li QDataStream Version
+ \row \li Qt 4.6 \li 12
+ \row \li Qt 4.5 \li 11
+ \row \li Qt 4.4 \li 10
+ \row \li Qt 4.3 \li 9
+ \row \li Qt 4.2 \li 8
+ \row \li Qt 4.0, 4.1 \li 7
+ \row \li Qt 3.3 \li 6
+ \row \li Qt 3.1, 3.2 \li 5
+ \row \li Qt 3.0 \li 4
+ \row \li Qt 2.1, 2.2, 2.3 \li 3
+ \row \li Qt 2.0 \li 2
+ \row \li Qt 1.x \li 1
\endtable
The \l Version enum provides symbolic constants for the different
for these that return strings:
\table
- \header \o QDir \o QString \o Return Value
- \row \o current() \o currentPath() \o The application's working directory
- \row \o home() \o homePath() \o The user's home directory
- \row \o root() \o rootPath() \o The root directory
- \row \o temp() \o tempPath() \o The system's temporary directory
+ \header \li QDir \li QString \li Return Value
+ \row \li current() \li currentPath() \li The application's working directory
+ \row \li home() \li homePath() \li The user's home directory
+ \row \li root() \li rootPath() \li The root directory
+ \row \li temp() \li tempPath() \li The system's temporary directory
\endtable
The setCurrent() static function can also be used to set the application's
the given order) until an existing and available path is found:
\list 1
- \o The path specified by the \c USERPROFILE environment variable.
- \o The path formed by concatenating the \c HOMEDRIVE and \c HOMEPATH
+ \li The path specified by the \c USERPROFILE environment variable.
+ \li The path formed by concatenating the \c HOMEDRIVE and \c HOMEPATH
environment variables.
- \o The path specified by the \c HOME environment variable.
- \o The path returned by the rootPath() function (which uses the \c SystemDrive
+ \li The path specified by the \c HOME environment variable.
+ \li The path returned by the rootPath() function (which uses the \c SystemDrive
environment variable)
- \o The \c{C:/} directory.
+ \li The \c{C:/} directory.
\endlist
Under non-Windows operating systems the \c HOME environment
then calling close() closes the adopted handle.
Otherwise, close() does not actually close the file, but only flushes it.
- \bold{Warning:}
+ \b{Warning:}
\list 1
- \o If \a fh does not refer to a regular file, e.g., it is \c stdin,
+ \li If \a fh does not refer to a regular file, e.g., it is \c stdin,
\c stdout, or \c stderr, you may not be able to seek(). size()
returns \c 0 in those cases. See QIODevice::isSequential() for
more information.
- \o Since this function opens the file without specifying the file name,
+ \li Since this function opens the file without specifying the file name,
you cannot use this QFile with a QFileInfo.
\endlist
\sa close(), {qmake Variable Reference#CONFIG}{qmake Variable Reference}
- \bold{Note for the Windows Platform}
+ \b{Note for the Windows Platform}
\a fh must be opened in binary mode (i.e., the mode string must contain
'b', as in "rb" or "wb") when accessing files and other random-access
/*!
Returns the path of the object's parent directory as a QDir object.
- \bold{Note:} The QDir returned always corresponds to the object's
+ \b{Note:} The QDir returned always corresponds to the object's
parent directory, even if the QFileInfo represents a directory.
For each of the following, dir() returns a QDir for
/*!
Returns true if this is a `hidden' file; otherwise returns false.
- \bold{Note:} This function returns true for the special entries
+ \b{Note:} This function returns true for the special entries
"." and ".." on Unix, even though QDir::entryList threats them as shown.
*/
bool QFileInfo::isHidden() const
Returns false if the file is otherwise supported by a virtual file system
inside Qt, such as \l{the Qt Resource System}.
- \bold{Note:} Native paths may still require conversion of path separators
+ \b{Note:} Native paths may still require conversion of path separators
and character encoding, depending on platform and input requirements of the
native API.
random-access devices and sequential devices.
\list
- \o Random-access devices support seeking to arbitrary
+ \li Random-access devices support seeking to arbitrary
positions using seek(). The current position in the file is
available by calling pos(). QFile and QBuffer are examples of
random-access devices.
- \o Sequential devices don't support seeking to arbitrary
+ \li Sequential devices don't support seeking to arbitrary
positions. The data must be read in one pass. The functions
pos() and size() don't work for sequential devices.
QTcpSocket and QProcess are examples of sequential devices.
a separate thread:
\list
- \o waitForReadyRead() - This function suspends operation in the
+ \li waitForReadyRead() - This function suspends operation in the
calling thread until new data is available for reading.
- \o waitForBytesWritten() - This function suspends operation in the
+ \li waitForBytesWritten() - This function suspends operation in the
calling thread until one payload of data has been written to the
device.
- \o waitFor....() - Subclasses of QIODevice implement blocking
+ \li waitFor....() - Subclasses of QIODevice implement blocking
functions for device-specific operations. For example, QProcess
has a function called waitForStarted() which suspends operation in
the calling thread until the process has started.
Data is read until either of the following conditions are met:
\list
- \o The first '\n' character is read.
- \o \a maxSize - 1 bytes are read.
- \o The end of the device data is detected.
+ \li The first '\n' character is read.
+ \li \a maxSize - 1 bytes are read.
+ \li The end of the device data is detected.
\endlist
For example, the following code reads a line of characters from a
certain signals are emitted:
\list
- \o waitForStarted() blocks until the process has started.
+ \li waitForStarted() blocks until the process has started.
- \o waitForReadyRead() blocks until new data is
+ \li waitForReadyRead() blocks until new data is
available for reading on the current read channel.
- \o waitForBytesWritten() blocks until one payload of
+ \li waitForBytesWritten() blocks until one payload of
data has been written to the process.
- \o waitForFinished() blocks until the process has finished.
+ \li waitForFinished() blocks until the process has finished.
\endlist
Calling these functions from the main thread (the thread that
\note No further splitting of the arguments is performed.
- \bold{Windows:} Arguments that contain spaces are wrapped in quotes.
+ \b{Windows:} Arguments that contain spaces are wrapped in quotes.
\sa pid(), started(), waitForStarted()
*/
Note that arguments that contain spaces are not passed to the
process as separate arguments.
- \bold{Unix:} The started process will run in its own session and act
+ \b{Unix:} The started process will run in its own session and act
like a daemon.
- \bold{Windows:} Arguments that contain spaces are wrapped in quotes.
+ \b{Windows:} Arguments that contain spaces are wrapped in quotes.
The started process will run as a regular standalone process.
The process will be started in the directory \a workingDirectory.
\note Arguments that contain spaces are not passed to the
process as separate arguments.
- \bold{Unix:} The started process will run in its own session and act
+ \b{Unix:} The started process will run in its own session and act
like a daemon.
- \bold{Windows:} Arguments that contain spaces are wrapped in quotes.
+ \b{Windows:} Arguments that contain spaces are wrapped in quotes.
The started process will run as a regular standalone process.
*/
bool QProcess::startDetached(const QString &program,
avoid portability problems, follow these simple rules:
\list 1
- \o Always refer to the same key using the same case. For example,
+ \li Always refer to the same key using the same case. For example,
if you refer to a key as "text fonts" in one place in your
code, don't refer to it as "Text Fonts" somewhere else.
- \o Avoid key names that are identical except for the case. For
+ \li Avoid key names that are identical except for the case. For
example, if you have a key called "MainWindow", don't try to
save another key as "mainwindow".
- \o Do not use slashes ('/' and '\\') in section or key names; the
+ \li Do not use slashes ('/' and '\\') in section or key names; the
backslash character is used to separate sub keys (see below). On
windows '\\' are converted by QSettings to '/', which makes
them identical.
that order:
\list 1
- \o a user-specific location for the Star Runner application
- \o a user-specific location for all applications by MySoft
- \o a system-wide location for the Star Runner application
- \o a system-wide location for all applications by MySoft
+ \li a user-specific location for the Star Runner application
+ \li a user-specific location for all applications by MySoft
+ \li a system-wide location for the Star Runner application
+ \li a system-wide location for all applications by MySoft
\endlist
(See \l{Platform-Specific Notes} below for information on what
\snippet doc/src/snippets/settings/settings.cpp 14
The table below summarizes which QSettings objects access
- which location. "\bold{X}" means that the location is the main
+ which location. "\b{X}" means that the location is the main
location associated to the QSettings object and is used both
for reading and for writing; "o" means that the location is used
as a fallback when reading.
\table
- \header \o Locations \o \c{obj1} \o \c{obj2} \o \c{obj3} \o \c{obj4}
- \row \o 1. User, Application \o \bold{X} \o \o \o
- \row \o 2. User, Organization \o o \o \bold{X} \o \o
- \row \o 3. System, Application \o o \o \o \bold{X} \o
- \row \o 4. System, Organization \o o \o o \o o \o \bold{X}
+ \header \li Locations \li \c{obj1} \li \c{obj2} \li \c{obj3} \li \c{obj4}
+ \row \li 1. User, Application \li \b{X} \li \li \li
+ \row \li 2. User, Organization \li o \li \b{X} \li \li
+ \row \li 3. System, Application \li o \li \li \b{X} \li
+ \row \li 4. System, Organization \li o \li o \li o \li \b{X}
\endtable
The beauty of this mechanism is that it works on all platforms
following files are used by default:
\list 1
- \o \c{$HOME/.config/MySoft/Star Runner.conf} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft/Star Runner.conf})
- \o \c{$HOME/.config/MySoft.conf} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft.conf})
- \o \c{/etc/xdg/MySoft/Star Runner.conf}
- \o \c{/etc/xdg/MySoft.conf}
+ \li \c{$HOME/.config/MySoft/Star Runner.conf} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft/Star Runner.conf})
+ \li \c{$HOME/.config/MySoft.conf} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft.conf})
+ \li \c{/etc/xdg/MySoft/Star Runner.conf}
+ \li \c{/etc/xdg/MySoft.conf}
\endlist
On Mac OS X versions 10.2 and 10.3, these files are used by
default:
\list 1
- \o \c{$HOME/Library/Preferences/com.MySoft.Star Runner.plist}
- \o \c{$HOME/Library/Preferences/com.MySoft.plist}
- \o \c{/Library/Preferences/com.MySoft.Star Runner.plist}
- \o \c{/Library/Preferences/com.MySoft.plist}
+ \li \c{$HOME/Library/Preferences/com.MySoft.Star Runner.plist}
+ \li \c{$HOME/Library/Preferences/com.MySoft.plist}
+ \li \c{/Library/Preferences/com.MySoft.Star Runner.plist}
+ \li \c{/Library/Preferences/com.MySoft.plist}
\endlist
On Windows, NativeFormat settings are stored in the following
registry paths:
\list 1
- \o \c{HKEY_CURRENT_USER\Software\MySoft\Star Runner}
- \o \c{HKEY_CURRENT_USER\Software\MySoft}
- \o \c{HKEY_LOCAL_MACHINE\Software\MySoft\Star Runner}
- \o \c{HKEY_LOCAL_MACHINE\Software\MySoft}
+ \li \c{HKEY_CURRENT_USER\Software\MySoft\Star Runner}
+ \li \c{HKEY_CURRENT_USER\Software\MySoft}
+ \li \c{HKEY_LOCAL_MACHINE\Software\MySoft\Star Runner}
+ \li \c{HKEY_LOCAL_MACHINE\Software\MySoft}
\endlist
\note On Windows, for 32-bit programs running in WOW64 mode, settings are
used on Unix and Mac OS X:
\list 1
- \o \c{$HOME/.config/MySoft/Star Runner.ini} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft/Star Runner.ini})
- \o \c{$HOME/.config/MySoft.ini} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft.ini})
- \o \c{/etc/xdg/MySoft/Star Runner.ini}
- \o \c{/etc/xdg/MySoft.ini}
+ \li \c{$HOME/.config/MySoft/Star Runner.ini} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft/Star Runner.ini})
+ \li \c{$HOME/.config/MySoft.ini} (Qt for Embedded Linux: \c{$HOME/Settings/MySoft.ini})
+ \li \c{/etc/xdg/MySoft/Star Runner.ini}
+ \li \c{/etc/xdg/MySoft.ini}
\endlist
On Windows, the following files are used:
\list 1
- \o \c{%APPDATA%\MySoft\Star Runner.ini}
- \o \c{%APPDATA%\MySoft.ini}
- \o \c{%COMMON_APPDATA%\MySoft\Star Runner.ini}
- \o \c{%COMMON_APPDATA%\MySoft.ini}
+ \li \c{%APPDATA%\MySoft\Star Runner.ini}
+ \li \c{%APPDATA%\MySoft.ini}
+ \li \c{%COMMON_APPDATA%\MySoft\Star Runner.ini}
+ \li \c{%COMMON_APPDATA%\MySoft.ini}
\endlist
The \c %APPDATA% path is usually \tt{C:\\Documents and
application:
\list
- \o The Windows system registry has the following limitations: A
+ \li The Windows system registry has the following limitations: A
subkey may not exceed 255 characters, an entry's value may
not exceed 16,383 characters, and all the values of a key may
not exceed 65,535 characters. One way to work around these
limitations is to store the settings using the IniFormat
instead of the NativeFormat.
- \o On Mac OS X, allKeys() will return some extra keys for global
+ \li On Mac OS X, allKeys() will return some extra keys for global
settings that apply to all applications. These keys can be
read using value() but cannot be changed, only shadowed.
Calling setFallbacksEnabled(false) will hide these global
settings.
- \o On Mac OS X, the CFPreferences API used by QSettings expects
+ \li On Mac OS X, the CFPreferences API used by QSettings expects
Internet domain names rather than organization names. To
provide a uniform API, QSettings derives a fake domain name
from the organization name (unless the organization name
\snippet doc/src/snippets/code/src_corelib_io_qsettings.cpp 7
- \o On Unix and Mac OS X systems, the advisory file locking is disabled
+ \li On Unix and Mac OS X systems, the advisory file locking is disabled
if NFS (or AutoFS or CacheFS) is detected to work around a bug in the
NFS fcntl() implementation, which hangs forever if statd or lockd aren't
running. Also, the locking isn't performed when accessing \c .plist
follow what Microsoft does, with the following exceptions:
\list
- \o If you store types that QVariant can't convert to QString
+ \li If you store types that QVariant can't convert to QString
(e.g., QPoint, QRect, and QSize), Qt uses an \c{@}-based
syntax to encode the type. For example:
followed by a Qt type (\c Point, \c Rect, \c Size, etc.) is
treated as a normal character.
- \o Although backslash is a special character in INI files, most
+ \li Although backslash is a special character in INI files, most
Windows applications don't escape backslashes (\c{\}) in file
paths:
QSettings always treats backslash as a special character and
provides no API for reading or writing such entries.
- \o The INI file format has severe restrictions on the syntax of
+ \li The INI file format has severe restrictions on the syntax of
a key. Qt works around this by using \c % as an escape
character in keys. In addition, if you save a top-level
setting (a key with no slashes in it, e.g., "someKey"), it
such as "General/someKey", the key will be located in the
"%General" section, \e not in the "General" section.
- \o Following the philosophy that we should be liberal in what
+ \li Following the philosophy that we should be liberal in what
we accept and conservative in what we generate, QSettings
will accept Latin-1 encoded INI files, but generate pure
ASCII files, where non-ASCII values are encoded using standard
be aware of the following limitations:
\list
- \o QSettings provides no way of reading INI "path" entries, i.e., entries
+ \li QSettings provides no way of reading INI "path" entries, i.e., entries
with unescaped slash characters. (This is because these entries are
ambiguous and cannot be resolved automatically.)
- \o In INI files, QSettings uses the \c @ character as a metacharacter in some
+ \li In INI files, QSettings uses the \c @ character as a metacharacter in some
contexts, to encode Qt-specific data types (e.g., \c @Rect), and might
therefore misinterpret it when it occurs in pure INI files.
\endlist
This will set the value of three settings:
\list
- \o \c mainwindow/size
- \o \c mainwindow/fullScreen
- \o \c outputpanel/visible
+ \li \c mainwindow/size
+ \li \c mainwindow/fullScreen
+ \li \c outputpanel/visible
\endlist
Call endGroup() to reset the current group to what it was before
The generated keys will have the form
\list
- \o \c logins/size
- \o \c logins/1/userName
- \o \c logins/1/password
- \o \c logins/2/userName
- \o \c logins/2/password
- \o \c logins/3/userName
- \o \c logins/3/password
- \o ...
+ \li \c logins/size
+ \li \c logins/1/userName
+ \li \c logins/1/password
+ \li \c logins/2/userName
+ \li \c logins/2/password
+ \li \c logins/3/userName
+ \li \c logins/3/password
+ \li ...
\endlist
To read back an array, use beginReadArray().
The table below summarizes the default values:
\table
- \header \o Platform \o Format \o Scope \o Path
- \row \o{1,2} Windows \o{1,2} IniFormat \o UserScope \o \c %APPDATA%
- \row \o SystemScope \o \c %COMMON_APPDATA%
- \row \o{1,2} Unix \o{1,2} NativeFormat, IniFormat \o UserScope \o \c $HOME/.config
- \row \o SystemScope \o \c /etc/xdg
- \row \o{1,2} Qt for Embedded Linux \o{1,2} NativeFormat, IniFormat \o UserScope \o \c $HOME/Settings
- \row \o SystemScope \o \c /etc/xdg
- \row \o{1,2} Mac OS X \o{1,2} IniFormat \o UserScope \o \c $HOME/.config
- \row \o SystemScope \o \c /etc/xdg
+ \header \li Platform \li Format \li Scope \li Path
+ \row \li{1,2} Windows \li{1,2} IniFormat \li UserScope \li \c %APPDATA%
+ \row \li SystemScope \li \c %COMMON_APPDATA%
+ \row \li{1,2} Unix \li{1,2} NativeFormat, IniFormat \li UserScope \li \c $HOME/.config
+ \row \li SystemScope \li \c /etc/xdg
+ \row \li{1,2} Qt for Embedded Linux \li{1,2} NativeFormat, IniFormat \li UserScope \li \c $HOME/Settings
+ \row \li SystemScope \li \c /etc/xdg
+ \row \li{1,2} Mac OS X \li{1,2} IniFormat \li UserScope \li \c $HOME/.config
+ \row \li SystemScope \li \c /etc/xdg
\endtable
The default UserScope paths on Unix and Mac OS X (\c
\list
- \o Chunk by chunk, by calling readLine() or readAll().
+ \li Chunk by chunk, by calling readLine() or readAll().
- \o Word by word. QTextStream supports streaming into QStrings,
+ \li Word by word. QTextStream supports streaming into QStrings,
QByteArrays and char* buffers. Words are delimited by space, and
leading white space is automatically skipped.
- \o Character by character, by streaming into QChar or char types.
+ \li Character by character, by streaming into QChar or char types.
This method is often used for convenient input handling when
parsing files, independent of character encoding and end-of-line
semantics. To skip white space, call skipWhiteSpace().
defines several global manipulator functions:
\table
- \header \o Manipulator \o Description
- \row \o \c bin \o Same as setIntegerBase(2).
- \row \o \c oct \o Same as setIntegerBase(8).
- \row \o \c dec \o Same as setIntegerBase(10).
- \row \o \c hex \o Same as setIntegerBase(16).
- \row \o \c showbase \o Same as setNumberFlags(numberFlags() | ShowBase).
- \row \o \c forcesign \o Same as setNumberFlags(numberFlags() | ForceSign).
- \row \o \c forcepoint \o Same as setNumberFlags(numberFlags() | ForcePoint).
- \row \o \c noshowbase \o Same as setNumberFlags(numberFlags() & ~ShowBase).
- \row \o \c noforcesign \o Same as setNumberFlags(numberFlags() & ~ForceSign).
- \row \o \c noforcepoint \o Same as setNumberFlags(numberFlags() & ~ForcePoint).
- \row \o \c uppercasebase \o Same as setNumberFlags(numberFlags() | UppercaseBase).
- \row \o \c uppercasedigits \o Same as setNumberFlags(numberFlags() | UppercaseDigits).
- \row \o \c lowercasebase \o Same as setNumberFlags(numberFlags() & ~UppercaseBase).
- \row \o \c lowercasedigits \o Same as setNumberFlags(numberFlags() & ~UppercaseDigits).
- \row \o \c fixed \o Same as setRealNumberNotation(FixedNotation).
- \row \o \c scientific \o Same as setRealNumberNotation(ScientificNotation).
- \row \o \c left \o Same as setFieldAlignment(AlignLeft).
- \row \o \c right \o Same as setFieldAlignment(AlignRight).
- \row \o \c center \o Same as setFieldAlignment(AlignCenter).
- \row \o \c endl \o Same as operator<<('\n') and flush().
- \row \o \c flush \o Same as flush().
- \row \o \c reset \o Same as reset().
- \row \o \c ws \o Same as skipWhiteSpace().
- \row \o \c bom \o Same as setGenerateByteOrderMark(true).
+ \header \li Manipulator \li Description
+ \row \li \c bin \li Same as setIntegerBase(2).
+ \row \li \c oct \li Same as setIntegerBase(8).
+ \row \li \c dec \li Same as setIntegerBase(10).
+ \row \li \c hex \li Same as setIntegerBase(16).
+ \row \li \c showbase \li Same as setNumberFlags(numberFlags() | ShowBase).
+ \row \li \c forcesign \li Same as setNumberFlags(numberFlags() | ForceSign).
+ \row \li \c forcepoint \li Same as setNumberFlags(numberFlags() | ForcePoint).
+ \row \li \c noshowbase \li Same as setNumberFlags(numberFlags() & ~ShowBase).
+ \row \li \c noforcesign \li Same as setNumberFlags(numberFlags() & ~ForceSign).
+ \row \li \c noforcepoint \li Same as setNumberFlags(numberFlags() & ~ForcePoint).
+ \row \li \c uppercasebase \li Same as setNumberFlags(numberFlags() | UppercaseBase).
+ \row \li \c uppercasedigits \li Same as setNumberFlags(numberFlags() | UppercaseDigits).
+ \row \li \c lowercasebase \li Same as setNumberFlags(numberFlags() & ~UppercaseBase).
+ \row \li \c lowercasedigits \li Same as setNumberFlags(numberFlags() & ~UppercaseDigits).
+ \row \li \c fixed \li Same as setRealNumberNotation(FixedNotation).
+ \row \li \c scientific \li Same as setRealNumberNotation(ScientificNotation).
+ \row \li \c left \li Same as setFieldAlignment(AlignLeft).
+ \row \li \c right \li Same as setFieldAlignment(AlignRight).
+ \row \li \c center \li Same as setFieldAlignment(AlignCenter).
+ \row \li \c endl \li Same as operator<<('\n') and flush().
+ \row \li \c flush \li Same as flush().
+ \row \li \c reset \li Same as reset().
+ \row \li \c ws \li Same as skipWhiteSpace().
+ \row \li \c bom \li Same as setGenerateByteOrderMark(true).
\endtable
In addition, Qt provides three global manipulators that take a
number using the following rules:
\table
- \header \o Prefix \o Base
- \row \o "0b" or "0B" \o 2 (binary)
- \row \o "0" followed by "0-7" \o 8 (octal)
- \row \o "0" otherwise \o 10 (decimal)
- \row \o "0x" or "0X" \o 16 (hexadecimal)
- \row \o "1" to "9" \o 10 (decimal)
+ \header \li Prefix \li Base
+ \row \li "0b" or "0B" \li 2 (binary)
+ \row \li "0" followed by "0-7" \li 8 (octal)
+ \row \li "0" otherwise \li 10 (decimal)
+ \row \li "0x" or "0X" \li 16 (hexadecimal)
+ \row \li "1" to "9" \li 10 (decimal)
\endtable
By calling setIntegerBase(), you can specify the integer base
dealing with URLs and strings:
\list
- \o When creating an QString to contain a URL from a QByteArray or a
+ \li When creating an QString to contain a URL from a QByteArray or a
char*, always use QString::fromUtf8().
\endlist
\list
- \o Spaces and "%20": If an encoded URL contains a space, this will be
+ \li Spaces and "%20": If an encoded URL contains a space, this will be
replaced with "%20". If a decoded URL contains "%20", this will be
replaced with a single space before the URL is parsed.
- \o Single "%" characters: Any occurrences of a percent character "%" not
+ \li Single "%" characters: Any occurrences of a percent character "%" not
followed by exactly two hexadecimal characters (e.g., "13% coverage.html")
will be replaced by "%25".
- \o Reserved and unreserved characters: An encoded URL should only
+ \li Reserved and unreserved characters: An encoded URL should only
contain a few characters as literals; all other characters should
be percent-encoded. In TolerantMode, these characters will be
automatically percent-encoded where they are not allowed:
\section1 Examples:
\list
- \o qt.nokia.com becomes http://qt.nokia.com
- \o ftp.qt.nokia.com becomes ftp://ftp.qt.nokia.com
- \o hostname becomes http://hostname
- \o /home/user/test.html becomes file:///home/user/test.html
+ \li qt.nokia.com becomes http://qt.nokia.com
+ \li ftp.qt.nokia.com becomes ftp://ftp.qt.nokia.com
+ \li hostname becomes http://hostname
+ \li /home/user/test.html becomes file:///home/user/test.html
\endlist
*/
QUrl QUrl::fromUserInput(const QString &userInput)
\e before and \e after they occur:
\list
- \o An insertRows() implementation must call beginInsertRows() \e before
+ \li An insertRows() implementation must call beginInsertRows() \e before
inserting new rows into the data structure, and endInsertRows()
\e{immediately afterwards}.
- \o An insertColumns() implementation must call beginInsertColumns()
+ \li An insertColumns() implementation must call beginInsertColumns()
\e before inserting new columns into the data structure, and
endInsertColumns() \e{immediately afterwards}.
- \o A removeRows() implementation must call beginRemoveRows() \e before
+ \li A removeRows() implementation must call beginRemoveRows() \e before
the rows are removed from the data structure, and endRemoveRows()
\e{immediately afterwards}.
- \o A removeColumns() implementation must call beginRemoveColumns()
+ \li A removeColumns() implementation must call beginRemoveColumns()
\e before the columns are removed from the data structure, and
endRemoveColumns() \e{immediately afterwards}.
\endlist
the chance to take action before any data becomes unavailable. The
encapsulation of the insert and remove operations with these begin and end
functions also enables the model to manage \l{QPersistentModelIndex}
- {persistent model indexes} correctly. \bold{If you want selections to be
+ {persistent model indexes} correctly. \b{If you want selections to be
handled properly, you must ensure that you call these functions.} If you
insert or remove an item with children, you do not need to call these
functions for the child items. In other words, the parent item will take
layoutChanged(). In other words, when the structure changes:
\list
- \o emit layoutAboutToBeChanged
- \o Remember the QModelIndex that will change
- \o Update your internal data
- \o Call changePersistentIndex()
- \o emit layoutChanged
+ \li emit layoutAboutToBeChanged
+ \li Remember the QModelIndex that will change
+ \li Update your internal data
+ \li Call changePersistentIndex()
+ \li emit layoutChanged
\endlist
\sa layoutAboutToBeChanged(), dataChanged(), headerDataChanged(), modelReset(),
inclusive, under the given \a sourceParent item have been moved to \a destinationParent
starting at the row \a destinationRow.
- \bold{Note:} Components connected to this signal use it to adapt to changes
+ \b{Note:} Components connected to this signal use it to adapt to changes
in the model's dimensions. It can only be emitted by the QAbstractItemModel
implementation, and cannot be explicitly emitted in subclass code.
inclusive, under the given \a sourceParent item. They will be moved to \a destinationParent
starting at the row \a destinationRow.
- \bold{Note:} Components connected to this signal use it to adapt to changes
+ \b{Note:} Components connected to this signal use it to adapt to changes
in the model's dimensions. It can only be emitted by the QAbstractItemModel
implementation, and cannot be explicitly emitted in subclass code.
inclusive, under the given \a sourceParent item have been moved to \a destinationParent
starting at the column \a destinationColumn.
- \bold{Note:} Components connected to this signal use it to adapt to changes
+ \b{Note:} Components connected to this signal use it to adapt to changes
in the model's dimensions. It can only be emitted by the QAbstractItemModel
implementation, and cannot be explicitly emitted in subclass code.
inclusive, under the given \a sourceParent item. They will be moved to \a destinationParent
starting at the column \a destinationColumn.
- \bold{Note:} Components connected to this signal use it to adapt to changes
+ \b{Note:} Components connected to this signal use it to adapt to changes
in the model's dimensions. It can only be emitted by the QAbstractItemModel
implementation, and cannot be explicitly emitted in subclass code.
Returns the data stored under the given \a role for the item referred to
by the \a index.
- \note If you do not have a value to return, return an \bold invalid
+ \note If you do not have a value to return, return an \b invalid
QVariant instead of returning 0.
\sa Qt::ItemDataRole, setData(), headerData()
\table 80%
\row
- \o \inlineimage modelview-begin-insert-rows.png Inserting rows
- \o Specify the first and last row numbers for the span of rows you
+ \li \inlineimage modelview-begin-insert-rows.png Inserting rows
+ \li Specify the first and last row numbers for the span of rows you
want to insert into an item in a model.
For example, as shown in the diagram, we insert three rows before
This inserts the three new rows as rows 2, 3, and 4.
\row
- \o \inlineimage modelview-begin-append-rows.png Appending rows
- \o To append rows, insert them after the last row.
+ \li \inlineimage modelview-begin-append-rows.png Appending rows
+ \li To append rows, insert them after the last row.
For example, as shown in the diagram, we append two rows to a
collection of 4 existing rows (ending in row 3), so \a first is 4
\table 80%
\row
- \o \inlineimage modelview-begin-remove-rows.png Removing rows
- \o Specify the first and last row numbers for the span of rows you
+ \li \inlineimage modelview-begin-remove-rows.png Removing rows
+ \li Specify the first and last row numbers for the span of rows you
want to remove from an item in a model.
For example, as shown in the diagram, we remove the two rows from
\table 80%
\row
- \o \inlineimage modelview-move-rows-1.png Moving rows to another parent
- \o Specify the first and last row numbers for the span of rows in
+ \li \inlineimage modelview-move-rows-1.png Moving rows to another parent
+ \li Specify the first and last row numbers for the span of rows in
the source parent you want to move in the model. Also specify
the row in the destination parent to move the span to.
This moves the three rows rows 2, 3, and 4 in the source to become 2, 3 and 4 in
the destination. Other affected siblings are displaced accordingly.
\row
- \o \inlineimage modelview-move-rows-2.png Moving rows to append to another parent
- \o To append rows to another parent, move them to after the last row.
+ \li \inlineimage modelview-move-rows-2.png Moving rows to append to another parent
+ \li To append rows to another parent, move them to after the last row.
For example, as shown in the diagram, we move three rows to a
collection of 6 existing rows (ending in row 5), so \a destinationChild is 6:
This moves the target rows to the end of the target parent as 6, 7 and 8.
\row
- \o \inlineimage modelview-move-rows-3.png Moving rows in the same parent up
- \o To move rows within the same parent, specify the row to move them to.
+ \li \inlineimage modelview-move-rows-3.png Moving rows in the same parent up
+ \li To move rows within the same parent, specify the row to move them to.
For example, as shown in the diagram, we move one item from row 2 to row 0,
so \a sourceFirst and \a sourceLast are 2 and \a destinationChild is 0.
it is already)
\row
- \o \inlineimage modelview-move-rows-4.png Moving rows in the same parent down
- \o To move rows within the same parent, specify the row to move them to.
+ \li \inlineimage modelview-move-rows-4.png Moving rows in the same parent down
+ \li To move rows within the same parent, specify the row to move them to.
For example, as shown in the diagram, we move one item from row 2 to row 4,
so \a sourceFirst and \a sourceLast are 2 and \a destinationChild is 4.
\table 80%
\row
- \o \inlineimage modelview-begin-insert-columns.png Inserting columns
- \o Specify the first and last column numbers for the span of columns
+ \li \inlineimage modelview-begin-insert-columns.png Inserting columns
+ \li Specify the first and last column numbers for the span of columns
you want to insert into an item in a model.
For example, as shown in the diagram, we insert three columns
This inserts the three new columns as columns 4, 5, and 6.
\row
- \o \inlineimage modelview-begin-append-columns.png Appending columns
- \o To append columns, insert them after the last column.
+ \li \inlineimage modelview-begin-append-columns.png Appending columns
+ \li To append columns, insert them after the last column.
For example, as shown in the diagram, we append three columns to a
collection of six existing columns (ending in column 5), so
\table 80%
\row
- \o \inlineimage modelview-begin-remove-columns.png Removing columns
- \o Specify the first and last column numbers for the span of columns
+ \li \inlineimage modelview-begin-remove-columns.png Removing columns
+ \li Specify the first and last column numbers for the span of columns
you want to remove from an item in a model.
For example, as shown in the diagram, we remove the three columns
are aware of any changes:
\list
- \o An insertRows() implementation must call beginInsertRows()
+ \li An insertRows() implementation must call beginInsertRows()
\e before inserting new rows into the data structure, and it must
call endInsertRows() \e{immediately afterwards}.
- \o An insertColumns() implementation must call beginInsertColumns()
+ \li An insertColumns() implementation must call beginInsertColumns()
\e before inserting new columns into the data structure, and it must
call endInsertColumns() \e{immediately afterwards}.
- \o A removeRows() implementation must call beginRemoveRows()
+ \li A removeRows() implementation must call beginRemoveRows()
\e before the rows are removed from the data structure, and it must
call endRemoveRows() \e{immediately afterwards}.
- \o A removeColumns() implementation must call beginRemoveColumns()
+ \li A removeColumns() implementation must call beginRemoveColumns()
\e before the columns are removed from the data structure, and it must
call endRemoveColumns() \e{immediately afterwards}.
\endlist
functions so that all connected views are aware of any changes:
\list
- \o An insertRows() implementation must call beginInsertRows()
+ \li An insertRows() implementation must call beginInsertRows()
\e before inserting new rows into the data structure, and it must
call endInsertRows() \e{immediately afterwards}.
- \o A removeRows() implementation must call beginRemoveRows()
+ \li A removeRows() implementation must call beginRemoveRows()
\e before the rows are removed from the data structure, and it must
call endRemoveRows() \e{immediately afterwards}.
\endlist
the following QVariant types:
\list
- \o QVariant::Int
- \o QVariant::UInt
- \o QVariant::LongLong
- \o QVariant::ULongLong
- \o QVariant::Double
- \o QVariant::Char
- \o QVariant::Date
- \o QVariant::Time
- \o QVariant::DateTime
- \o QVariant::String
+ \li QVariant::Int
+ \li QVariant::UInt
+ \li QVariant::LongLong
+ \li QVariant::ULongLong
+ \li QVariant::Double
+ \li QVariant::Char
+ \li QVariant::Date
+ \li QVariant::Time
+ \li QVariant::DateTime
+ \li QVariant::String
\endlist
Any other type will be converted to a QString using
/*! \typedef QJsonArray::iterator::iterator_category
- A synonym for \i {std::random_access_iterator_tag} indicating
+ A synonym for \e {std::random_access_iterator_tag} indicating
this iterator is a random access iterator.
*/
/*! \typedef QJsonArray::const_iterator::iterator_category
- A synonym for \i {std::random_access_iterator_tag} indicating
+ A synonym for \e {std::random_access_iterator_tag} indicating
this iterator is a random access iterator.
*/
/*! \typedef QJsonObject::iterator::iterator_category
- A synonym for \i {std::bidirectional_iterator_tag} indicating
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
this iterator is a bidirectional iterator.
*/
/*! \typedef QJsonObject::const_iterator::iterator_category
- A synonym for \i {std::bidirectional_iterator_tag} indicating
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
this iterator is a bidirectional iterator.
*/
JSON is a format to store structured data. It has 6 basic data types:
\list
- \o bool QJsonValue::Bool
- \o double QJsonValue::Double
- \o string QJsonValue::String
- \o array QJsonValue::Array
- \o object QJsonValue::Object
- \o null QJsonValue::Null
+ \li bool QJsonValue::Bool
+ \li double QJsonValue::Double
+ \li string QJsonValue::String
+ \li array QJsonValue::Array
+ \li object QJsonValue::Object
+ \li null QJsonValue::Null
\endlist
A value can represent any of the above data types. In addition, QJsonValue has one special
The conversion will convert QVariant types as follows:
\list
- \o QVariant::Bool to Bool
- \o QVariant::Int
- \o QVariant::Double
- \o QVariant::LongLong
- \o QVariant::ULongLong
- \o QVariant::UInt to Double
- \o QVariant::String to String
- \o QVariant::StringList
- \o QVariant::VariantList to Array
- \o QVariant::VariantMap to Object
+ \li QVariant::Bool to Bool
+ \li QVariant::Int
+ \li QVariant::Double
+ \li QVariant::LongLong
+ \li QVariant::ULongLong
+ \li QVariant::UInt to Double
+ \li QVariant::String to String
+ \li QVariant::StringList
+ \li QVariant::VariantList to Array
+ \li QVariant::VariantMap to Object
\endlist
For all other QVariant types a conversion to a QString will be attempted. If the returned string
event dispatcher exists for the specified thread, this function
returns 0.
- \bold{Note:} If Qt is built without thread support, the \a thread
+ \b{Note:} If Qt is built without thread support, the \a thread
argument is ignored.
*/
QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread)
\list
- \i If events are available, this function returns after processing
+ \li If events are available, this function returns after processing
them.
- \i If no events are available, this function will wait until more
+ \li If no events are available, this function will wait until more
are available and return after processing newly available events.
\endlist
and no events are available, this function will return
immediately.
- \bold{Note:} This function does not process events continuously; it
+ \b{Note:} This function does not process events continuously; it
returns after all available events are processed.
\sa hasPendingEvents()
\table
\header
- \o Platform
- \o type
+ \li Platform
+ \li type
\row
- \o Windows
- \o MSG
+ \li Windows
+ \li MSG
\row
- \o X11
- \o XEvent
+ \li X11
+ \li XEvent
\row
- \o Mac
- \o NSEvent
+ \li Mac
+ \li NSEvent
\endtable
reimplementing this virtual function is just one of them. All five
approaches are listed below:
\list 1
- \i Reimplementing paintEvent(), mousePressEvent() and so
+ \li Reimplementing paintEvent(), mousePressEvent() and so
on. This is the commonest, easiest and least powerful way.
- \i Reimplementing this function. This is very powerful, providing
+ \li Reimplementing this function. This is very powerful, providing
complete control; but only one subclass can be active at a time.
- \i Installing an event filter on QCoreApplication::instance(). Such
+ \li Installing an event filter on QCoreApplication::instance(). Such
an event filter is able to process all events for all widgets, so
it's just as powerful as reimplementing notify(); furthermore, it's
possible to have more than one application-global event filter.
event filters are only called for objects that live in the main
thread.
- \i Reimplementing QObject::event() (as QWidget does). If you do
+ \li Reimplementing QObject::event() (as QWidget does). If you do
this you get Tab key presses, and you get to see the events before
any widget-specific event filters.
- \i Installing an event filter on the object. Such an event filter gets all
+ \li Installing an event filter on the object. Such an event filter gets all
the events, including Tab and Shift+Tab key press events, as long as they
do not change the focus widget.
\endlist
operation and want to show its progress without allowing user
input, i.e. by using the \l ExcludeUserInputEvents flag.
- \bold{Notes:}
+ \b{Notes:}
\list
- \o This function does not process events continuously; it
+ \li This function does not process events continuously; it
returns after all available events are processed.
- \o Specifying the \l WaitForMoreEvents flag makes no sense
+ \li Specifying the \l WaitForMoreEvents flag makes no sense
and will be ignored.
\endlist
*/
The functions you are most likely to find useful are these:
\list
- \o className() returns the name of a class.
- \o superClass() returns the superclass's meta-object.
- \o method() and methodCount() provide information
+ \li className() returns the name of a class.
+ \li superClass() returns the superclass's meta-object.
+ \li method() and methodCount() provide information
about a class's meta-methods (signals, slots and other
\l{Q_INVOKABLE}{invokable} member functions).
- \o enumerator() and enumeratorCount() and provide information about
+ \li enumerator() and enumeratorCount() and provide information about
a class's enumerators.
- \o propertyCount() and property() provide information about a
+ \li propertyCount() and property() provide information about a
class's properties.
- \o constructor() and constructorCount() provide information
+ \li constructor() and constructorCount() provide information
about a class's meta-constructors.
\endlist
depending on \a type:
\list
- \o If \a type is Qt::DirectConnection, the member will be invoked immediately.
+ \li If \a type is Qt::DirectConnection, the member will be invoked immediately.
- \o If \a type is Qt::QueuedConnection,
+ \li If \a type is Qt::QueuedConnection,
a QEvent will be sent and the member is invoked as soon as the application
enters the main event loop.
- \o If \a type is Qt::BlockingQueuedConnection, the method will be invoked in
+ \li If \a type is Qt::BlockingQueuedConnection, the method will be invoked in
the same way as for Qt::QueuedConnection, except that the current thread
will block until the event is delivered. Using this connection type to
communicate between objects in the same thread will lead to deadlocks.
- \o If \a type is Qt::AutoConnection, the member is invoked
+ \li If \a type is Qt::AutoConnection, the member is invoked
synchronously if \a obj lives in the same thread as the
caller; otherwise it will invoke the member asynchronously.
\endlist
\a connectionType:
\list
- \o If \a connectionType is Qt::DirectConnection, the member will be invoked immediately.
+ \li If \a connectionType is Qt::DirectConnection, the member will be invoked immediately.
- \o If \a connectionType is Qt::QueuedConnection,
+ \li If \a connectionType is Qt::QueuedConnection,
a QEvent will be posted and the member is invoked as soon as the application
enters the main event loop.
- \o If \a connectionType is Qt::AutoConnection, the member is invoked
+ \li If \a connectionType is Qt::AutoConnection, the member is invoked
synchronously if \a object lives in the same thread as the
caller; otherwise it will invoke the member asynchronously.
\endlist
functions to access the data:
\table
- \header \o Tester \o Getter \o Setter \o MIME Types
- \row \o hasText() \o text() \o setText() \o \c text/plain
- \row \o hasHtml() \o html() \o setHtml() \o \c text/html
- \row \o hasUrls() \o urls() \o setUrls() \o \c text/uri-list
- \row \o hasImage() \o imageData() \o setImageData() \o \c image/ *
- \row \o hasColor() \o colorData() \o setColorData() \o \c application/x-color
+ \header \li Tester \li Getter \li Setter \li MIME Types
+ \row \li hasText() \li text() \li setText() \li \c text/plain
+ \row \li hasHtml() \li html() \li setHtml() \li \c text/html
+ \row \li hasUrls() \li urls() \li setUrls() \li \c text/uri-list
+ \row \li hasImage() \li imageData() \li setImageData() \li \c image/ *
+ \row \li hasColor() \li colorData() \li setColorData() \li \c application/x-color
\endtable
For example, if your write a widget that accepts URL drags, you
object:
\list 1
- \o Custom data can be stored directly in a QMimeData object as a
+ \li Custom data can be stored directly in a QMimeData object as a
QByteArray using setData(). For example:
\snippet doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp 1
- \o We can subclass QMimeData and reimplement hasFormat(),
+ \li We can subclass QMimeData and reimplement hasFormat(),
formats(), and retrieveData().
- \o If the drag and drop operation occurs within a single
+ \li If the drag and drop operation occurs within a single
application, we can subclass QMimeData and add extra data in
it, and use a qobject_cast() in the receiver's drop event
handler. For example:
deleted, the control must return to the event loop from which
deleteLater() was called.
- \bold{Note:} It is safe to call this function more than once; when the
+ \b{Note:} It is safe to call this function more than once; when the
first deferred deletion event is delivered, any pending events for the
object are removed from the event queue.
member in the specified class.
\list
- \o If member.mobj is 0 then both signalIndex and methodIndex are set to -1.
+ \li If member.mobj is 0 then both signalIndex and methodIndex are set to -1.
- \o If specified member is not a member of obj instance class (or one of
+ \li If specified member is not a member of obj instance class (or one of
its parent classes) then both signalIndex and methodIndex are set to -1.
\endlist
disconnect() is typically used in three ways, as the following
examples demonstrate.
\list 1
- \i Disconnect everything connected to an object's signals:
+ \li Disconnect everything connected to an object's signals:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 26
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 27
- \i Disconnect everything connected to a specific signal:
+ \li Disconnect everything connected to a specific signal:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 28
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 29
- \i Disconnect a specific receiver:
+ \li Disconnect a specific receiver:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 30
if:
\list 1
- \i \a signal is not a member of sender class or one of its parent classes.
+ \li \a signal is not a member of sender class or one of its parent classes.
- \i \a method is not a member of receiver class or one of its parent classes.
+ \li \a method is not a member of receiver class or one of its parent classes.
- \i \a signal instance represents not a signal.
+ \li \a signal instance represents not a signal.
\endlist
Changing the value of a dynamic property causes a QDynamicPropertyChangeEvent
to be sent to the object.
- \bold{Note:} Dynamic properties starting with "_q_" are reserved for internal
+ \b{Note:} Dynamic properties starting with "_q_" are reserved for internal
purposes.
\sa property(), metaObject(), dynamicPropertyNames()
disconnect() is typically used in three ways, as the following
examples demonstrate.
\list 1
- \i Disconnect everything connected to an object's signals:
+ \li Disconnect everything connected to an object's signals:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 26
- \i Disconnect everything connected to a specific signal:
+ \li Disconnect everything connected to a specific signal:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 47
- \i Disconnect a specific receiver:
+ \li Disconnect a specific receiver:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 30
- \i Disconnect a connection from one specific signal to a specific slot:
+ \li Disconnect a connection from one specific signal to a specific slot:
\snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 48
\list
- \i When using QPointer on a QWidget (or a subclass of QWidget), previously
+ \li When using QPointer on a QWidget (or a subclass of QWidget), previously
the QPointer would be cleared by the QWidget destructor. Now, the QPointer
is cleared by the QObject destructor (since this is when QWeakPointers are
cleared). Any QPointers tracking a widget will \b NOT be cleared before the
QWidget destructor destroys the children for the widget being tracked.
- \i When constructing a QSharedPointer to take ownership of an object after a
+ \li When constructing a QSharedPointer to take ownership of an object after a
QPointer is already tracking the object. Previously, the shared pointer
construction would not be affected by the QPointer, but now that QPointer
is implemented using QWeakPoiner, constructing the QSharedPointer will
\list
- \o Windows: QSharedMemory does not "own" the shared memory segment.
+ \li Windows: QSharedMemory does not "own" the shared memory segment.
When all threads or processes that have an instance of QSharedMemory
attached to a particular shared memory segment have either destroyed
their instance of QSharedMemory or exited, the Windows kernel
releases the shared memory segment automatically.
- \o Unix: QSharedMemory "owns" the shared memory segment. When the
+ \li Unix: QSharedMemory "owns" the shared memory segment. When the
last thread or process that has an instance of QSharedMemory
attached to a particular shared memory segment detaches from the
segment by destroying its instance of QSharedMemory, the Unix kernel
process crashes without running the QSharedMemory destructor, the
shared memory segment survives the crash.
- \o HP-UX: Only one attach to a shared memory segment is allowed per
+ \li HP-UX: Only one attach to a shared memory segment is allowed per
process. This means that QSharedMemory should not be used across
multiple threads in the same process in HP-UX.
follow these steps when you receive a notification:
\list 1
- \o Disable the notifier.
- \o Read data from the socket.
- \o Re-enable the notifier if you are interested in more data (such as after
+ \li Disable the notifier.
+ \li Read data from the socket.
+ \li Re-enable the notifier if you are interested in more data (such as after
having written a new command to a remote server).
\endlist
follow these steps when you receive a notification:
\list 1
- \o Disable the notifier.
- \o Write as much data as you can (before \c EWOULDBLOCK is returned).
- \o Re-enable notifier if you have more data to write.
+ \li Disable the notifier.
+ \li Write as much data as you can (before \c EWOULDBLOCK is returned).
+ \li Re-enable notifier if you have more data to write.
\endlist
- \bold{Further information:}
+ \b{Further information:}
On Windows, Qt always disables the notifier after getting a notification,
and only re-enables it if more data is expected. For example, if data is
read from the socket and it can be used to read more, or if reading or
It is generally advisable to explicitly enable or disable the
socket notifier, especially for write notifiers.
- \bold{Note for Windows users:} The socket passed to QSocketNotifier
+ \b{Note for Windows users:} The socket passed to QSocketNotifier
will become non-blocking, even if it was created as a blocking socket.
\sa setEnabled(), isEnabled()
When using this class, be aware of the following platform
differences:
- \bold{Windows:} QSystemSemaphore does not own its underlying system
+ \b{Windows:} QSystemSemaphore does not own its underlying system
semaphore. Windows owns it. This means that when all instances of
QSystemSemaphore for a particular key have been destroyed, either by
having their destructors called, or because one or more processes
crash, Windows removes the underlying system semaphore.
- \bold{Unix:}
+ \b{Unix:}
\list
- \o QSystemSemaphore owns the underlying system semaphore
+ \li QSystemSemaphore owns the underlying system semaphore
in Unix systems. This means that the last process having an instance of
QSystemSemaphore for a particular key must remove the underlying
system semaphore in its destructor. If the last process crashes
{QSystemSemaphore::} {Create}, which will force Unix to reset the
resource count in the underlying system semaphore.
- \o When a process using QSystemSemaphore terminates for
+ \li When a process using QSystemSemaphore terminates for
any reason, Unix automatically reverses the effect of all acquire
operations that were not released. Thus if the process acquires a
resource and then exits without releasing it, Unix will release that
up to three parameters:
\list
- \o The \e context - usually the class name for the tr() caller.
- \o The \e {source text} - usually the argument to tr().
- \o The \e disambiguation - an optional string that helps disambiguate
+ \li The \e context - usually the class name for the tr() caller.
+ \li The \e {source text} - usually the argument to tr().
+ \li The \e disambiguation - an optional string that helps disambiguate
different uses of the same text in the same context.
\endlist
in the following order:
\list 1
- \o File name without \a suffix appended.
- \o File name with text after a character in \a search_delimiters
+ \li File name without \a suffix appended.
+ \li File name with text after a character in \a search_delimiters
stripped ("_." is the default for \a search_delimiters if it is
an empty string) and \a suffix.
- \o File name stripped without \a suffix appended.
- \o File name stripped further, etc.
+ \li File name stripped without \a suffix appended.
+ \li File name stripped further, etc.
\endlist
For example, an application running in the fr_CA locale
readable file from this list:
\list 1
- \o \c /opt/foolib/foo.fr_ca.qm
- \o \c /opt/foolib/foo.fr_ca
- \o \c /opt/foolib/foo.fr.qm
- \o \c /opt/foolib/foo.fr
- \o \c /opt/foolib/foo.qm
- \o \c /opt/foolib/foo
+ \li \c /opt/foolib/foo.fr_ca.qm
+ \li \c /opt/foolib/foo.fr_ca
+ \li \c /opt/foolib/foo.fr.qm
+ \li \c /opt/foolib/foo.fr
+ \li \c /opt/foolib/foo.qm
+ \li \c /opt/foolib/foo
\endlist
*/
in the following order:
\list 1
- \o File name without \a suffix appended.
- \o File name with ui language part after a "_" character stripped and \a suffix.
- \o File name with ui language part stripped without \a suffix appended.
- \o File name with ui language part stripped further, etc.
+ \li File name without \a suffix appended.
+ \li File name with ui language part after a "_" character stripped and \a suffix.
+ \li File name with ui language part stripped without \a suffix appended.
+ \li File name with ui language part stripped further, etc.
\endlist
For example, an application running in the locale with the following
open the first existing readable file from this list:
\list 1
- \o \c /opt/foolib/foo.es.qm
- \o \c /opt/foolib/foo.es
- \o \c /opt/foolib/foo.fr_CA.qm
- \o \c /opt/foolib/foo.fr_CA
- \o \c /opt/foolib/foo.de.qm
- \o \c /opt/foolib/foo.de
- \o \c /opt/foolib/foo.fr.qm
- \o \c /opt/foolib/foo.fr
- \o \c /opt/foolib/foo.qm
- \o \c /opt/foolib/foo.
- \o \c /opt/foolib/foo
+ \li \c /opt/foolib/foo.es.qm
+ \li \c /opt/foolib/foo.es
+ \li \c /opt/foolib/foo.fr_CA.qm
+ \li \c /opt/foolib/foo.fr_CA
+ \li \c /opt/foolib/foo.de.qm
+ \li \c /opt/foolib/foo.de
+ \li \c /opt/foolib/foo.fr.qm
+ \li \c /opt/foolib/foo.fr
+ \li \c /opt/foolib/foo.qm
+ \li \c /opt/foolib/foo.
+ \li \c /opt/foolib/foo
\endlist
On operating systems where file system is case sensitive, QTranslator also
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to an int; otherwise \c{*}\a{ok} is set to false.
- \bold{Warning:} If the value is convertible to a \l LongLong but is too
+ \b{Warning:} If the value is convertible to a \l LongLong but is too
large to be represented in an int, the resulting arithmetic overflow will
not be reflected in \a ok. A simple workaround is to use QString::toInt().
Fixing this bug has been postponed to Qt 5 in order to avoid breaking existing code.
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to an unsigned int; otherwise \c{*}\a{ok} is set to false.
- \bold{Warning:} If the value is convertible to a \l ULongLong but is too
+ \b{Warning:} If the value is convertible to a \l ULongLong but is too
large to be represented in an unsigned int, the resulting arithmetic overflow will
not be reflected in \a ok. A simple workaround is to use QString::toUInt().
Fixing this bug has been postponed to Qt 5 in order to avoid breaking existing code.
The following casts are done automatically:
\table
- \header \o Type \o Automatically Cast To
- \row \o \l Bool \o \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \o \l ByteArray \o \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \o \l Char \o \l Bool, \l Int, \l UInt, \l LongLong, \l ULongLong
- \row \o \l Color \o \l String
- \row \o \l Date \o \l DateTime, \l String
- \row \o \l DateTime \o \l Date, \l String, \l Time
- \row \o \l Double \o \l Bool, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \o \l Font \o \l String
- \row \o \l Int \o \l Bool, \l Char, \l Double, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \o \l KeySequence \o \l Int, \l String
- \row \o \l List \o \l StringList (if the list's items can be converted to strings)
- \row \o \l LongLong \o \l Bool, \l ByteArray, \l Char, \l Double, \l Int, \l String, \l UInt, \l ULongLong
- \row \o \l Point \o PointF
- \row \o \l Rect \o RectF
- \row \o \l String \o \l Bool, \l ByteArray, \l Char, \l Color, \l Date, \l DateTime, \l Double,
+ \header \li Type \li Automatically Cast To
+ \row \li \l Bool \li \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
+ \row \li \l ByteArray \li \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
+ \row \li \l Char \li \l Bool, \l Int, \l UInt, \l LongLong, \l ULongLong
+ \row \li \l Color \li \l String
+ \row \li \l Date \li \l DateTime, \l String
+ \row \li \l DateTime \li \l Date, \l String, \l Time
+ \row \li \l Double \li \l Bool, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
+ \row \li \l Font \li \l String
+ \row \li \l Int \li \l Bool, \l Char, \l Double, \l LongLong, \l String, \l UInt, \l ULongLong
+ \row \li \l KeySequence \li \l Int, \l String
+ \row \li \l List \li \l StringList (if the list's items can be converted to strings)
+ \row \li \l LongLong \li \l Bool, \l ByteArray, \l Char, \l Double, \l Int, \l String, \l UInt, \l ULongLong
+ \row \li \l Point \li PointF
+ \row \li \l Rect \li RectF
+ \row \li \l String \li \l Bool, \l ByteArray, \l Char, \l Color, \l Date, \l DateTime, \l Double,
\l Font, \l Int, \l KeySequence, \l LongLong, \l StringList, \l Time, \l UInt,
\l ULongLong
- \row \o \l StringList \o \l List, \l String (if the list contains exactly one item)
- \row \o \l Time \o \l String
- \row \o \l UInt \o \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l ULongLong
- \row \o \l ULongLong \o \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt
+ \row \li \l StringList \li \l List, \l String (if the list contains exactly one item)
+ \row \li \l Time \li \l String
+ \row \li \l UInt \li \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l ULongLong
+ \row \li \l ULongLong \li \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt
\endtable
\sa convert()
Finally, you can use the setHandle() function to register a new event
object, and the handle() function to retrieve the event handle.
- \bold{Further information:}
+ \b{Further information:}
Although the class is called QWinEventNotifier, it can be used for
certain other objects which are so-called synchronization
objects, such as Processes, Threads, Waitable timers.
Register the HANDLE \a hEvent. The old HANDLE will be automatically
unregistered.
- \bold Note: The notifier will be disabled as a side effect and needs
+ \b Note: The notifier will be disabled as a side effect and needs
to be re-enabled.
\sa handle(), setEnabled()
library; otherwise returns false.
\table
- \header \i Platform \i Valid suffixes
- \row \i Windows \i \c .dll, \c .DLL
- \row \i Unix/Linux \i \c .so
- \row \i AIX \i \c .a
- \row \i HP-UX \i \c .sl, \c .so (HP-UXi)
- \row \i Mac OS X \i \c .dylib, \c .bundle, \c .so
+ \header \li Platform \li Valid suffixes
+ \row \li Windows \li \c .dll, \c .DLL
+ \row \li Unix/Linux \li \c .so
+ \row \li AIX \li \c .a
+ \row \li HP-UX \li \c .sl, \c .so (HP-UXi)
+ \row \li Mac OS X \li \c .dylib, \c .bundle, \c .so
\endtable
Trailing versioning numbers on Unix are ignored.
using QLibrary:
\list
- \o QPluginLoader checks that a plugin is linked against the same
+ \li QPluginLoader checks that a plugin is linked against the same
version of Qt as the application.
- \o QPluginLoader provides direct access to a root component object
+ \li QPluginLoader provides direct access to a root component object
(instance()), instead of forcing you to resolve a C function manually.
\endlist
\table
\header
- \o msb0
- \o msb1
- \o msb2
- \o Variant
+ \li msb0
+ \li msb1
+ \li msb2
+ \li Variant
\row
- \o 0
- \o x
- \o x
- \o NCS (Network Computing System)
+ \li 0
+ \li x
+ \li x
+ \li NCS (Network Computing System)
\row
- \o 1
- \o 0
- \o x
- \o DCE (Distributed Computing Environment)
+ \li 1
+ \li 0
+ \li x
+ \li DCE (Distributed Computing Environment)
\row
- \o 1
- \o 1
- \o 0
- \o Microsoft (GUID)
+ \li 1
+ \li 1
+ \li 0
+ \li Microsoft (GUID)
\row
- \o 1
- \o 1
- \o 1
- \o Reserved for future expansion
+ \li 1
+ \li 1
+ \li 1
+ \li Reserved for future expansion
\endtable
\table
\header
- \o msb0
- \o msb1
- \o msb2
- \o msb3
- \o Version
+ \li msb0
+ \li msb1
+ \li msb2
+ \li msb3
+ \li Version
\row
- \o 0
- \o 0
- \o 0
- \o 1
- \o Time
+ \li 0
+ \li 0
+ \li 0
+ \li 1
+ \li Time
\row
- \o 0
- \o 0
- \o 1
- \o 0
- \o Embedded POSIX
+ \li 0
+ \li 0
+ \li 1
+ \li 0
+ \li Embedded POSIX
\row
- \o 0
- \o 0
- \o 1
- \o 1
- \o Md5(Name)
+ \li 0
+ \li 0
+ \li 1
+ \li 1
+ \li Md5(Name)
\row
- \o 0
- \o 1
- \o 0
- \o 0
- \o Random
+ \li 0
+ \li 1
+ \li 0
+ \li 0
+ \li Random
\row
- \o 0
- \o 1
- \o 0
- \o 1
- \o Sha1
+ \li 0
+ \li 1
+ \li 0
+ \li 1
+ \li Sha1
\endtable
\table
\header
- \o Field #
- \o Source
+ \li Field #
+ \li Source
\row
- \o 1
- \o data1
+ \li 1
+ \li data1
\row
- \o 2
- \o data2
+ \li 2
+ \li data2
\row
- \o 3
- \o data3
+ \li 3
+ \li data3
\row
- \o 4
- \o data4[0] .. data4[1]
+ \li 4
+ \li data4[0] .. data4[1]
\row
- \o 5
- \o data4[2] .. data4[7]
+ \li 5
+ \li data4[2] .. data4[7]
\endtable
*/
\table
\header
- \o Field #
- \o Source
+ \li Field #
+ \li Source
\row
- \o 1
- \o data1
+ \li 1
+ \li data1
\row
- \o 2
- \o data2
+ \li 2
+ \li data2
\row
- \o 3
- \o data3
+ \li 3
+ \li data3
\row
- \o 4
- \o data4[0] .. data4[1]
+ \li 4
+ \li data4[0] .. data4[1]
\row
- \o 5
- \o data4[2] .. data4[7]
+ \li 5
+ \li data4[2] .. data4[7]
\endtable
\table
\header
- \o Field #
- \o Source
+ \li Field #
+ \li Source
\row
- \o 1
- \o data1
+ \li 1
+ \li data1
\row
- \o 2
- \o data2
+ \li 2
+ \li data2
\row
- \o 3
- \o data3
+ \li 3
+ \li data3
\row
- \o 4
- \o data4[0] .. data4[7]
+ \li 4
+ \li data4[0] .. data4[7]
\endtable
\list
- \o Relaxed - memory ordering is unspecified, leaving the compiler
+ \li Relaxed - memory ordering is unspecified, leaving the compiler
and processor to freely reorder memory accesses.
- \o Acquire - memory access following the atomic operation (in
+ \li Acquire - memory access following the atomic operation (in
program order) may not be re-ordered before the atomic operation.
- \o Release - memory access before the atomic operation (in program
+ \li Release - memory access before the atomic operation (in program
order) may not be re-ordered after the atomic operation.
- \o Ordered - the same Acquire and Release semantics combined.
+ \li Ordered - the same Acquire and Release semantics combined.
\endlist
\list
- \o Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
- \o Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
+ \li Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
+ \li Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
- \o Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE
- \o Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
+ \li Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE
+ \li Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
- \o Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
+ \li Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
- \o Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE
- \o Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
+ \li Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE
+ \li Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
\endlist
\list
- \o Relaxed - memory ordering is unspecified, leaving the compiler
+ \li Relaxed - memory ordering is unspecified, leaving the compiler
and processor to freely reorder memory accesses.
- \o Acquire - memory access following the atomic operation (in
+ \li Acquire - memory access following the atomic operation (in
program order) may not be re-ordered before the atomic operation.
- \o Release - memory access before the atomic operation (in program
+ \li Release - memory access before the atomic operation (in program
order) may not be re-ordered after the atomic operation.
- \o Ordered - the same Acquire and Release semantics combined.
+ \li Ordered - the same Acquire and Release semantics combined.
\endlist
\list
- \o Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE
- \o Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
+ \li Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE
+ \li Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
- \o Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
+ \li Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
- \o Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE
- \o Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
+ \li Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE
+ \li Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
\endlist
release():
\list
- \o acquire(\e{n}) tries to acquire \e n resources. If there aren't
+ \li acquire(\e{n}) tries to acquire \e n resources. If there aren't
that many resources available, the call will block until this
is the case.
- \o release(\e{n}) releases \e n resources.
+ \li release(\e{n}) releases \e n resources.
\endlist
There's also a tryAcquire() function that returns immediately if
Blocks the thread until either of these conditions is met:
\list
- \o The thread associated with this QThread object has finished
+ \li The thread associated with this QThread object has finished
execution (i.e. when it returns from \l{run()}). This function
will return true if the thread has finished. It also returns
true if the thread has not been started yet.
- \o \a time milliseconds has elapsed. If \a time is ULONG_MAX (the
+ \li \a time milliseconds has elapsed. If \a time is ULONG_MAX (the
default), then the wait will never timeout (the thread must
return from \l{run()}). This function will return false if the
wait timed out.
\list
- \o The QThreadStorage destructor does not delete per-thread data.
+ \li The QThreadStorage destructor does not delete per-thread data.
QThreadStorage only deletes per-thread data when the thread exits
or when setLocalData() is called multiple times.
- \o QThreadStorage can be used to store data for the \c main()
+ \li QThreadStorage can be used to store data for the \c main()
thread. QThreadStorage deletes all data set for the \c main()
thread when QApplication is destroyed, regardless of whether or
not the \c main() thread has actually finished.
calling thread will block until either of these conditions is met:
\list
- \o Another thread signals it using wakeOne() or wakeAll(). This
+ \li Another thread signals it using wakeOne() or wakeAll(). This
function will return true in this case.
- \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
+ \li \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
(the default), then the wait will never timeout (the event
must be signalled). This function will return false if the
wait timed out.
calling thread will block until either of these conditions is met:
\list
- \o Another thread signals it using wakeOne() or wakeAll(). This
+ \li Another thread signals it using wakeOne() or wakeAll(). This
function will return true in this case.
- \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
+ \li \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
(the default), then the wait will never timeout (the event
must be signalled). This function will return false if the
wait timed out.
bidirectional iterator, and supports the following operations:
\table
- \row \i \c{i += n} \i advances iterator \c i by \c n positions
- \row \i \c{i -= n} \i moves iterator \c i back by \c n positions
- \row \i \c{i + n} or \c{n + i} \i returns the iterator for the item \c
+ \row \li \c{i += n} \li advances iterator \c i by \c n positions
+ \row \li \c{i -= n} \li moves iterator \c i back by \c n positions
+ \row \li \c{i + n} or \c{n + i} \li returns the iterator for the item \c
n positions ahead of iterator \c i
- \row \i \c{i - n} \i returns the iterator for the item \c n positions behind of iterator \c i
- \row \i \c{i - j} \i returns the number of items between iterators \c i and \c j
- \row \i \c{i[n]} \i same as \c{*(i + n)}
- \row \i \c{i < j} \i returns true if iterator \c j comes after iterator \c i
+ \row \li \c{i - n} \li returns the iterator for the item \c n positions behind of iterator \c i
+ \row \li \c{i - j} \li returns the number of items between iterators \c i and \c j
+ \row \li \c{i[n]} \li same as \c{*(i + n)}
+ \row \li \c{i < j} \li returns true if iterator \c j comes after iterator \c i
\endtable
QList and QVector's non-const iterator types are random access iterators.
from this and any earlier Qt version, back to Qt 3.1 when this
feature was added.
- \bold{Note:} If you want to use this function to uncompress external
+ \b{Note:} If you want to use this function to uncompress external
data that was compressed using zlib, you first need to prepend a four
byte header to the byte array containing the data. The header must
contain the expected length (in bytes) of the uncompressed data,
The format \a f can be any of the following:
\table
- \header \i Format \i Meaning
- \row \i \c e \i format as [-]9.9e[+|-]999
- \row \i \c E \i format as [-]9.9E[+|-]999
- \row \i \c f \i format as [-]9.9
- \row \i \c g \i use \c e or \c f format, whichever is the most concise
- \row \i \c G \i use \c E or \c f format, whichever is the most concise
+ \header \li Format \li Meaning
+ \row \li \c e \li format as [-]9.9e[+|-]999
+ \row \li \c E \li format as [-]9.9E[+|-]999
+ \row \li \c f \li format as [-]9.9
+ \row \li \c g \li use \c e or \c f format, whichever is the most concise
+ \row \li \c G \li use \c E or \c f format, whichever is the most concise
\endtable
With 'e', 'E', and 'f', \a prec is the number of digits after the
which is \c g by default, and can be any of the following:
\table
- \header \i Format \i Meaning
- \row \i \c e \i format as [-]9.9e[+|-]999
- \row \i \c E \i format as [-]9.9E[+|-]999
- \row \i \c f \i format as [-]9.9
- \row \i \c g \i use \c e or \c f format, whichever is the most concise
- \row \i \c G \i use \c E or \c f format, whichever is the most concise
+ \header \li Format \li Meaning
+ \row \li \c e \li format as [-]9.9e[+|-]999
+ \row \li \c E \li format as [-]9.9E[+|-]999
+ \row \li \c f \li format as [-]9.9
+ \row \li \c g \li use \c e or \c f format, whichever is the most concise
+ \row \li \c G \li use \c E or \c f format, whichever is the most concise
\endtable
With 'e', 'E', and 'f', \a prec is the number of digits after the
the following convention:
\list
- \i 1 = "January"
- \i 2 = "February"
- \i 3 = "March"
- \i 4 = "April"
- \i 5 = "May"
- \i 6 = "June"
- \i 7 = "July"
- \i 8 = "August"
- \i 9 = "September"
- \i 10 = "October"
- \i 11 = "November"
- \i 12 = "December"
+ \li 1 = "January"
+ \li 2 = "February"
+ \li 3 = "March"
+ \li 4 = "April"
+ \li 5 = "May"
+ \li 6 = "June"
+ \li 7 = "July"
+ \li 8 = "August"
+ \li 9 = "September"
+ \li 10 = "October"
+ \li 11 = "November"
+ \li 12 = "December"
\endlist
Returns 0 if the date is invalid.
The months are enumerated using the following convention:
\list
- \i 1 = "Jan"
- \i 2 = "Feb"
- \i 3 = "Mar"
- \i 4 = "Apr"
- \i 5 = "May"
- \i 6 = "Jun"
- \i 7 = "Jul"
- \i 8 = "Aug"
- \i 9 = "Sep"
- \i 10 = "Oct"
- \i 11 = "Nov"
- \i 12 = "Dec"
+ \li 1 = "Jan"
+ \li 2 = "Feb"
+ \li 3 = "Mar"
+ \li 4 = "Apr"
+ \li 5 = "May"
+ \li 6 = "Jun"
+ \li 7 = "Jul"
+ \li 8 = "Aug"
+ \li 9 = "Sep"
+ \li 10 = "Oct"
+ \li 11 = "Nov"
+ \li 12 = "Dec"
\endlist
The month names will be localized according to the system's locale
The months are enumerated using the following convention:
\list
- \i 1 = "January"
- \i 2 = "February"
- \i 3 = "March"
- \i 4 = "April"
- \i 5 = "May"
- \i 6 = "June"
- \i 7 = "July"
- \i 8 = "August"
- \i 9 = "September"
- \i 10 = "October"
- \i 11 = "November"
- \i 12 = "December"
+ \li 1 = "January"
+ \li 2 = "February"
+ \li 3 = "March"
+ \li 4 = "April"
+ \li 5 = "May"
+ \li 6 = "June"
+ \li 7 = "July"
+ \li 8 = "August"
+ \li 9 = "September"
+ \li 10 = "October"
+ \li 11 = "November"
+ \li 12 = "December"
\endlist
The month names will be localized according to the system's locale
The days are enumerated using the following convention:
\list
- \i 1 = "Mon"
- \i 2 = "Tue"
- \i 3 = "Wed"
- \i 4 = "Thu"
- \i 5 = "Fri"
- \i 6 = "Sat"
- \i 7 = "Sun"
+ \li 1 = "Mon"
+ \li 2 = "Tue"
+ \li 3 = "Wed"
+ \li 4 = "Thu"
+ \li 5 = "Fri"
+ \li 6 = "Sat"
+ \li 7 = "Sun"
\endlist
The day names will be localized according to the system's locale
The days are enumerated using the following convention:
\list
- \i 1 = "Monday"
- \i 2 = "Tuesday"
- \i 3 = "Wednesday"
- \i 4 = "Thursday"
- \i 5 = "Friday"
- \i 6 = "Saturday"
- \i 7 = "Sunday"
+ \li 1 = "Monday"
+ \li 2 = "Tuesday"
+ \li 3 = "Wednesday"
+ \li 4 = "Thursday"
+ \li 5 = "Friday"
+ \li 6 = "Saturday"
+ \li 7 = "Sunday"
\endlist
The day names will be localized according to the system's locale
These expressions may be used:
\table
- \header \i Expression \i Output
- \row \i d \i the day as number without a leading zero (1 to 31)
- \row \i dd \i the day as number with a leading zero (01 to 31)
- \row \i ddd
- \i the abbreviated localized day name (e.g. 'Mon' to 'Sun').
+ \header \li Expression \li Output
+ \row \li d \li the day as number without a leading zero (1 to 31)
+ \row \li dd \li the day as number with a leading zero (01 to 31)
+ \row \li ddd
+ \li the abbreviated localized day name (e.g. 'Mon' to 'Sun').
Uses QDate::shortDayName().
- \row \i dddd
- \i the long localized day name (e.g. 'Monday' to 'Sunday').
+ \row \li dddd
+ \li the long localized day name (e.g. 'Monday' to 'Sunday').
Uses QDate::longDayName().
- \row \i M \i the month as number without a leading zero (1 to 12)
- \row \i MM \i the month as number with a leading zero (01 to 12)
- \row \i MMM
- \i the abbreviated localized month name (e.g. 'Jan' to 'Dec').
+ \row \li M \li the month as number without a leading zero (1 to 12)
+ \row \li MM \li the month as number with a leading zero (01 to 12)
+ \row \li MMM
+ \li the abbreviated localized month name (e.g. 'Jan' to 'Dec').
Uses QDate::shortMonthName().
- \row \i MMMM
- \i the long localized month name (e.g. 'January' to 'December').
+ \row \li MMMM
+ \li the long localized month name (e.g. 'January' to 'December').
Uses QDate::longMonthName().
- \row \i yy \i the year as two digit number (00 to 99)
- \row \i yyyy \i the year as four digit number. If the year is negative,
+ \row \li yy \li the year as two digit number (00 to 99)
+ \row \li yyyy \li the year as four digit number. If the year is negative,
a minus sign is prepended in addition.
\endtable
1969):
\table
- \header \o Format \o Result
- \row \o dd.MM.yyyy \o 20.07.1969
- \row \o ddd MMMM d yy \o Sun July 20 69
- \row \o 'The day is' dddd \o The day is Sunday
+ \header \li Format \li Result
+ \row \li dd.MM.yyyy \li 20.07.1969
+ \row \li ddd MMMM d yy \li Sun July 20 69
+ \row \li 'The day is' dddd \li The day is Sunday
\endtable
If the datetime is invalid, an empty string will be returned.
These expressions may be used for the format:
\table
- \header \i Expression \i Output
- \row \i d \i The day as a number without a leading zero (1 to 31)
- \row \i dd \i The day as a number with a leading zero (01 to 31)
- \row \i ddd
- \i The abbreviated localized day name (e.g. 'Mon' to 'Sun').
+ \header \li Expression \li Output
+ \row \li d \li The day as a number without a leading zero (1 to 31)
+ \row \li dd \li The day as a number with a leading zero (01 to 31)
+ \row \li ddd
+ \li The abbreviated localized day name (e.g. 'Mon' to 'Sun').
Uses QDate::shortDayName().
- \row \i dddd
- \i The long localized day name (e.g. 'Monday' to 'Sunday').
+ \row \li dddd
+ \li The long localized day name (e.g. 'Monday' to 'Sunday').
Uses QDate::longDayName().
- \row \i M \i The month as a number without a leading zero (1 to 12)
- \row \i MM \i The month as a number with a leading zero (01 to 12)
- \row \i MMM
- \i The abbreviated localized month name (e.g. 'Jan' to 'Dec').
+ \row \li M \li The month as a number without a leading zero (1 to 12)
+ \row \li MM \li The month as a number with a leading zero (01 to 12)
+ \row \li MMM
+ \li The abbreviated localized month name (e.g. 'Jan' to 'Dec').
Uses QDate::shortMonthName().
- \row \i MMMM
- \i The long localized month name (e.g. 'January' to 'December').
+ \row \li MMMM
+ \li The long localized month name (e.g. 'January' to 'December').
Uses QDate::longMonthName().
- \row \i yy \i The year as two digit number (00 to 99)
- \row \i yyyy \i The year as four digit number. If the year is negative,
+ \row \li yy \li The year as two digit number (00 to 99)
+ \row \li yyyy \li The year as four digit number. If the year is negative,
a minus sign is prepended in addition.
\endtable
defaults are used:
\table
- \header \i Field \i Default value
- \row \i Year \i 1900
- \row \i Month \i 1
- \row \i Day \i 1
+ \header \li Field \li Default value
+ \row \li Year \li 1900
+ \row \li Month \li 1
+ \row \li Day \li 1
\endtable
The following examples demonstrate the default values:
These expressions may be used:
\table
- \header \i Expression \i Output
- \row \i h
- \i the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
- \row \i hh
- \i the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
- \row \i H
- \i the hour without a leading zero (0 to 23, even with AM/PM display)
- \row \i HH
- \i the hour with a leading zero (00 to 23, even with AM/PM display)
- \row \i m \i the minute without a leading zero (0 to 59)
- \row \i mm \i the minute with a leading zero (00 to 59)
- \row \i s \i the second without a leading zero (0 to 59)
- \row \i ss \i the second with a leading zero (00 to 59)
- \row \i z \i the milliseconds without leading zeroes (0 to 999)
- \row \i zzz \i the milliseconds with leading zeroes (000 to 999)
- \row \i AP or A
- \i use AM/PM display. \e AP will be replaced by either "AM" or "PM".
- \row \i ap or a
- \i use am/pm display. \e ap will be replaced by either "am" or "pm".
- \row \i t \i the timezone (for example "CEST")
+ \header \li Expression \li Output
+ \row \li h
+ \li the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
+ \row \li hh
+ \li the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
+ \row \li H
+ \li the hour without a leading zero (0 to 23, even with AM/PM display)
+ \row \li HH
+ \li the hour with a leading zero (00 to 23, even with AM/PM display)
+ \row \li m \li the minute without a leading zero (0 to 59)
+ \row \li mm \li the minute with a leading zero (00 to 59)
+ \row \li s \li the second without a leading zero (0 to 59)
+ \row \li ss \li the second with a leading zero (00 to 59)
+ \row \li z \li the milliseconds without leading zeroes (0 to 999)
+ \row \li zzz \li the milliseconds with leading zeroes (000 to 999)
+ \row \li AP or A
+ \li use AM/PM display. \e AP will be replaced by either "AM" or "PM".
+ \row \li ap or a
+ \li use am/pm display. \e ap will be replaced by either "am" or "pm".
+ \row \li t \li the timezone (for example "CEST")
\endtable
All other input characters will be ignored. Any sequence of characters that
Example format strings (assuming that the QTime is 14:13:09.042)
\table
- \header \i Format \i Result
- \row \i hh:mm:ss.zzz \i 14:13:09.042
- \row \i h:m:s ap \i 2:13:9 pm
- \row \i H:m:s a \i 14:13:9 pm
+ \header \li Format \li Result
+ \row \li hh:mm:ss.zzz \li 14:13:09.042
+ \row \li h:m:s ap \li 2:13:9 pm
+ \row \li H:m:s a \li 14:13:9 pm
\endtable
If the datetime is invalid, an empty string will be returned.
These expressions may be used for the format:
\table
- \header \i Expression \i Output
- \row \i h
- \i the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
- \row \i hh
- \i the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
- \row \i m \i the minute without a leading zero (0 to 59)
- \row \i mm \i the minute with a leading zero (00 to 59)
- \row \i s \i the second without a leading zero (0 to 59)
- \row \i ss \i the second with a leading zero (00 to 59)
- \row \i z \i the milliseconds without leading zeroes (0 to 999)
- \row \i zzz \i the milliseconds with leading zeroes (000 to 999)
- \row \i AP
- \i interpret as an AM/PM time. \e AP must be either "AM" or "PM".
- \row \i ap
- \i Interpret as an AM/PM time. \e ap must be either "am" or "pm".
+ \header \li Expression \li Output
+ \row \li h
+ \li the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
+ \row \li hh
+ \li the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
+ \row \li m \li the minute without a leading zero (0 to 59)
+ \row \li mm \li the minute with a leading zero (00 to 59)
+ \row \li s \li the second without a leading zero (0 to 59)
+ \row \li ss \li the second with a leading zero (00 to 59)
+ \row \li z \li the milliseconds without leading zeroes (0 to 999)
+ \row \li zzz \li the milliseconds with leading zeroes (000 to 999)
+ \row \li AP
+ \li interpret as an AM/PM time. \e AP must be either "AM" or "PM".
+ \row \li ap
+ \li Interpret as an AM/PM time. \e ap must be either "am" or "pm".
\endtable
All other input characters will be treated as text. Any sequence
These expressions may be used for the date:
\table
- \header \i Expression \i Output
- \row \i d \i the day as number without a leading zero (1 to 31)
- \row \i dd \i the day as number with a leading zero (01 to 31)
- \row \i ddd
- \i the abbreviated localized day name (e.g. 'Mon' to 'Sun').
+ \header \li Expression \li Output
+ \row \li d \li the day as number without a leading zero (1 to 31)
+ \row \li dd \li the day as number with a leading zero (01 to 31)
+ \row \li ddd
+ \li the abbreviated localized day name (e.g. 'Mon' to 'Sun').
Uses QDate::shortDayName().
- \row \i dddd
- \i the long localized day name (e.g. 'Monday' to 'Qt::Sunday').
+ \row \li dddd
+ \li the long localized day name (e.g. 'Monday' to 'Qt::Sunday').
Uses QDate::longDayName().
- \row \i M \i the month as number without a leading zero (1-12)
- \row \i MM \i the month as number with a leading zero (01-12)
- \row \i MMM
- \i the abbreviated localized month name (e.g. 'Jan' to 'Dec').
+ \row \li M \li the month as number without a leading zero (1-12)
+ \row \li MM \li the month as number with a leading zero (01-12)
+ \row \li MMM
+ \li the abbreviated localized month name (e.g. 'Jan' to 'Dec').
Uses QDate::shortMonthName().
- \row \i MMMM
- \i the long localized month name (e.g. 'January' to 'December').
+ \row \li MMMM
+ \li the long localized month name (e.g. 'January' to 'December').
Uses QDate::longMonthName().
- \row \i yy \i the year as two digit number (00-99)
- \row \i yyyy \i the year as four digit number
+ \row \li yy \li the year as two digit number (00-99)
+ \row \li yyyy \li the year as four digit number
\endtable
These expressions may be used for the time:
\table
- \header \i Expression \i Output
- \row \i h
- \i the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
- \row \i hh
- \i the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
- \row \i m \i the minute without a leading zero (0 to 59)
- \row \i mm \i the minute with a leading zero (00 to 59)
- \row \i s \i the second without a leading zero (0 to 59)
- \row \i ss \i the second with a leading zero (00 to 59)
- \row \i z \i the milliseconds without leading zeroes (0 to 999)
- \row \i zzz \i the milliseconds with leading zeroes (000 to 999)
- \row \i AP
- \i use AM/PM display. \e AP will be replaced by either "AM" or "PM".
- \row \i ap
- \i use am/pm display. \e ap will be replaced by either "am" or "pm".
+ \header \li Expression \li Output
+ \row \li h
+ \li the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
+ \row \li hh
+ \li the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
+ \row \li m \li the minute without a leading zero (0 to 59)
+ \row \li mm \li the minute with a leading zero (00 to 59)
+ \row \li s \li the second without a leading zero (0 to 59)
+ \row \li ss \li the second with a leading zero (00 to 59)
+ \row \li z \li the milliseconds without leading zeroes (0 to 999)
+ \row \li zzz \li the milliseconds with leading zeroes (000 to 999)
+ \row \li AP
+ \li use AM/PM display. \e AP will be replaced by either "AM" or "PM".
+ \row \li ap
+ \li use am/pm display. \e ap will be replaced by either "am" or "pm".
\endtable
All other input characters will be ignored. Any sequence of characters that
14:13:09):
\table
- \header \i Format \i Result
- \row \i dd.MM.yyyy \i 21.05.2001
- \row \i ddd MMMM d yy \i Tue May 21 01
- \row \i hh:mm:ss.zzz \i 14:13:09.042
- \row \i h:m:s ap \i 2:13:9 pm
+ \header \li Format \li Result
+ \row \li dd.MM.yyyy \li 21.05.2001
+ \row \li ddd MMMM d yy \li Tue May 21 01
+ \row \li hh:mm:ss.zzz \li 14:13:09.042
+ \row \li h:m:s ap \li 2:13:9 pm
\endtable
If the datetime is invalid, an empty string will be returned.
These expressions may be used for the date part of the format string:
\table
- \header \i Expression \i Output
- \row \i d \i the day as number without a leading zero (1 to 31)
- \row \i dd \i the day as number with a leading zero (01 to 31)
- \row \i ddd
- \i the abbreviated localized day name (e.g. 'Mon' to 'Sun').
+ \header \li Expression \li Output
+ \row \li d \li the day as number without a leading zero (1 to 31)
+ \row \li dd \li the day as number with a leading zero (01 to 31)
+ \row \li ddd
+ \li the abbreviated localized day name (e.g. 'Mon' to 'Sun').
Uses QDate::shortDayName().
- \row \i dddd
- \i the long localized day name (e.g. 'Monday' to 'Sunday').
+ \row \li dddd
+ \li the long localized day name (e.g. 'Monday' to 'Sunday').
Uses QDate::longDayName().
- \row \i M \i the month as number without a leading zero (1-12)
- \row \i MM \i the month as number with a leading zero (01-12)
- \row \i MMM
- \i the abbreviated localized month name (e.g. 'Jan' to 'Dec').
+ \row \li M \li the month as number without a leading zero (1-12)
+ \row \li MM \li the month as number with a leading zero (01-12)
+ \row \li MMM
+ \li the abbreviated localized month name (e.g. 'Jan' to 'Dec').
Uses QDate::shortMonthName().
- \row \i MMMM
- \i the long localized month name (e.g. 'January' to 'December').
+ \row \li MMMM
+ \li the long localized month name (e.g. 'January' to 'December').
Uses QDate::longMonthName().
- \row \i yy \i the year as two digit number (00-99)
- \row \i yyyy \i the year as four digit number
+ \row \li yy \li the year as two digit number (00-99)
+ \row \li yyyy \li the year as four digit number
\endtable
\note Unlike the other version of this function, day and month names must
These expressions may be used for the time part of the format string:
\table
- \header \i Expression \i Output
- \row \i h
- \i the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
- \row \i hh
- \i the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
- \row \i H
- \i the hour without a leading zero (0 to 23, even with AM/PM display)
- \row \i HH
- \i the hour with a leading zero (00 to 23, even with AM/PM display)
- \row \i m \i the minute without a leading zero (0 to 59)
- \row \i mm \i the minute with a leading zero (00 to 59)
- \row \i s \i the second without a leading zero (0 to 59)
- \row \i ss \i the second with a leading zero (00 to 59)
- \row \i z \i the milliseconds without leading zeroes (0 to 999)
- \row \i zzz \i the milliseconds with leading zeroes (000 to 999)
- \row \i AP or A
- \i interpret as an AM/PM time. \e AP must be either "AM" or "PM".
- \row \i ap or a
- \i Interpret as an AM/PM time. \e ap must be either "am" or "pm".
+ \header \li Expression \li Output
+ \row \li h
+ \li the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
+ \row \li hh
+ \li the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
+ \row \li H
+ \li the hour without a leading zero (0 to 23, even with AM/PM display)
+ \row \li HH
+ \li the hour with a leading zero (00 to 23, even with AM/PM display)
+ \row \li m \li the minute without a leading zero (0 to 59)
+ \row \li mm \li the minute with a leading zero (00 to 59)
+ \row \li s \li the second without a leading zero (0 to 59)
+ \row \li ss \li the second with a leading zero (00 to 59)
+ \row \li z \li the milliseconds without leading zeroes (0 to 999)
+ \row \li zzz \li the milliseconds with leading zeroes (000 to 999)
+ \row \li AP or A
+ \li interpret as an AM/PM time. \e AP must be either "AM" or "PM".
+ \row \li ap or a
+ \li Interpret as an AM/PM time. \e ap must be either "am" or "pm".
\endtable
All other input characters will be treated as text. Any sequence
defaults are used:
\table
- \header \i Field \i Default value
- \row \i Year \i 1900
- \row \i Month \i 1 (January)
- \row \i Day \i 1
- \row \i Hour \i 0
- \row \i Minute \i 0
- \row \i Second \i 0
+ \header \li Field \li Default value
+ \row \li Year \li 1900
+ \row \li Month \li 1 (January)
+ \row \li Day \li 1
+ \row \li Hour \li 0
+ \row \li Minute \li 0
+ \row \li Second \li 0
\endtable
For example:
differences are:
\list
- \i QHash provides faster lookups than QMap. (See \l{Algorithmic
+ \li QHash provides faster lookups than QMap. (See \l{Algorithmic
Complexity} for details.)
- \i When iterating over a QMap, the items are always sorted by
+ \li When iterating over a QMap, the items are always sorted by
key. With QHash, the items are arbitrarily ordered.
- \i The key type of a QMap must provide operator<(). The key
+ \li The key type of a QMap must provide operator<(). The key
type of a QHash must provide operator==() and a global
hash function called qHash() (see the related non-member
functions).
\table
\row
- \o \inlineimage qline-point.png
- \o \inlineimage qline-coordinates.png
+ \li \inlineimage qline-point.png
+ \li \inlineimage qline-coordinates.png
\endtable
The positions of the line's start and end points can be retrieved
\table
\row
- \o \inlineimage qline-point.png
- \o \inlineimage qline-coordinates.png
+ \li \inlineimage qline-point.png
+ \li \inlineimage qline-coordinates.png
\endtable
The positions of the line's start and end points can be retrieved
\table
\row
- \o \inlineimage qlinef-unbounded.png
- \o \inlineimage qlinef-bounded.png
+ \li \inlineimage qlinef-unbounded.png
+ \li \inlineimage qlinef-bounded.png
\row
- \o QLineF::UnboundedIntersection
- \o QLineF::BoundedIntersection
+ \li QLineF::UnboundedIntersection
+ \li QLineF::BoundedIntersection
\endtable
\value NoIntersection Indicates that the lines do not intersect;
\table
\row
- \o \inlineimage qlinef-angle-identicaldirection.png
- \o \inlineimage qlinef-angle-oppositedirection.png
+ \li \inlineimage qlinef-angle-identicaldirection.png
+ \li \inlineimage qlinef-angle-oppositedirection.png
\endtable
When the lines are parallel, this function returns 0 if they have
functionality. Here's an overview:
\list
- \i For most purposes, QList is the right class to use. Its
+ \li For most purposes, QList is the right class to use. Its
index-based API is more convenient than QLinkedList's
iterator-based API, and it is usually faster than
QVector because of the way it stores its items in
memory (see \l{Algorithmic Complexity} for details).
It also expands to less code in your executable.
- \i If you need a real linked list, with guarantees of \l{constant
+ \li If you need a real linked list, with guarantees of \l{constant
time} insertions in the middle of the list and iterators to
items rather than indexes, use QLinkedList.
- \i If you want the items to occupy adjacent memory positions,
+ \li If you want the items to occupy adjacent memory positions,
use QVector.
\endlist
functionality. Here's an overview:
\list
- \i For most purposes, QList is the right class to use. Its
+ \li For most purposes, QList is the right class to use. Its
index-based API is more convenient than QLinkedList's
iterator-based API, and it is usually faster than
QVector because of the way it stores its items in
memory. It also expands to less code in your executable.
- \i If you need a real linked list, with guarantees of \l{constant
+ \li If you need a real linked list, with guarantees of \l{constant
time} insertions in the middle of the list and iterators to
items rather than indexes, use QLinkedList.
- \i If you want the items to occupy adjacent memory positions,
+ \li If you want the items to occupy adjacent memory positions,
use QVector.
\endlist
"language[_script][_country][.codeset][@modifier]" or "C", where:
\list
- \i language is a lowercase, two-letter, ISO 639 language code,
- \i script is a titlecase, four-letter, ISO 15924 script code,
- \i country is an uppercase, two- or three-letter, ISO 3166 country code (also "419" as defined by United Nations),
- \i and codeset and modifier are ignored.
+ \li language is a lowercase, two-letter, ISO 639 language code,
+ \li script is a titlecase, four-letter, ISO 15924 script code,
+ \li country is an uppercase, two- or three-letter, ISO 3166 country code (also "419" as defined by United Nations),
+ \li and codeset and modifier are ignored.
\endlist
The separator can be either underscore or a minus sign.
country.
\list
- \i If the language/country pair is found in the database, it is used.
- \i If the language is found but the country is not, or if the country
+ \li If the language/country pair is found in the database, it is used.
+ \li If the language is found but the country is not, or if the country
is \c AnyCountry, the language is used with the most
appropriate available country (for example, Germany for German),
- \i If neither the language nor the country are found, QLocale
+ \li If neither the language nor the country are found, QLocale
defaults to the default locale (see setDefault()).
\endlist
\a country.
\list
- \i If the language/script/country is found in the database, it is used.
- \i If both \a script is AnyScript and \a country is AnyCountry, the
+ \li If the language/script/country is found in the database, it is used.
+ \li If both \a script is AnyScript and \a country is AnyCountry, the
language is used with the most appropriate available script and country
(for example, Germany for German),
- \i If either \a script is AnyScript or \a country is AnyCountry, the
+ \li If either \a script is AnyScript or \a country is AnyCountry, the
language is used with the first locale that matches the given \a script
and \a country.
- \i If neither the language nor the country are found, QLocale
+ \li If neither the language nor the country are found, QLocale
defaults to the default locale (see setDefault()).
\endlist
following effects:
\list
- \i If a QLocale object is constructed with the default constructor,
+ \li If a QLocale object is constructed with the default constructor,
it will use the default locale's settings.
- \i QString::toInt(), QString::toDouble(), etc., interpret the
+ \li QString::toInt(), QString::toDouble(), etc., interpret the
string according to the default locale. If this fails, it
falls back on the "C" locale.
- \i QString::arg() uses the default locale to format a number when
+ \li QString::arg() uses the default locale to format a number when
its position specifier in the format string contains an 'L',
e.g. "%L1".
\endlist
of three things can happen:
\list
- \i If the language/country pair is found in the database, it is used.
- \i If the language is found but the country is not, or if the country
+ \li If the language/country pair is found in the database, it is used.
+ \li If the language is found but the country is not, or if the country
is \c AnyCountry, the language is used with the most
appropriate available country (for example, Germany for German),
- \i If neither the language nor the country are found, QLocale
+ \li If neither the language nor the country are found, QLocale
defaults to the default locale (see setDefault()).
\endlist
differences are:
\list
- \i QHash provides faster lookups than QMap. (See \l{Algorithmic
+ \li QHash provides faster lookups than QMap. (See \l{Algorithmic
Complexity} for details.)
- \i When iterating over a QHash, the items are arbitrarily ordered.
+ \li When iterating over a QHash, the items are arbitrarily ordered.
With QMap, the items are always sorted by key.
- \i The key type of a QHash must provide operator==() and a global
+ \li The key type of a QHash must provide operator==() and a global
qHash(Key) function. The key type of a QMap must provide
operator<() specifying a total order.
\endlist
\table
\row
- \o \inlineimage qrect-intersect.png
- \o \inlineimage qrect-unite.png
+ \li \inlineimage qrect-intersect.png
+ \li \inlineimage qrect-unite.png
\row
- \o intersected()
- \o united()
+ \li intersected()
+ \li united()
\endtable
The isEmpty() function returns true if left() > right() or top() >
\table
\row
- \o \inlineimage qrect-diagram-zero.png
- \o \inlineimage qrect-diagram-one.png
+ \li \inlineimage qrect-diagram-zero.png
+ \li \inlineimage qrect-diagram-one.png
\row
- \o Logical representation
- \o One pixel wide pen
+ \li Logical representation
+ \li One pixel wide pen
\row
- \o \inlineimage qrect-diagram-two.png
- \o \inlineimage qrect-diagram-three.png
+ \li \inlineimage qrect-diagram-two.png
+ \li \inlineimage qrect-diagram-three.png
\row
- \o Two pixel wide pen
- \o Three pixel wide pen
+ \li Two pixel wide pen
+ \li Three pixel wide pen
\endtable
\section1 Coordinates
\table
\row
- \o \inlineimage qrect-intersect.png
- \o \inlineimage qrect-unite.png
+ \li \inlineimage qrect-intersect.png
+ \li \inlineimage qrect-unite.png
\row
- \o intersected()
- \o united()
+ \li intersected()
+ \li united()
\endtable
The isEmpty() function returns true if the rectangle's width or
\table
\row
- \o \inlineimage qrect-diagram-zero.png
- \o \inlineimage qrectf-diagram-one.png
+ \li \inlineimage qrect-diagram-zero.png
+ \li \inlineimage qrectf-diagram-one.png
\row
- \o Logical representation
- \o One pixel wide pen
+ \li Logical representation
+ \li One pixel wide pen
\row
- \o \inlineimage qrectf-diagram-two.png
- \o \inlineimage qrectf-diagram-three.png
+ \li \inlineimage qrectf-diagram-two.png
+ \li \inlineimage qrectf-diagram-three.png
\row
- \o Two pixel wide pen
- \o Three pixel wide pen
+ \li Two pixel wide pen
+ \li Three pixel wide pen
\endtable
\section1 Coordinates
substrings in a text. This is useful in many contexts, e.g.,
\table
- \row \i Validation
- \i A regexp can test whether a substring meets some criteria,
+ \row \li Validation
+ \li A regexp can test whether a substring meets some criteria,
e.g. is an integer or contains no whitespace.
- \row \i Searching
- \i A regexp provides more powerful pattern matching than
+ \row \li Searching
+ \li A regexp provides more powerful pattern matching than
simple substring matching, e.g., match one of the words
\e{mail}, \e{letter} or \e{correspondence}, but none of the
words \e{email}, \e{mailman}, \e{mailer}, \e{letterbox}, etc.
- \row \i Search and Replace
- \i A regexp can replace all occurrences of a substring with a
+ \row \li Search and Replace
+ \li A regexp can replace all occurrences of a substring with a
different substring, e.g., replace all occurrences of \e{&}
with \e{\&} except where the \e{&} is already followed by
an \e{amp;}.
- \row \i String Splitting
- \i A regexp can be used to identify where a string should be
+ \row \li String Splitting
+ \li A regexp can be used to identify where a string should be
split apart, e.g. splitting tab-delimited strings.
\endtable
\section1 Introduction
Regexps are built up from expressions, quantifiers, and
- assertions. The simplest expression is a character, e.g. \bold{x}
- or \bold{5}. An expression can also be a set of characters
- enclosed in square brackets. \bold{[ABCD]} will match an \bold{A}
- or a \bold{B} or a \bold{C} or a \bold{D}. We can write this same
- expression as \bold{[A-D]}, and an experession to match any
+ assertions. The simplest expression is a character, e.g. \b{x}
+ or \b{5}. An expression can also be a set of characters
+ enclosed in square brackets. \b{[ABCD]} will match an \b{A}
+ or a \b{B} or a \b{C} or a \b{D}. We can write this same
+ expression as \b{[A-D]}, and an experession to match any
captital letter in the English alphabet is written as
- \bold{[A-Z]}.
+ \b{[A-Z]}.
A quantifier specifies the number of occurrences of an expression
- that must be matched. \bold{x{1,1}} means match one and only one
- \bold{x}. \bold{x{1,5}} means match a sequence of \bold{x}
- characters that contains at least one \bold{x} but no more than
+ that must be matched. \b{x{1,1}} means match one and only one
+ \b{x}. \b{x{1,5}} means match a sequence of \b{x}
+ characters that contains at least one \b{x} but no more than
five.
Note that in general regexps cannot be used to check for balanced
Suppose we want a regexp to match integers in the range 0 to 99.
At least one digit is required, so we start with the expression
- \bold{[0-9]{1,1}}, which matches a single digit exactly once. This
+ \b{[0-9]{1,1}}, which matches a single digit exactly once. This
regexp matches integers in the range 0 to 9. To match integers up
to 99, increase the maximum number of occurrences to 2, so the
- regexp becomes \bold{[0-9]{1,2}}. This regexp satisfies the
+ regexp becomes \b{[0-9]{1,2}}. This regexp satisfies the
original requirement to match integers from 0 to 99, but it will
also match integers that occur in the middle of strings. If we
want the matched integer to be the whole string, we must use the
- anchor assertions, \bold{^} (caret) and \bold{$} (dollar). When
- \bold{^} is the first character in a regexp, it means the regexp
- must match from the beginning of the string. When \bold{$} is the
+ anchor assertions, \b{^} (caret) and \b{$} (dollar). When
+ \b{^} is the first character in a regexp, it means the regexp
+ must match from the beginning of the string. When \b{$} is the
last character of the regexp, it means the regexp must match to
- the end of the string. The regexp becomes \bold{^[0-9]{1,2}$}.
- Note that assertions, e.g. \bold{^} and \bold{$}, do not match
+ the end of the string. The regexp becomes \b{^[0-9]{1,2}$}.
+ Note that assertions, e.g. \b{^} and \b{$}, do not match
characters but locations in the string.
If you have seen regexps described elsewhere, they may have looked
different from the ones shown here. This is because some sets of
characters and some quantifiers are so common that they have been
- given special symbols to represent them. \bold{[0-9]} can be
- replaced with the symbol \bold{\\d}. The quantifier to match
- exactly one occurrence, \bold{{1,1}}, can be replaced with the
- expression itself, i.e. \bold{x{1,1}} is the same as \bold{x}. So
- our 0 to 99 matcher could be written as \bold{^\\d{1,2}$}. It can
- also be written \bold{^\\d\\d{0,1}$}, i.e. \e{From the start of
+ given special symbols to represent them. \b{[0-9]} can be
+ replaced with the symbol \b{\\d}. The quantifier to match
+ exactly one occurrence, \b{{1,1}}, can be replaced with the
+ expression itself, i.e. \b{x{1,1}} is the same as \b{x}. So
+ our 0 to 99 matcher could be written as \b{^\\d{1,2}$}. It can
+ also be written \b{^\\d\\d{0,1}$}, i.e. \e{From the start of
the string, match a digit, followed immediately by 0 or 1 digits}.
- In practice, it would be written as \bold{^\\d\\d?$}. The \bold{?}
- is shorthand for the quantifier \bold{{0,1}}, i.e. 0 or 1
- occurrences. \bold{?} makes an expression optional. The regexp
- \bold{^\\d\\d?$} means \e{From the beginning of the string, match
+ In practice, it would be written as \b{^\\d\\d?$}. The \b{?}
+ is shorthand for the quantifier \b{{0,1}}, i.e. 0 or 1
+ occurrences. \b{?} makes an expression optional. The regexp
+ \b{^\\d\\d?$} means \e{From the beginning of the string, match
one digit, followed immediately by 0 or 1 more digit, followed
immediately by end of string}.
'letter' \e or 'correspondence' but does not match words that
contain these words, e.g., 'email', 'mailman', 'mailer', and
'letterbox', start with a regexp that matches 'mail'. Expressed
- fully, the regexp is \bold{m{1,1}a{1,1}i{1,1}l{1,1}}, but because
+ fully, the regexp is \b{m{1,1}a{1,1}i{1,1}l{1,1}}, but because
a character expression is automatically quantified by
- \bold{{1,1}}, we can simplify the regexp to \bold{mail}, i.e., an
+ \b{{1,1}}, we can simplify the regexp to \b{mail}, i.e., an
'm' followed by an 'a' followed by an 'i' followed by an 'l'. Now
- we can use the vertical bar \bold{|}, which means \bold{or}, to
+ we can use the vertical bar \b{|}, which means \b{or}, to
include the other two words, so our regexp for matching any of the
- three words becomes \bold{mail|letter|correspondence}. Match
- 'mail' \bold{or} 'letter' \bold{or} 'correspondence'. While this
+ three words becomes \b{mail|letter|correspondence}. Match
+ 'mail' \b{or} 'letter' \b{or} 'correspondence'. While this
regexp will match one of the three words we want to match, it will
also match words we don't want to match, e.g., 'email'. To
prevent the regexp from matching unwanted words, we must tell it
to begin and end the match at word boundaries. First we enclose
- our regexp in parentheses, \bold{(mail|letter|correspondence)}.
+ our regexp in parentheses, \b{(mail|letter|correspondence)}.
Parentheses group expressions together, and they identify a part
of the regexp that we wish to \l{capturing text}{capture}.
Enclosing the expression in parentheses allows us to use it as a
component in more complex regexps. It also allows us to examine
which of the three words was actually matched. To force the match
to begin and end on word boundaries, we enclose the regexp in
- \bold{\\b} \e{word boundary} assertions:
- \bold{\\b(mail|letter|correspondence)\\b}. Now the regexp means:
+ \b{\\b} \e{word boundary} assertions:
+ \b{\\b(mail|letter|correspondence)\\b}. Now the regexp means:
\e{Match a word boundary, followed by the regexp in parentheses,
- followed by a word boundary}. The \bold{\\b} assertion matches a
+ followed by a word boundary}. The \b{\\b} assertion matches a
\e position in the regexp, not a \e character. A word boundary is
any non-word character, e.g., a space, newline, or the beginning
or ending of a string.
If we want to replace ampersand characters with the HTML entity
- \bold{\&}, the regexp to match is simply \bold{\&}. But this
+ \b{\&}, the regexp to match is simply \b{\&}. But this
regexp will also match ampersands that have already been converted
to HTML entities. We want to replace only ampersands that are not
- already followed by \bold{amp;}. For this, we need the negative
- lookahead assertion, \bold{(?!}__\bold{)}. The regexp can then be
- written as \bold{\&(?!amp;)}, i.e. \e{Match an ampersand that is}
- \bold{not} \e{followed by} \bold{amp;}.
+ already followed by \b{amp;}. For this, we need the negative
+ lookahead assertion, \b{(?!}__\b{)}. The regexp can then be
+ written as \b{\&(?!amp;)}, i.e. \e{Match an ampersand that is}
+ \b{not} \e{followed by} \b{amp;}.
If we want to count all the occurrences of 'Eric' and 'Eirik' in a
- string, two valid solutions are \bold{\\b(Eric|Eirik)\\b} and
- \bold{\\bEi?ri[ck]\\b}. The word boundary assertion '\\b' is
+ string, two valid solutions are \b{\\b(Eric|Eirik)\\b} and
+ \b{\\bEi?ri[ck]\\b}. The word boundary assertion '\\b' is
required to avoid matching words that contain either name,
e.g. 'Ericsson'. Note that the second regexp matches more
spellings than we want: 'Eric', 'Erik', 'Eiric' and 'Eirik'.
\section1 Characters and Abbreviations for Sets of Characters
\table
- \header \i Element \i Meaning
- \row \i \bold{c}
- \i A character represents itself unless it has a special
- regexp meaning. e.g. \bold{c} matches the character \e c.
- \row \i \bold{\\c}
- \i A character that follows a backslash matches the character
+ \header \li Element \li Meaning
+ \row \li \b{c}
+ \li A character represents itself unless it has a special
+ regexp meaning. e.g. \b{c} matches the character \e c.
+ \row \li \b{\\c}
+ \li A character that follows a backslash matches the character
itself, except as specified below. e.g., To match a literal
- caret at the beginning of a string, write \bold{\\^}.
- \row \i \bold{\\a}
- \i Matches the ASCII bell (BEL, 0x07).
- \row \i \bold{\\f}
- \i Matches the ASCII form feed (FF, 0x0C).
- \row \i \bold{\\n}
- \i Matches the ASCII line feed (LF, 0x0A, Unix newline).
- \row \i \bold{\\r}
- \i Matches the ASCII carriage return (CR, 0x0D).
- \row \i \bold{\\t}
- \i Matches the ASCII horizontal tab (HT, 0x09).
- \row \i \bold{\\v}
- \i Matches the ASCII vertical tab (VT, 0x0B).
- \row \i \bold{\\x\e{hhhh}}
- \i Matches the Unicode character corresponding to the
+ caret at the beginning of a string, write \b{\\^}.
+ \row \li \b{\\a}
+ \li Matches the ASCII bell (BEL, 0x07).
+ \row \li \b{\\f}
+ \li Matches the ASCII form feed (FF, 0x0C).
+ \row \li \b{\\n}
+ \li Matches the ASCII line feed (LF, 0x0A, Unix newline).
+ \row \li \b{\\r}
+ \li Matches the ASCII carriage return (CR, 0x0D).
+ \row \li \b{\\t}
+ \li Matches the ASCII horizontal tab (HT, 0x09).
+ \row \li \b{\\v}
+ \li Matches the ASCII vertical tab (VT, 0x0B).
+ \row \li \b{\\x\e{hhhh}}
+ \li Matches the Unicode character corresponding to the
hexadecimal number \e{hhhh} (between 0x0000 and 0xFFFF).
- \row \i \bold{\\0\e{ooo}} (i.e., \\zero \e{ooo})
- \i matches the ASCII/Latin1 character for the octal number
+ \row \li \b{\\0\e{ooo}} (i.e., \\zero \e{ooo})
+ \li matches the ASCII/Latin1 character for the octal number
\e{ooo} (between 0 and 0377).
- \row \i \bold{. (dot)}
- \i Matches any character (including newline).
- \row \i \bold{\\d}
- \i Matches a digit (QChar::isDigit()).
- \row \i \bold{\\D}
- \i Matches a non-digit.
- \row \i \bold{\\s}
- \i Matches a whitespace character (QChar::isSpace()).
- \row \i \bold{\\S}
- \i Matches a non-whitespace character.
- \row \i \bold{\\w}
- \i Matches a word character (QChar::isLetterOrNumber(), QChar::isMark(), or '_').
- \row \i \bold{\\W}
- \i Matches a non-word character.
- \row \i \bold{\\\e{n}}
- \i The \e{n}-th \l backreference, e.g. \\1, \\2, etc.
+ \row \li \b{. (dot)}
+ \li Matches any character (including newline).
+ \row \li \b{\\d}
+ \li Matches a digit (QChar::isDigit()).
+ \row \li \b{\\D}
+ \li Matches a non-digit.
+ \row \li \b{\\s}
+ \li Matches a whitespace character (QChar::isSpace()).
+ \row \li \b{\\S}
+ \li Matches a non-whitespace character.
+ \row \li \b{\\w}
+ \li Matches a word character (QChar::isLetterOrNumber(), QChar::isMark(), or '_').
+ \row \li \b{\\W}
+ \li Matches a non-word character.
+ \row \li \b{\\\e{n}}
+ \li The \e{n}-th \l backreference, e.g. \\1, \\2, etc.
\endtable
- \bold{Note:} The C++ compiler transforms backslashes in strings.
- To include a \bold{\\} in a regexp, enter it twice, i.e. \c{\\}.
+ \b{Note:} The C++ compiler transforms backslashes in strings.
+ To include a \b{\\} in a regexp, enter it twice, i.e. \c{\\}.
To match the backslash character itself, enter it four times, i.e.
\c{\\\\}.
characters do not have special meanings in square brackets.
\table
- \row \i \bold{^}
+ \row \li \b{^}
- \i The caret negates the character set if it occurs as the
+ \li The caret negates the character set if it occurs as the
first character (i.e. immediately after the opening square
- bracket). \bold{[abc]} matches 'a' or 'b' or 'c', but
- \bold{[^abc]} matches anything \e but 'a' or 'b' or 'c'.
+ bracket). \b{[abc]} matches 'a' or 'b' or 'c', but
+ \b{[^abc]} matches anything \e but 'a' or 'b' or 'c'.
- \row \i \bold{-}
+ \row \li \b{-}
- \i The dash indicates a range of characters. \bold{[W-Z]}
+ \li The dash indicates a range of characters. \b{[W-Z]}
matches 'W' or 'X' or 'Y' or 'Z'.
\endtable
Using the predefined character set abbreviations is more portable
than using character ranges across platforms and languages. For
- example, \bold{[0-9]} matches a digit in Western alphabets but
- \bold{\\d} matches a digit in \e any alphabet.
+ example, \b{[0-9]} matches a digit in Western alphabets but
+ \b{\\d} matches a digit in \e any alphabet.
Note: In other regexp documentation, sets of characters are often
called "character classes".
\section1 Quantifiers
By default, an expression is automatically quantified by
- \bold{{1,1}}, i.e. it should occur exactly once. In the following
- list, \bold{\e {E}} stands for expression. An expression is a
+ \b{{1,1}}, i.e. it should occur exactly once. In the following
+ list, \b{\e {E}} stands for expression. An expression is a
character, or an abbreviation for a set of characters, or a set of
characters in square brackets, or an expression in parentheses.
\table
- \row \i \bold{\e {E}?}
+ \row \li \b{\e {E}?}
- \i Matches zero or one occurrences of \e E. This quantifier
+ \li Matches zero or one occurrences of \e E. This quantifier
means \e{The previous expression is optional}, because it
- will match whether or not the expression is found. \bold{\e
- {E}?} is the same as \bold{\e {E}{0,1}}. e.g., \bold{dents?}
+ will match whether or not the expression is found. \b{\e
+ {E}?} is the same as \b{\e {E}{0,1}}. e.g., \b{dents?}
matches 'dent' or 'dents'.
- \row \i \bold{\e {E}+}
+ \row \li \b{\e {E}+}
- \i Matches one or more occurrences of \e E. \bold{\e {E}+} is
- the same as \bold{\e {E}{1,}}. e.g., \bold{0+} matches '0',
+ \li Matches one or more occurrences of \e E. \b{\e {E}+} is
+ the same as \b{\e {E}{1,}}. e.g., \b{0+} matches '0',
'00', '000', etc.
- \row \i \bold{\e {E}*}
+ \row \li \b{\e {E}*}
- \i Matches zero or more occurrences of \e E. It is the same
- as \bold{\e {E}{0,}}. The \bold{*} quantifier is often used
- in error where \bold{+} should be used. For example, if
- \bold{\\s*$} is used in an expression to match strings that
+ \li Matches zero or more occurrences of \e E. It is the same
+ as \b{\e {E}{0,}}. The \b{*} quantifier is often used
+ in error where \b{+} should be used. For example, if
+ \b{\\s*$} is used in an expression to match strings that
end in whitespace, it will match every string because
- \bold{\\s*$} means \e{Match zero or more whitespaces followed
+ \b{\\s*$} means \e{Match zero or more whitespaces followed
by end of string}. The correct regexp to match strings that
have at least one trailing whitespace character is
- \bold{\\s+$}.
+ \b{\\s+$}.
- \row \i \bold{\e {E}{n}}
+ \row \li \b{\e {E}{n}}
- \i Matches exactly \e n occurrences of \e E. \bold{\e {E}{n}}
+ \li Matches exactly \e n occurrences of \e E. \b{\e {E}{n}}
is the same as repeating \e E \e n times. For example,
- \bold{x{5}} is the same as \bold{xxxxx}. It is also the same
- as \bold{\e {E}{n,n}}, e.g. \bold{x{5,5}}.
+ \b{x{5}} is the same as \b{xxxxx}. It is also the same
+ as \b{\e {E}{n,n}}, e.g. \b{x{5,5}}.
- \row \i \bold{\e {E}{n,}}
- \i Matches at least \e n occurrences of \e E.
+ \row \li \b{\e {E}{n,}}
+ \li Matches at least \e n occurrences of \e E.
- \row \i \bold{\e {E}{,m}}
- \i Matches at most \e m occurrences of \e E. \bold{\e {E}{,m}}
- is the same as \bold{\e {E}{0,m}}.
+ \row \li \b{\e {E}{,m}}
+ \li Matches at most \e m occurrences of \e E. \b{\e {E}{,m}}
+ is the same as \b{\e {E}{0,m}}.
- \row \i \bold{\e {E}{n,m}}
- \i Matches at least \e n and at most \e m occurrences of \e E.
+ \row \li \b{\e {E}{n,m}}
+ \li Matches at least \e n and at most \e m occurrences of \e E.
\endtable
To apply a quantifier to more than just the preceding character,
use parentheses to group characters together in an expression. For
- example, \bold{tag+} matches a 't' followed by an 'a' followed by
- at least one 'g', whereas \bold{(tag)+} matches at least one
+ example, \b{tag+} matches a 't' followed by an 'a' followed by
+ at least one 'g', whereas \b{(tag)+} matches at least one
occurrence of 'tag'.
Note: Quantifiers are normally "greedy". They always match as much
- text as they can. For example, \bold{0+} matches the first zero it
+ text as they can. For example, \b{0+} matches the first zero it
finds and all the consecutive zeros after the first zero. Applied
to '20005', it matches'2\underline{000}5'. Quantifiers can be made
non-greedy, see setMinimal().
Parentheses allow us to group elements together so that we can
quantify and capture them. For example if we have the expression
- \bold{mail|letter|correspondence} that matches a string we know
+ \b{mail|letter|correspondence} that matches a string we know
that \e one of the words matched but not which one. Using
parentheses allows us to "capture" whatever is matched within
- their bounds, so if we used \bold{(mail|letter|correspondence)}
+ their bounds, so if we used \b{(mail|letter|correspondence)}
and matched this regexp against the string "I sent you some email"
we can use the cap() or capturedTexts() functions to extract the
matched characters, in this case 'mail'.
We can use captured text within the regexp itself. To refer to the
captured text we use \e backreferences which are indexed from 1,
the same as for cap(). For example we could search for duplicate
- words in a string using \bold{\\b(\\w+)\\W+\\1\\b} which means match a
+ words in a string using \b{\\b(\\w+)\\W+\\1\\b} which means match a
word boundary followed by one or more word characters followed by
one or more non-word characters followed by the same text as the
first parenthesized expression followed by a word boundary.
If we want to use parentheses purely for grouping and not for
capturing we can use the non-capturing syntax, e.g.
- \bold{(?:green|blue)}. Non-capturing parentheses begin '(?:' and
+ \b{(?:green|blue)}. Non-capturing parentheses begin '(?:' and
end ')'. In this example we match either 'green' or 'blue' but we
do not capture the match so we only know whether or not we matched
but not which color we actually found. Using non-capturing
\target greedy quantifiers
- For historical reasons, quantifiers (e.g. \bold{*}) that apply to
+ For historical reasons, quantifiers (e.g. \b{*}) that apply to
capturing parentheses are more "greedy" than other quantifiers.
- For example, \bold{a*(a*)} will match "aaa" with cap(1) == "aaa".
+ For example, \b{a*(a*)} will match "aaa" with cap(1) == "aaa".
This behavior is different from what other regexp engines do
(notably, Perl). To obtain a more intuitive capturing behavior,
specify QRegExp::RegExp2 to the QRegExp constructor or call
Assertions make some statement about the text at the point where
they occur in the regexp but they do not match any characters. In
- the following list \bold{\e {E}} stands for any expression.
+ the following list \b{\e {E}} stands for any expression.
\table
- \row \i \bold{^}
- \i The caret signifies the beginning of the string. If you
+ \row \li \b{^}
+ \li The caret signifies the beginning of the string. If you
wish to match a literal \c{^} you must escape it by
- writing \c{\\^}. For example, \bold{^#include} will only
+ writing \c{\\^}. For example, \b{^#include} will only
match strings which \e begin with the characters '#include'.
(When the caret is the first character of a character set it
has a special meaning, see \link #sets-of-characters Sets of
Characters \endlink.)
- \row \i \bold{$}
- \i The dollar signifies the end of the string. For example
- \bold{\\d\\s*$} will match strings which end with a digit
+ \row \li \b{$}
+ \li The dollar signifies the end of the string. For example
+ \b{\\d\\s*$} will match strings which end with a digit
optionally followed by whitespace. If you wish to match a
literal \c{$} you must escape it by writing
\c{\\$}.
- \row \i \bold{\\b}
- \i A word boundary. For example the regexp
- \bold{\\bOK\\b} means match immediately after a word
+ \row \li \b{\\b}
+ \li A word boundary. For example the regexp
+ \b{\\bOK\\b} means match immediately after a word
boundary (e.g. start of string or whitespace) the letter 'O'
then the letter 'K' immediately before another word boundary
(e.g. end of string or whitespace). But note that the
assertion does not actually match any whitespace so if we
- write \bold{(\\bOK\\b)} and we have a match it will only
+ write \b{(\\bOK\\b)} and we have a match it will only
contain 'OK' even if the string is "It's \underline{OK} now".
- \row \i \bold{\\B}
- \i A non-word boundary. This assertion is true wherever
- \bold{\\b} is false. For example if we searched for
- \bold{\\Bon\\B} in "Left on" the match would fail (space
+ \row \li \b{\\B}
+ \li A non-word boundary. This assertion is true wherever
+ \b{\\b} is false. For example if we searched for
+ \b{\\Bon\\B} in "Left on" the match would fail (space
and end of string aren't non-word boundaries), but it would
match in "t\underline{on}ne".
- \row \i \bold{(?=\e E)}
- \i Positive lookahead. This assertion is true if the
+ \row \li \b{(?=\e E)}
+ \li Positive lookahead. This assertion is true if the
expression matches at this point in the regexp. For example,
- \bold{const(?=\\s+char)} matches 'const' whenever it is
+ \b{const(?=\\s+char)} matches 'const' whenever it is
followed by 'char', as in 'static \underline{const} char *'.
- (Compare with \bold{const\\s+char}, which matches 'static
+ (Compare with \b{const\\s+char}, which matches 'static
\underline{const char} *'.)
- \row \i \bold{(?!\e E)}
- \i Negative lookahead. This assertion is true if the
+ \row \li \b{(?!\e E)}
+ \li Negative lookahead. This assertion is true if the
expression does not match at this point in the regexp. For
- example, \bold{const(?!\\s+char)} matches 'const' \e except
+ example, \b{const(?!\\s+char)} matches 'const' \e except
when it is followed by 'char'.
\endtable
simpler than full regexps and has only four features:
\table
- \row \i \bold{c}
- \i Any character represents itself apart from those mentioned
- below. Thus \bold{c} matches the character \e c.
- \row \i \bold{?}
- \i Matches any single character. It is the same as
- \bold{.} in full regexps.
- \row \i \bold{*}
- \i Matches zero or more of any characters. It is the
- same as \bold{.*} in full regexps.
- \row \i \bold{[...]}
- \i Sets of characters can be represented in square brackets,
+ \row \li \b{c}
+ \li Any character represents itself apart from those mentioned
+ below. Thus \b{c} matches the character \e c.
+ \row \li \b{?}
+ \li Matches any single character. It is the same as
+ \b{.} in full regexps.
+ \row \li \b{*}
+ \li Matches zero or more of any characters. It is the
+ same as \b{.*} in full regexps.
+ \row \li \b{[...]}
+ \li Sets of characters can be represented in square brackets,
similar to full regexps. Within the character class, like
outside, backslash has no special meaning.
\endtable
wildcard.
For example if we are in wildcard mode and have strings which
- contain filenames we could identify HTML files with \bold{*.html}.
+ contain filenames we could identify HTML files with \b{*.html}.
This will match zero or more characters followed by a dot followed
by 'h', 't', 'm' and 'l'.
(but see the \l{greedy quantifiers}{note above}). Non-greedy
matching cannot be applied to individual quantifiers, but can be
applied to all the quantifiers in the pattern. For example, to
- match the Perl regexp \bold{ro+?m} requires:
+ match the Perl regexp \b{ro+?m} requires:
\snippet doc/src/snippets/code/src_corelib_tools_qregexp.cpp 2
Perl's \c{/g} option can be emulated using a \l{#cap_in_a_loop}{loop}.
- In QRegExp \bold{.} matches any character, therefore all QRegExp
+ In QRegExp \b{.} matches any character, therefore all QRegExp
regexps have the equivalent of Perl's \c{/s} option. QRegExp
does not have an equivalent to Perl's \c{/m} option, but this
can be emulated in various ways for example by splitting the input
to Perl's split and join functions.
Note: because C++ transforms \\'s they must be written \e twice in
- code, e.g. \bold{\\b} must be written \bold{\\\\b}.
+ code, e.g. \b{\\b} must be written \b{\\\\b}.
\target code-examples
\section1 Code Examples
Wildcard matching can be convenient because of its simplicity, but
any wildcard regexp can be defined using full regexps, e.g.
- \bold{.*\\.html$}. Notice that we can't match both \c .html and \c
- .htm files with a wildcard unless we use \bold{*.htm*} which will
+ \b{.*\\.html$}. Notice that we can't match both \c .html and \c
+ .htm files with a wildcard unless we use \b{*.htm*} which will
also match 'test.html.bak'. A full regexp gives us the precision
- we need, \bold{.*\\.html?$}.
+ we need, \b{.*\\.html?$}.
QRegExp can match case insensitively using setCaseSensitivity(),
and can use non-greedy matching, see setMinimal(). By
\enum QRegExp::CaretMode
The CaretMode enum defines the different meanings of the caret
- (\bold{^}) in a regular expression. The possible values are:
+ (\b{^}) in a regular expression. The possible values are:
\value CaretAtZero
The caret corresponds to index 0 in the searched string.
Returns true if the regular expression is valid; otherwise returns
false. An invalid regular expression never matches.
- The pattern \bold{[a-z} is an example of an invalid pattern, since
+ The pattern \b{[a-z} is an example of an invalid pattern, since
it lacks a closing square bracket.
Note that the validity of a regexp may also depend on the setting
- of the wildcard flag, for example \bold{*.html} is a valid
+ of the wildcard flag, for example \b{*.html} is a valid
wildcard regexp but an invalid full regexp.
\sa errorString()
/*!
Sets case sensitive matching to \a cs.
- If \a cs is Qt::CaseSensitive, \bold{\\.txt$} matches
+ If \a cs is Qt::CaseSensitive, \b{\\.txt$} matches
\c{readme.txt} but not \c{README.TXT}.
\sa setPatternSyntax(), setPattern(), setMinimal()
QRegExp::RegExp.
Setting \a syntax to QRegExp::Wildcard enables simple shell-like
- \l{wildcard matching}. For example, \bold{r*.txt} matches the
+ \l{wildcard matching}. For example, \b{r*.txt} matches the
string \c{readme.txt} in wildcard mode, but does not match
\c{readme}.
For example, suppose we have the input string "We must be
<b>bold</b>, very <b>bold</b>!" and the pattern
- \bold{<b>.*</b>}. With the default greedy (maximal) matching,
+ \b{<b>.*</b>}. With the default greedy (maximal) matching,
the match is "We must be \underline{<b>bold</b>, very
<b>bold</b>}!". But with minimal (non-greedy) matching, the
first match is: "We must be \underline{<b>bold</b>}, very
<b>bold</b>!" and the second match is "We must be <b>bold</b>,
very \underline{<b>bold</b>}!". In practice we might use the pattern
- \bold{<b>[^<]*\</b>} instead, although this will still fail for
+ \b{<b>[^<]*\</b>} instead, although this will still fail for
nested tags.
\sa setCaseSensitivity()
in the start of string and end of string anchors, except that it
sets matchedLength() differently.
- For example, if the regular expression is \bold{blue}, then
+ For example, if the regular expression is \b{blue}, then
exactMatch() returns true only for input \c blue. For inputs \c
bluebell, \c blutak and \c lightblue, exactMatch() returns false
and matchedLength() will return 4, 3 and 0 respectively.
Returns the position of the first match, or -1 if there was no
match.
- The \a caretMode parameter can be used to instruct whether \bold{^}
+ The \a caretMode parameter can be used to instruct whether \b{^}
should match at index 0 or at \a offset.
You might prefer to use QString::indexOf(), QString::contains(),
Returns the position of the first match, or -1 if there was no
match.
- The \a caretMode parameter can be used to instruct whether \bold{^}
+ The \a caretMode parameter can be used to instruct whether \b{^}
should match at index 0 or at \a offset.
Although const, this function sets matchedLength(),
Some regexps can match an indeterminate number of times. For
example if the input string is "Offsets: 12 14 99 231 7" and the
- regexp, \c{rx}, is \bold{(\\d+)+}, we would hope to get a list of
+ regexp, \c{rx}, is \b{(\\d+)+}, we would hope to get a list of
all the numbers matched. However, after calling
\c{rx.indexIn(str)}, capturedTexts() will return the list ("12",
"12"), i.e. the entire match was "12" and the first subexpression
The following custom cleanup handlers exist:
\list
- \i QScopedPointerDeleter - the default, deletes the pointer using \c delete
- \i QScopedPointerArrayDeleter - deletes the pointer using \c{delete []}. Use
+ \li QScopedPointerDeleter - the default, deletes the pointer using \c delete
+ \li QScopedPointerArrayDeleter - deletes the pointer using \c{delete []}. Use
this handler for pointers that were allocated with \c{new []}.
- \i QScopedPointerPodDeleter - deletes the pointer using \c{free()}. Use this
+ \li QScopedPointerPodDeleter - deletes the pointer using \c{free()}. Use this
handler for pointers that were allocated with \c{malloc()}.
\endlist
\list
- \o Define the class \c Employee to have a single data member of
+ \li Define the class \c Employee to have a single data member of
type \c {QSharedDataPointer<EmployeeData>}.
- \o Define the \c EmployeeData class derived from \l QSharedData to
+ \li Define the \c EmployeeData class derived from \l QSharedData to
contain all the data members you would normally have put in the
\c Employee class.
height, according to the specified \a mode:
\list
- \i If \a mode is Qt::IgnoreAspectRatio, the size is set to (\a width, \a height).
- \i If \a mode is Qt::KeepAspectRatio, the current size is scaled to a rectangle
+ \li If \a mode is Qt::IgnoreAspectRatio, the size is set to (\a width, \a height).
+ \li If \a mode is Qt::KeepAspectRatio, the current size is scaled to a rectangle
as large as possible inside (\a width, \a height), preserving the aspect ratio.
- \i If \a mode is Qt::KeepAspectRatioByExpanding, the current size is scaled to a rectangle
+ \li If \a mode is Qt::KeepAspectRatioByExpanding, the current size is scaled to a rectangle
as small as possible outside (\a width, \a height), preserving the aspect ratio.
\endlist
height, according to the specified \a mode.
\list
- \i If \a mode is Qt::IgnoreAspectRatio, the size is set to (\a width, \a height).
- \i If \a mode is Qt::KeepAspectRatio, the current size is scaled to a rectangle
+ \li If \a mode is Qt::IgnoreAspectRatio, the size is set to (\a width, \a height).
+ \li If \a mode is Qt::KeepAspectRatio, the current size is scaled to a rectangle
as large as possible inside (\a width, \a height), preserving the aspect ratio.
- \i If \a mode is Qt::KeepAspectRatioByExpanding, the current size is scaled to a rectangle
+ \li If \a mode is Qt::KeepAspectRatioByExpanding, the current size is scaled to a rectangle
as small as possible outside (\a width, \a height), preserving the aspect ratio.
\endlist
toLatin1(), toUtf8(), and toLocal8Bit().
\list
- \o toAscii() returns a Latin-1 (ISO 8859-1) encoded 8-bit string.
- \o toLatin1() returns a Latin-1 (ISO 8859-1) encoded 8-bit string.
- \o toUtf8() returns a UTF-8 encoded 8-bit string. UTF-8 is a
+ \li toAscii() returns a Latin-1 (ISO 8859-1) encoded 8-bit string.
+ \li toLatin1() returns a Latin-1 (ISO 8859-1) encoded 8-bit string.
+ \li toUtf8() returns a UTF-8 encoded 8-bit string. UTF-8 is a
superset of US-ASCII (ANSI X3.4-1986) that supports the entire
Unicode character set through multibyte sequences.
- \o toLocal8Bit() returns an 8-bit string using the system's local
+ \li toLocal8Bit() returns an 8-bit string using the system's local
encoding.
\endlist
conversions by defining the following two preprocessor symbols:
\list
- \o \c QT_NO_CAST_FROM_ASCII disables automatic conversions from
+ \li \c QT_NO_CAST_FROM_ASCII disables automatic conversions from
C string literals and pointers to Unicode.
- \o \c QT_NO_CAST_TO_ASCII disables automatic conversion from QString
+ \li \c QT_NO_CAST_TO_ASCII disables automatic conversion from QString
to C strings.
\endlist
\table 100 %
\header
- \o Note for C Programmers
+ \li Note for C Programmers
\row
- \o
+ \li
Due to C++'s type system and the fact that QString is
\l{implicitly shared}, QStrings may be treated like \c{int}s or
other basic types. For example:
following:
\table
- \header \o Format \o Meaning
- \row \o \c e \o format as [-]9.9e[+|-]999
- \row \o \c E \o format as [-]9.9E[+|-]999
- \row \o \c f \o format as [-]9.9
- \row \o \c g \o use \c e or \c f format, whichever is the most concise
- \row \o \c G \o use \c E or \c f format, whichever is the most concise
+ \header \li Format \li Meaning
+ \row \li \c e \li format as [-]9.9e[+|-]999
+ \row \li \c E \li format as [-]9.9E[+|-]999
+ \row \li \c f \li format as [-]9.9
+ \row \li \c g \li use \c e or \c f format, whichever is the most concise
+ \row \li \c G \li use \c E or \c f format, whichever is the most concise
\endtable
A \e precision is also specified with the argument \e format. For
\snippet doc/src/snippets/qstring/main.cpp 42
For regular expressions containing \l{capturing parentheses},
- occurrences of \bold{\\1}, \bold{\\2}, ..., in \a after are replaced
+ occurrences of \b{\\1}, \b{\\2}, ..., in \a after are replaced
with \a{rx}.cap(1), cap(2), ...
\snippet doc/src/snippets/qstring/main.cpp 43
\snippet doc/src/snippets/qstring/main.cpp 60
Here's a third example where we use a zero-length assertion,
- \bold{\\b} (word boundary), to split the string into an
+ \b{\\b} (word boundary), to split the string into an
alternating sequence of non-word and word tokens:
\snippet doc/src/snippets/qstring/main.cpp 61
\snippet doc/src/snippets/qstringlist/main.cpp 14
For regular expressions that contain \l{capturing parentheses},
- occurrences of \bold{\\1}, \bold{\\2}, ..., in \a after are
+ occurrences of \b{\\1}, \b{\\2}, ..., in \a after are
replaced with \a{rx}.cap(1), \a{rx}.cap(2), ...
For example:
structure. The main differences between the two classes are:
\list
- \o QVarLengthArray's API is much more low-level. It provides no
+ \li QVarLengthArray's API is much more low-level. It provides no
iterators and lacks much of QVector's functionality.
- \o QVarLengthArray doesn't initialize the memory if the value is
+ \li QVarLengthArray doesn't initialize the memory if the value is
a basic type. (QVector always does.)
- \o QVector uses \l{implicit sharing} as a memory optimization.
+ \li QVector uses \l{implicit sharing} as a memory optimization.
QVarLengthArray doesn't provide that feature; however, it
usually produces slightly better performance due to reduced
overhead, especially in tight loops.
similar functionality. Here's an overview:
\list
- \i For most purposes, QList is the right class to use. Operations
+ \li For most purposes, QList is the right class to use. Operations
like prepend() and insert() are usually faster than with
QVector because of the way QList stores its items in memory
(see \l{Algorithmic Complexity} for details),
and its index-based API is more convenient than QLinkedList's
iterator-based API. It also expands to less code in your
executable.
- \i If you need a real linked list, with guarantees of \l{constant
+ \li If you need a real linked list, with guarantees of \l{constant
time} insertions in the middle of the list and iterators to
items rather than indexes, use QLinkedList.
- \i If you want the items to occupy adjacent memory positions, or
+ \li If you want the items to occupy adjacent memory positions, or
if your items are larger than a pointer and you want to avoid
the overhead of allocating them on the heap individually at
insertion time, then use QVector.
- \i If you want a low-level variable-size array, QVarLengthArray
+ \li If you want a low-level variable-size array, QVarLengthArray
may be sufficient.
\endlist
messages (MessageType) that can occur on the bus:
\list
- \o Method calls
- \o Method return values
- \o Signal emissions
- \o Error codes
+ \li Method calls
+ \li Method return values
+ \li Signal emissions
+ \li Error codes
\endlist
Objects of this type are created with the static createError(),
important differences:
\list
- \o QDBusReply accepts exactly one return type, whereas
+ \li QDBusReply accepts exactly one return type, whereas
QDBusPendingReply can have from 1 to 8 types
- \o QDBusReply only works on already completed replies, whereas
+ \li QDBusReply only works on already completed replies, whereas
QDBusPendingReply allows one to wait for replies from pending
calls
\endlist
modes:
\list
- \o Watching for service registration only.
- \o Watching for service unregistration only.
- \o Watching for any kind of service ownership change (the default mode).
+ \li Watching for service registration only.
+ \li Watching for service unregistration only.
+ \li Watching for any kind of service ownership change (the default mode).
\endlist
Besides being created or deleted, services may change owners without a
Valid interface names must:
\list
- \o not be empty
- \o not exceed 255 characters in length
- \o be composed of dot-separated string components that contain only ASCII letters, digits
+ \li not be empty
+ \li not exceed 255 characters in length
+ \li be composed of dot-separated string components that contain only ASCII letters, digits
and the underscore ("_") character
- \o contain at least two such components
+ \li contain at least two such components
\endlist
*/
bool isValidInterfaceName(const QString& ifaceName)
A valid bus name is either a valid unique connection name or follows the rules:
\list
- \o is not empty
- \o does not exceed 255 characters in length
- \o be composed of dot-separated string components that contain only ASCII letters, digits,
+ \li is not empty
+ \li does not exceed 255 characters in length
+ \li be composed of dot-separated string components that contain only ASCII letters, digits,
hyphens or underscores ("_"), but don't start with a digit
- \o contains at least two such elements
+ \li contains at least two such elements
\endlist
\sa isValidUniqueConnectionName()
Valid object paths follow the rules:
\list
- \o start with the slash character ("/")
- \o do not end in a slash, unless the path is just the initial slash
- \o do not contain any two slashes in sequence
- \o contain slash-separated parts, each of which is composed of ASCII letters, digits and
+ \li start with the slash character ("/")
+ \li do not end in a slash, unless the path is just the initial slash
+ \li do not contain any two slashes in sequence
+ \li contain slash-separated parts, each of which is composed of ASCII letters, digits and
underscores ("_")
\endlist
*/
braille displays. Clients and servers communicate in the following way:
\list
- \o \e{AT Servers} notify the clients about events through calls to the
+ \li \e{AT Servers} notify the clients about events through calls to the
updateAccessibility() function.
- \o \e{AT Clients} request information about the objects in the server.
+ \li \e{AT Clients} request information about the objects in the server.
The QAccessibleInterface class is the core interface, and encapsulates
this information in a pure virtual API. Implementations of the interface
are provided by Qt through the queryAccessibleInterface() API.
The AT client uses three basic concepts to acquire information
about any accessible object in an application:
\list
- \i \e Properties The client can read information about
+ \li \e Properties The client can read information about
accessible objects. In some cases the client can also modify these
properties; such as text in a line edit.
- \i \e Actions The client can invoke actions like pressing a button
+ \li \e Actions The client can invoke actions like pressing a button
or .
- \i \e{Relationships and Navigation} The client can traverse from one
+ \li \e{Relationships and Navigation} The client can traverse from one
accessible object to another, using the relationships between objects.
\endlist
In general you should use one of the predefined action names, unless describing an action that does not fit these:
\table
- \header \o Action name \o Description
- \row \o \l checkAction() \o checks the item (checkbox, radio button, ...)
- \row \o \l decreaseAction() \o decrease the value of the accessible (e.g. spinbox)
- \row \o \l increaseAction() \o increase the value of the accessible (e.g. spinbox)
- \row \o \l pressAction() \o press or click or activate the accessible (should correspont to clicking the object with the mouse)
- \row \o \l setFocusAction() \o set the focus to this accessible
- \row \o \l showMenuAction() \o show a context menu, corresponds to right-clicks
- \row \o \l uncheckAction() \o uncheck the item (checkbox, radio button, ...)
+ \header \li Action name \li Description
+ \row \li \l checkAction() \li checks the item (checkbox, radio button, ...)
+ \row \li \l decreaseAction() \li decrease the value of the accessible (e.g. spinbox)
+ \row \li \l increaseAction() \li increase the value of the accessible (e.g. spinbox)
+ \row \li \l pressAction() \li press or click or activate the accessible (should correspont to clicking the object with the mouse)
+ \row \li \l setFocusAction() \li set the focus to this accessible
+ \row \li \l showMenuAction() \li show a context menu, corresponds to right-clicks
+ \row \li \l uncheckAction() \li uncheck the item (checkbox, radio button, ...)
\endtable
In order to invoke the action, \l doAction() is called with an action name.
formats:
\table
- \header \o Format \o Description \o Qt's support
- \row \o BMP \o Windows Bitmap \o Read/write
- \row \o GIF \o Graphic Interchange Format (optional) \o Read
- \row \o JPG \o Joint Photographic Experts Group \o Read/write
- \row \o JPEG \o Joint Photographic Experts Group \o Read/write
- \row \o PNG \o Portable Network Graphics \o Read/write
- \row \o PBM \o Portable Bitmap \o Read
- \row \o PGM \o Portable Graymap \o Read
- \row \o PPM \o Portable Pixmap \o Read/write
- \row \o XBM \o X11 Bitmap \o Read/write
- \row \o XPM \o X11 Pixmap \o Read/write
+ \header \li Format \li Description \li Qt's support
+ \row \li BMP \li Windows Bitmap \li Read/write
+ \row \li GIF \li Graphic Interchange Format (optional) \li Read
+ \row \li JPG \li Joint Photographic Experts Group \li Read/write
+ \row \li JPEG \li Joint Photographic Experts Group \li Read/write
+ \row \li PNG \li Portable Network Graphics \li Read/write
+ \row \li PBM \li Portable Bitmap \li Read
+ \row \li PGM \li Portable Graymap \li Read
+ \row \li PPM \li Portable Pixmap \li Read/write
+ \row \li XBM \li X11 Bitmap \li Read/write
+ \row \li XPM \li X11 Pixmap \li Read/write
\endtable
\section1 Image Information
\table
\header
- \o \o Available Functions
+ \li \li Available Functions
\row
- \o Geometry
- \o
+ \li Geometry
+ \li
The size(), width(), height(), dotsPerMeterX(), and
dotsPerMeterY() functions provide information about the image size
setOffset() function.
\row
- \o Colors
- \o
+ \li Colors
+ \li
The color of a pixel can be retrieved by passing its coordinates
to the pixel() function. The pixel() function returns the color
sections.
\row
- \o Text
- \o
+ \li Text
+ \li
The text() function returns the image text associated with the
given text key. An image's text keys can be retrieved using the
image's text.
\row
- \o Low-level information
- \o
+ \li Low-level information
+ \li
The depth() function returns the depth of the image. The supported
depths are 1 (monochrome), 8, 16, 24 and 32 bits. The
\table
\header
- \o {2,1}32-bit
+ \li {2,1}32-bit
\row
- \o \inlineimage qimage-32bit_scaled.png
- \o
+ \li \inlineimage qimage-32bit_scaled.png
+ \li
\snippet doc/src/snippets/code/src_gui_image_qimage.cpp 0
\endtable
\table
\header
- \o {2,1} 8-bit
+ \li {2,1} 8-bit
\row
- \o \inlineimage qimage-8bit_scaled.png
- \o
+ \li \inlineimage qimage-8bit_scaled.png
+ \li
\snippet doc/src/snippets/code/src_gui_image_qimage.cpp 1
\endtable
in-place:
\table
- \header \o Function \o Description
+ \header \li Function \li Description
\row
- \o setDotsPerMeterX()
- \o Defines the aspect ratio by setting the number of pixels that fit
+ \li setDotsPerMeterX()
+ \li Defines the aspect ratio by setting the number of pixels that fit
horizontally in a physical meter.
\row
- \o setDotsPerMeterY()
- \o Defines the aspect ratio by setting the number of pixels that fit
+ \li setDotsPerMeterY()
+ \li Defines the aspect ratio by setting the number of pixels that fit
vertically in a physical meter.
\row
- \o fill()
- \o Fills the entire image with the given pixel value.
+ \li fill()
+ \li Fills the entire image with the given pixel value.
\row
- \o invertPixels()
- \o Inverts all pixel values in the image using the given InvertMode value.
+ \li invertPixels()
+ \li Inverts all pixel values in the image using the given InvertMode value.
\row
- \o setColorTable()
- \o Sets the color table used to translate color indexes. Only
+ \li setColorTable()
+ \li Sets the color table used to translate color indexes. Only
monochrome and 8-bit formats.
\row
- \o setColorCount()
- \o Resizes the color table. Only monochrome and 8-bit formats.
+ \li setColorCount()
+ \li Resizes the color table. Only monochrome and 8-bit formats.
\endtable
\image qimage-scaling.png
\list
- \i If \a aspectRatioMode is Qt::IgnoreAspectRatio, the image
+ \li If \a aspectRatioMode is Qt::IgnoreAspectRatio, the image
is scaled to \a size.
- \i If \a aspectRatioMode is Qt::KeepAspectRatio, the image is
+ \li If \a aspectRatioMode is Qt::KeepAspectRatio, the image is
scaled to a rectangle as large as possible inside \a size, preserving the aspect ratio.
- \i If \a aspectRatioMode is Qt::KeepAspectRatioByExpanding,
+ \li If \a aspectRatioMode is Qt::KeepAspectRatioByExpanding,
the image is scaled to a rectangle as small as possible
outside \a size, preserving the aspect ratio.
\endlist
\list
- \o Image plugins are queried first, based on either the optional format
+ \li Image plugins are queried first, based on either the optional format
string, or the file name suffix (if the source device is a file). No
content detection is done at this stage. QImageReader will choose the
first plugin that supports reading for this format.
- \o If no plugin supports the image format, Qt's built-in handlers are
+ \li If no plugin supports the image format, Qt's built-in handlers are
checked based on either the optional format string, or the file name
suffix.
- \o If no capable plugins or built-in handlers are found, each plugin is
+ \li If no capable plugins or built-in handlers are found, each plugin is
tested by inspecting the content of the data stream.
- \o If no plugins could detect the image format based on data contents,
+ \li If no plugins could detect the image format based on data contents,
each built-in image handler is tested by inspecting the contents.
- \o Finally, if all above approaches fail, QImageReader will report failure
+ \li Finally, if all above approaches fail, QImageReader will report failure
when trying to read the image.
\endlist
By default, Qt can read the following formats:
\table
- \header \o Format \o Description
- \row \o BMP \o Windows Bitmap
- \row \o GIF \o Graphic Interchange Format (optional)
- \row \o JPG \o Joint Photographic Experts Group
- \row \o JPEG \o Joint Photographic Experts Group
- \row \o PNG \o Portable Network Graphics
- \row \o PBM \o Portable Bitmap
- \row \o PGM \o Portable Graymap
- \row \o PPM \o Portable Pixmap
- \row \o XBM \o X11 Bitmap
- \row \o XPM \o X11 Pixmap
- \row \o SVG \o Scalable Vector Graphics
+ \header \li Format \li Description
+ \row \li BMP \li Windows Bitmap
+ \row \li GIF \li Graphic Interchange Format (optional)
+ \row \li JPG \li Joint Photographic Experts Group
+ \row \li JPEG \li Joint Photographic Experts Group
+ \row \li PNG \li Portable Network Graphics
+ \row \li PBM \li Portable Bitmap
+ \row \li PGM \li Portable Graymap
+ \row \li PPM \li Portable Pixmap
+ \row \li XBM \li X11 Bitmap
+ \row \li XPM \li X11 Pixmap
+ \row \li SVG \li Scalable Vector Graphics
\endtable
Reading and writing SVG files is supported through Qt's
By default, Qt can write the following formats:
\table
- \header \o Format \o Description
- \row \o BMP \o Windows Bitmap
- \row \o JPG \o Joint Photographic Experts Group
- \row \o JPEG \o Joint Photographic Experts Group
- \row \o PNG \o Portable Network Graphics
- \row \o PPM \o Portable Pixmap
- \row \o XBM \o X11 Bitmap
- \row \o XPM \o X11 Pixmap
+ \header \li Format \li Description
+ \row \li BMP \li Windows Bitmap
+ \row \li JPG \li Joint Photographic Experts Group
+ \row \li JPEG \li Joint Photographic Experts Group
+ \row \li PNG \li Portable Network Graphics
+ \row \li PPM \li Portable Pixmap
+ \row \li XBM \li X11 Bitmap
+ \row \li XPM \li X11 Pixmap
\endtable
Reading and writing SVG files is supported through Qt's
\image qimage-scaling.png
\list
- \i If \a aspectRatioMode is Qt::IgnoreAspectRatio, the pixmap
+ \li If \a aspectRatioMode is Qt::IgnoreAspectRatio, the pixmap
is scaled to \a size.
- \i If \a aspectRatioMode is Qt::KeepAspectRatio, the pixmap is
+ \li If \a aspectRatioMode is Qt::KeepAspectRatio, the pixmap is
scaled to a rectangle as large as possible inside \a size, preserving the aspect ratio.
- \i If \a aspectRatioMode is Qt::KeepAspectRatioByExpanding,
+ \li If \a aspectRatioMode is Qt::KeepAspectRatioByExpanding,
the pixmap is scaled to a rectangle as small as possible
outside \a size, preserving the aspect ratio.
\endlist
formats:
\table
- \header \o Format \o Description \o Qt's support
- \row \o BMP \o Windows Bitmap \o Read/write
- \row \o GIF \o Graphic Interchange Format (optional) \o Read
- \row \o JPG \o Joint Photographic Experts Group \o Read/write
- \row \o JPEG \o Joint Photographic Experts Group \o Read/write
- \row \o PNG \o Portable Network Graphics \o Read/write
- \row \o PBM \o Portable Bitmap \o Read
- \row \o PGM \o Portable Graymap \o Read
- \row \o PPM \o Portable Pixmap \o Read/write
- \row \o XBM \o X11 Bitmap \o Read/write
- \row \o XPM \o X11 Pixmap \o Read/write
+ \header \li Format \li Description \li Qt's support
+ \row \li BMP \li Windows Bitmap \li Read/write
+ \row \li GIF \li Graphic Interchange Format (optional) \li Read
+ \row \li JPG \li Joint Photographic Experts Group \li Read/write
+ \row \li JPEG \li Joint Photographic Experts Group \li Read/write
+ \row \li PNG \li Portable Network Graphics \li Read/write
+ \row \li PBM \li Portable Bitmap \li Read
+ \row \li PGM \li Portable Graymap \li Read
+ \row \li PPM \li Portable Pixmap \li Read/write
+ \row \li XBM \li X11 Bitmap \li Read/write
+ \row \li XPM \li X11 Pixmap \li Read/write
\endtable
\section1 Pixmap Information
\table
\header
- \o \o Available Functions
+ \li \li Available Functions
\row
- \o Geometry
- \o
+ \li Geometry
+ \li
The size(), width() and height() functions provide information
about the pixmap's size. The rect() function returns the image's
enclosing rectangle.
\row
- \o Alpha component
- \o
+ \li Alpha component
+ \li
The hasAlphaChannel() returns true if the pixmap has a format that
respects the alpha channel, otherwise returns false. The hasAlpha(),
QBitmap) for the pixmap based on a given color.
\row
- \o Low-level information
- \o
+ \li Low-level information
+ \li
The depth() function returns the depth of the pixmap. The
defaultDepth() function returns the default depth, i.e. the depth
\list
- \i The X11 Window System has the concept of a separate selection
+ \li The X11 Window System has the concept of a separate selection
and clipboard. When text is selected, it is immediately available
as the global mouse selection. The global mouse selection may
later be copied to the clipboard. By convention, the middle mouse
button is used to paste the global mouse selection.
- \i X11 also has the concept of ownership; if you change the
+ \li X11 also has the concept of ownership; if you change the
selection within a window, X11 will only notify the owner and the
previous owner of the change, i.e. it will not notify all
applications that the selection or clipboard data changed.
- \i Lastly, the X11 clipboard is event driven, i.e. the clipboard
+ \li Lastly, the X11 clipboard is event driven, i.e. the clipboard
will not function properly if the event loop is not running.
Similarly, it is recommended that the contents of the clipboard
are stored or retrieved in direct response to user-input events,
store or retrieve the clipboard contents in response to timer or
non-user-input events.
- \i Since there is no standard way to copy and paste files between
+ \li Since there is no standard way to copy and paste files between
applications on X11, various MIME types and conventions are currently
in use. For instance, Nautilus expects files to be supplied with a
\c{x-special/gnome-copied-files} MIME type with data beginning with
\list
- \i Windows and Mac OS X do not support the global mouse
+ \li Windows and Mac OS X do not support the global mouse
selection; they only supports the global clipboard, i.e. they
only add text to the clipboard when an explicit copy or cut is
made.
- \i Windows and Mac OS X does not have the concept of ownership;
+ \li Windows and Mac OS X does not have the concept of ownership;
the clipboard is a fully global resource so all applications are
notified of changes.
To set or get the position of the mouse cursor use the static
methods QCursor::pos() and QCursor::setPos().
- \bold{Note:} It is possible to create a QCursor before
+ \b{Note:} It is possible to create a QCursor before
QGuiApplication, but it is not useful except as a place-holder for a
real QCursor created after QGuiApplication. Attempting to use a
QCursor that was created before QGuiApplication will result in a
theme, while others will use an internal bitmap cursor.
\table
- \header \o Shape \o Qt::CursorShape Value \o Cursor Name
- \o Shape \o Qt::CursorShape Value \o Cursor Name
- \row \o \inlineimage cursor-arrow.png
- \o Qt::ArrowCursor \o \c left_ptr
- \o \inlineimage cursor-sizev.png
- \o Qt::SizeVerCursor \o \c size_ver
- \row \o \inlineimage cursor-uparrow.png
- \o Qt::UpArrowCursor \o \c up_arrow
- \o \inlineimage cursor-sizeh.png
- \o Qt::SizeHorCursor \o \c size_hor
- \row \o \inlineimage cursor-cross.png
- \o Qt::CrossCursor \o \c cross
- \o \inlineimage cursor-sizeb.png
- \o Qt::SizeBDiagCursor \o \c size_bdiag
- \row \o \inlineimage cursor-ibeam.png
- \o Qt::IBeamCursor \o \c ibeam
- \o \inlineimage cursor-sizef.png
- \o Qt::SizeFDiagCursor \o \c size_fdiag
- \row \o \inlineimage cursor-wait.png
- \o Qt::WaitCursor \o \c wait
- \o \inlineimage cursor-sizeall.png
- \o Qt::SizeAllCursor \o \c size_all
- \row \o \inlineimage cursor-busy.png
- \o Qt::BusyCursor \o \c left_ptr_watch
- \o \inlineimage cursor-vsplit.png
- \o Qt::SplitVCursor \o \c split_v
- \row \o \inlineimage cursor-forbidden.png
- \o Qt::ForbiddenCursor \o \c forbidden
- \o \inlineimage cursor-hsplit.png
- \o Qt::SplitHCursor \o \c split_h
- \row \o \inlineimage cursor-hand.png
- \o Qt::PointingHandCursor \o \c pointing_hand
- \o \inlineimage cursor-openhand.png
- \o Qt::OpenHandCursor \o \c openhand
- \row \o \inlineimage cursor-whatsthis.png
- \o Qt::WhatsThisCursor \o \c whats_this
- \o \inlineimage cursor-closedhand.png
- \o Qt::ClosedHandCursor \o \c closedhand
- \row \o
- \o Qt::DragMoveCursor \o \c dnd-move or \c move
- \o
- \o Qt::DragCopyCursor \o \c dnd-copy or \c copy
- \row \o
- \o Qt::DragLinkCursor \o \c dnd-link or \c link
+ \header \li Shape \li Qt::CursorShape Value \li Cursor Name
+ \li Shape \li Qt::CursorShape Value \li Cursor Name
+ \row \li \inlineimage cursor-arrow.png
+ \li Qt::ArrowCursor \li \c left_ptr
+ \li \inlineimage cursor-sizev.png
+ \li Qt::SizeVerCursor \li \c size_ver
+ \row \li \inlineimage cursor-uparrow.png
+ \li Qt::UpArrowCursor \li \c up_arrow
+ \li \inlineimage cursor-sizeh.png
+ \li Qt::SizeHorCursor \li \c size_hor
+ \row \li \inlineimage cursor-cross.png
+ \li Qt::CrossCursor \li \c cross
+ \li \inlineimage cursor-sizeb.png
+ \li Qt::SizeBDiagCursor \li \c size_bdiag
+ \row \li \inlineimage cursor-ibeam.png
+ \li Qt::IBeamCursor \li \c ibeam
+ \li \inlineimage cursor-sizef.png
+ \li Qt::SizeFDiagCursor \li \c size_fdiag
+ \row \li \inlineimage cursor-wait.png
+ \li Qt::WaitCursor \li \c wait
+ \li \inlineimage cursor-sizeall.png
+ \li Qt::SizeAllCursor \li \c size_all
+ \row \li \inlineimage cursor-busy.png
+ \li Qt::BusyCursor \li \c left_ptr_watch
+ \li \inlineimage cursor-vsplit.png
+ \li Qt::SplitVCursor \li \c split_v
+ \row \li \inlineimage cursor-forbidden.png
+ \li Qt::ForbiddenCursor \li \c forbidden
+ \li \inlineimage cursor-hsplit.png
+ \li Qt::SplitHCursor \li \c split_h
+ \row \li \inlineimage cursor-hand.png
+ \li Qt::PointingHandCursor \li \c pointing_hand
+ \li \inlineimage cursor-openhand.png
+ \li Qt::OpenHandCursor \li \c openhand
+ \row \li \inlineimage cursor-whatsthis.png
+ \li Qt::WhatsThisCursor \li \c whats_this
+ \li \inlineimage cursor-closedhand.png
+ \li Qt::ClosedHandCursor \li \c closedhand
+ \row \li
+ \li Qt::DragMoveCursor \li \c dnd-move or \c move
+ \li
+ \li Qt::DragCopyCursor \li \c dnd-copy or \c copy
+ \row \li
+ \li Qt::DragLinkCursor \li \c dnd-link or \c link
\endtable
\sa QWidget, {fowler}{GUI Design Handbook: Cursors}
The cursor \a bitmap (B) and \a mask (M) bits are combined like this:
\list
- \o B=1 and M=1 gives black.
- \o B=0 and M=1 gives white.
- \o B=0 and M=0 gives transparent.
- \o B=1 and M=0 gives an XOR'd result under Windows, undefined
+ \li B=1 and M=1 gives black.
+ \li B=0 and M=1 gives white.
+ \li B=0 and M=0 gives transparent.
+ \li B=1 and M=0 gives an XOR'd result under Windows, undefined
results on all other platforms.
\endlist
Sets the position of the hot spot relative to the top-left corner of the
pixmap used to the point specified by \a hotspot.
- \bold{Note:} on X11, the pixmap may not be able to keep up with the mouse
+ \b{Note:} on X11, the pixmap may not be able to keep up with the mouse
movements if the hot spot causes the pixmap to be displayed
directly under the cursor.
*/
from are specified in \a supportedActions. The default proposed action will be selected
among the allowed actions in the following order: Move, Copy and Link.
- \bold{Note:} On Linux and Mac OS X, the drag and drop operation
+ \b{Note:} On Linux and Mac OS X, the drag and drop operation
can take some time, but this function does not block the event
loop. Other events are still delivered to the application while
the operation is performed. On Windows, the Qt event loop is
The \a defaultDropAction determines which action will be proposed when the user performs a
drag without using modifier keys.
- \bold{Note:} On Linux and Mac OS X, the drag and drop operation
+ \b{Note:} On Linux and Mac OS X, the drag and drop operation
can take some time, but this function does not block the event
loop. Other events are still delivered to the application while
the operation is performed. On Windows, the Qt event loop is
/*!
\obsolete
- \bold{Note:} It is recommended to use exec() instead of this function.
+ \b{Note:} It is recommended to use exec() instead of this function.
Starts the drag and drop operation and returns a value indicating the requested
drop action when it is completed. The drop actions that the user can choose
from are specified in \a request. Qt::CopyAction is always allowed.
- \bold{Note:} Although the drag and drop operation can take some time, this function
+ \b{Note:} Although the drag and drop operation can take some time, this function
does not block the event loop. Other events are still delivered to the application
while the operation is performed.
you will get the following QEvent::MouseMove events:
\list 1
- \o A::MouseMove
- \o B::MouseMove
- \o C::MouseMove
+ \li A::MouseMove
+ \li B::MouseMove
+ \li C::MouseMove
\endlist
You will get the same events for QEvent::HoverMove, except that the event
In this case the events will occur in the following way:
\list 1
- \o A::HoverMove
- \o A::HoverMove, B::HoverMove
- \o A::HoverMove, B::HoverMove, C::HoverMove
+ \li A::HoverMove
+ \li A::HoverMove, B::HoverMove
+ \li A::HoverMove, B::HoverMove, C::HoverMove
\endlist
*/
step process:
\list 1
- \o \bold{Starting to Compose}
+ \li \b{Starting to Compose}
When the user presses the first key on a keyboard, an input
context is created. This input context will contain a string
of the typed characters.
- \o \bold{Composing}
+ \li \b{Composing}
With every new key pressed, the input method will try to create a
matching string for the text typed so far called preedit
string. While the input context is active, the user can only move
the cursor inside the string belonging to this input context.
- \o \bold{Completing}
+ \li \b{Completing}
At some point, the user will activate a user interface component
(perhaps using a particular key) where they can choose from a
following steps:
\list 1
- \o If the widget has selected text, the selected text should get
+ \li If the widget has selected text, the selected text should get
removed.
- \o Remove the text starting at replacementStart() with length
+ \li Remove the text starting at replacementStart() with length
replacementLength() and replace it by the commitString(). If
replacementLength() is 0, replacementStart() gives the insertion
position for the commitString().
If the widget implements undo/redo, this operation gets added to
the undo stack.
- \o If there is no current preedit string, insert the
+ \li If there is no current preedit string, insert the
preeditString() at the current cursor position; otherwise replace
the previous preeditString with the one received from this event.
Returns the z position of the device. Typically this is represented by a
wheel on a 4D Mouse. If the device does not support a Z-axis, this value is
- always zero. This is \bold not the same as pressure.
+ always zero. This is \b not the same as pressure.
\sa pressure()
*/
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/qstatustipevent/main.cpp 1
\dots
\snippet doc/src/snippets/qstatustipevent/main.cpp 3
- \o
+ \li
\image qstatustipevent-widget.png Widget with status tip.
\endtable
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/qstatustipevent/main.cpp 0
\snippet doc/src/snippets/qstatustipevent/main.cpp 2
\dots
\snippet doc/src/snippets/qstatustipevent/main.cpp 3
- \o
+ \li
\image qstatustipevent-action.png Action with status tip.
\endtable
\list
- \i When the first touch point is detected, the destination widget is determined firstly by the
+ \li When the first touch point is detected, the destination widget is determined firstly by the
location on screen and secondly by the propagation rules.
- \i When additional touch points are detected, Qt first looks to see if there are any active
+ \li When additional touch points are detected, Qt first looks to see if there are any active
touch points on any ancestor or descendent of the widget under the new touch point. If there
are, the new touch point is grouped with the first, and the new touch point will be sent in a
single QTouchEvent to the widget that handled the first touch point. (The widget under the new
\list
- \i As mentioned above, enabling touch events means multiple widgets can be receiving touch
+ \li As mentioned above, enabling touch events means multiple widgets can be receiving touch
events simultaneously. Combined with the default QWidget::event() handling for QTouchEvents,
this gives you great flexibility in designing touch user interfaces. Be aware of the
implications. For example, it is possible that the user is moving a QSlider with one finger and
pressing a QPushButton with another. The signals emitted by these widgets will be
interleaved.
- \i Recursion into the event loop using one of the exec() methods (e.g., QDialog::exec() or
+ \li Recursion into the event loop using one of the exec() methods (e.g., QDialog::exec() or
QMenu::exec()) in a QTouchEvent event handler is not supported. Since there are multiple event
recipients, recursion may cause problems, including but not limited to lost events
and unexpected infinite recursion.
- \i QTouchEvents are not affected by a \l{QWidget::grabMouse()}{mouse grab} or an
+ \li QTouchEvents are not affected by a \l{QWidget::grabMouse()}{mouse grab} or an
\l{QApplication::activePopupWidget()}{active pop-up widget}. The behavior of QTouchEvents is
undefined when opening a pop-up or grabbing the mouse while there are more than one active touch
points.
application's initialization and finalization. In addition, QGuiApplication handles
most of the system-wide and application-wide settings.
- For any GUI application using Qt, there is precisely \bold one QGuiApplication
+ For any GUI application using Qt, there is precisely \b one QGuiApplication
object no matter whether the application has 0, 1, 2 or more windows at
any given time. For non-GUI Qt applications, use QCoreApplication instead,
as it does not depend on the \l QtGui library.
QGuiApplication's main areas of responsibility are:
\list
- \o It initializes the application with the user's desktop settings,
+ \li It initializes the application with the user's desktop settings,
such as palette(), font() and styleHints(). It keeps
track of these properties in case the user changes the desktop
globally, for example, through some kind of control panel.
- \o It performs event handling, meaning that it receives events
+ \li It performs event handling, meaning that it receives events
from the underlying window system and dispatches them to the
relevant widgets. You can send your own events to windows by
using sendEvent() and postEvent().
- \o It parses common command line arguments and sets its internal
+ \li It parses common command line arguments and sets its internal
state accordingly. See the \l{QGuiApplication::QGuiApplication()}
{constructor documentation} below for more details.
- \o It provides localization of strings that are visible to the
+ \li It provides localization of strings that are visible to the
user via translate().
- \o It provides some magical objects like the clipboard().
+ \li It provides some magical objects like the clipboard().
- \o It knows about the application's windows. You can ask which
+ \li It knows about the application's windows. You can ask which
window is at a certain position using topLevelAt(), get a list of
topLevelWindows(), etc.
- \o It manages the application's mouse cursor handling, see
+ \li It manages the application's mouse cursor handling, see
setOverrideCursor()
\endlist
\table
\header
- \o{2,1} Groups of functions
+ \li{2,1} Groups of functions
\row
- \o System settings
- \o desktopSettingsAware(),
+ \li System settings
+ \li desktopSettingsAware(),
setDesktopSettingsAware(),
styleHints(),
palette(),
setFont().
\row
- \o Event handling
- \o exec(),
+ \li Event handling
+ \li exec(),
processEvents(),
exit(),
quit().
notify().
\row
- \o Windows
- \o allWindows(),
+ \li Windows
+ \li allWindows(),
topLevelWindows(),
focusWindow(),
clipboard(),
topLevelAt().
\row
- \o Advanced cursor handling
- \o overrideCursor(),
+ \li Advanced cursor handling
+ \li overrideCursor(),
setOverrideCursor(),
restoreOverrideCursor().
\row
- \o Miscellaneous
- \o startingUp(),
+ \li Miscellaneous
+ \li startingUp(),
closingDown(),
type().
\endtable
All Qt programs automatically support the following command line options:
\list
- \o -reverse, sets the application's layout direction to
+ \li -reverse, sets the application's layout direction to
Qt::RightToLeft
- \o -qmljsdebugger=, activates the QML/JS debugger with a specified port.
+ \li -qmljsdebugger=, activates the QML/JS debugger with a specified port.
The value must be of format port:1234[,block], where block is optional
and will make the application wait until a debugger connects to it.
\endlist
three different ways:
\list
- \o For standard shortcuts, a \l{QKeySequence::StandardKey}{standard key}
+ \li For standard shortcuts, a \l{QKeySequence::StandardKey}{standard key}
can be used to request the platform-specific key sequence associated
with each shortcut.
- \o For custom shortcuts, human-readable strings such as "Ctrl+X" can
+ \li For custom shortcuts, human-readable strings such as "Ctrl+X" can
be used, and these can be translated into the appropriate shortcuts
for users of different languages. Translations are made in the
"QShortcut" context.
- \o For hard-coded shortcuts, integer key codes can be specified with
+ \li For hard-coded shortcuts, integer key codes can be specified with
a combination of values defined by the Qt::Key and Qt::Modifier enum
values. Each key code consists of a single Qt::Key value and zero or
more modifiers, such as Qt::SHIFT, Qt::CTRL, Qt::ALT and Qt::META.
code point of the character; for example, 'A' gives the same key sequence
as Qt::Key_A.
- \bold{Note:} On Mac OS X, references to "Ctrl", Qt::CTRL, Qt::Control
+ \b{Note:} On Mac OS X, references to "Ctrl", Qt::CTRL, Qt::Control
and Qt::ControlModifier correspond to the \key Command keys on the
Macintosh keyboard, and references to "Meta", Qt::META, Qt::Meta and
Qt::MetaModifier correspond to the \key Control keys. Developers on
corresponds to the \key Control keys.
\table
- \header \i StandardKey \i Windows \i Mac OS X \i KDE \i GNOME
- \row \i HelpContents \i F1 \i Ctrl+? \i F1 \i F1
- \row \i WhatsThis \i Shift+F1 \i Shift+F1 \i Shift+F1 \i Shift+F1
- \row \i Open \i Ctrl+O \i Ctrl+O \i Ctrl+O \i Ctrl+O
- \row \i Close \i Ctrl+F4, Ctrl+W \i Ctrl+W, Ctrl+F4 \i Ctrl+W \i Ctrl+W
- \row \i Save \i Ctrl+S \i Ctrl+S \i Ctrl+S \i Ctrl+S
- \row \i Quit \i \i Ctrl+Q \i Qtrl+Q \i Qtrl+Q
- \row \i SaveAs \i \i Ctrl+Shift+S \i \i Ctrl+Shift+S
- \row \i New \i Ctrl+N \i Ctrl+N \i Ctrl+N \i Ctrl+N
- \row \i Delete \i Del \i Del, Meta+D \i Del, Ctrl+D \i Del, Ctrl+D
- \row \i Cut \i Ctrl+X, Shift+Del \i Ctrl+X \i Ctrl+X, F20, Shift+Del \i Ctrl+X, F20, Shift+Del
- \row \i Copy \i Ctrl+C, Ctrl+Ins \i Ctrl+C \i Ctrl+C, F16, Ctrl+Ins \i Ctrl+C, F16, Ctrl+Ins
- \row \i Paste \i Ctrl+V, Shift+Ins \i Ctrl+V \i Ctrl+V, F18, Shift+Ins \i Ctrl+V, F18, Shift+Ins
- \row \i Preferences \i \i Ctrl+, \i \i
- \row \i Undo \i Ctrl+Z, Alt+Backspace \i Ctrl+Z \i Ctrl+Z, F14 \i Ctrl+Z, F14
- \row \i Redo \i Ctrl+Y, Shift+Ctrl+Z, Alt+Shift+Backspace \i Ctrl+Shift+Z \i Ctrl+Shift+Z \i Ctrl+Shift+Z
- \row \i Back \i Alt+Left, Backspace \i Ctrl+[ \i Alt+Left \i Alt+Left
- \row \i Forward \i Alt+Right, Shift+Backspace \i Ctrl+] \i Alt+Right \i Alt+Right
- \row \i Refresh \i F5 \i F5 \i F5 \i Ctrl+R, F5
- \row \i ZoomIn \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus
- \row \i ZoomOut \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus
- \row \i Print \i Ctrl+P \i Ctrl+P \i Ctrl+P \i Ctrl+P
- \row \i AddTab \i Ctrl+T \i Ctrl+T \i Ctrl+Shift+N, Ctrl+T \i Ctrl+T
- \row \i NextChild \i Ctrl+Tab, Forward, Ctrl+F6 \i Ctrl+}, Forward, Ctrl+Tab \i Ctrl+Tab, Forward, Ctrl+Comma \i Ctrl+Tab, Forward
- \row \i PreviousChild \i Ctrl+Shift+Tab, Back, Ctrl+Shift+F6 \i Ctrl+{, Back, Ctrl+Shift+Tab \i Ctrl+Shift+Tab, Back, Ctrl+Period \i Ctrl+Shift+Tab, Back
- \row \i Find \i Ctrl+F \i Ctrl+F \i Ctrl+F \i Ctrl+F
- \row \i FindNext \i F3, Ctrl+G \i Ctrl+G \i F3 \i Ctrl+G, F3
- \row \i FindPrevious \i Shift+F3, Ctrl+Shift+G \i Ctrl+Shift+G \i Shift+F3 \i Ctrl+Shift+G, Shift+F3
- \row \i Replace \i Ctrl+H \i (none) \i Ctrl+R \i Ctrl+H
- \row \i SelectAll \i Ctrl+A \i Ctrl+A \i Ctrl+A \i Ctrl+A
- \row \i Bold \i Ctrl+B \i Ctrl+B \i Ctrl+B \i Ctrl+B
- \row \i Italic \i Ctrl+I \i Ctrl+I \i Ctrl+I \i Ctrl+I
- \row \i Underline \i Ctrl+U \i Ctrl+U \i Ctrl+U \i Ctrl+U
- \row \i MoveToNextChar \i Right \i Right \i Right \i Right
- \row \i MoveToPreviousChar \i Left \i Left \i Left \i Left
- \row \i MoveToNextWord \i Ctrl+Right \i Alt+Right \i Ctrl+Right \i Ctrl+Right
- \row \i MoveToPreviousWord \i Ctrl+Left \i Alt+Left \i Ctrl+Left \i Ctrl+Left
- \row \i MoveToNextLine \i Down \i Down \i Down \i Down
- \row \i MoveToPreviousLine \i Up \i Up \i Up \i Up
- \row \i MoveToNextPage \i PgDown \i PgDown, Alt+PgDown, Meta+Down, Meta+PgDown\i PgDown \i PgDown
- \row \i MoveToPreviousPage \i PgUp \i PgUp, Alt+PgUp, Meta+Up, Meta+PgUp \i PgUp \i PgUp
- \row \i MoveToStartOfLine \i Home \i Ctrl+Left, Meta+Left \i Home \i Home
- \row \i MoveToEndOfLine \i End \i Ctrl+Right, Meta+Right \i End \i End
- \row \i MoveToStartOfBlock \i (none) \i Alt+Up, Meta+A \i (none) \i (none)
- \row \i MoveToEndOfBlock \i (none) \i Alt+Down, Meta+E \i (none) \i (none)
- \row \i MoveToStartOfDocument\i Ctrl+Home \i Ctrl+Up, Home \i Ctrl+Home \i Ctrl+Home
- \row \i MoveToEndOfDocument \i Ctrl+End \i Ctrl+Down, End \i Ctrl+End \i Ctrl+End
- \row \i SelectNextChar \i Shift+Right \i Shift+Right \i Shift+Right \i Shift+Right
- \row \i SelectPreviousChar \i Shift+Left \i Shift+Left \i Shift+Left \i Shift+Left
- \row \i SelectNextWord \i Ctrl+Shift+Right \i Alt+Shift+Right \i Ctrl+Shift+Right \i Ctrl+Shift+Right
- \row \i SelectPreviousWord \i Ctrl+Shift+Left \i Alt+Shift+Left \i Ctrl+Shift+Left \i Ctrl+Shift+Left
- \row \i SelectNextLine \i Shift+Down \i Shift+Down \i Shift+Down \i Shift+Down
- \row \i SelectPreviousLine \i Shift+Up \i Shift+Up \i Shift+Up \i Shift+Up
- \row \i SelectNextPage \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown
- \row \i SelectPreviousPage \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp
- \row \i SelectStartOfLine \i Shift+Home \i Ctrl+Shift+Left \i Shift+Home \i Shift+Home
- \row \i SelectEndOfLine \i Shift+End \i Ctrl+Shift+Right \i Shift+End \i Shift+End
- \row \i SelectStartOfBlock \i (none) \i Alt+Shift+Up, Meta+Shift+A \i (none) \i (none)
- \row \i SelectEndOfBlock \i (none) \i Alt+Shift+Down, Meta+Shift+E \i (none) \i (none)
- \row \i SelectStartOfDocument\i Ctrl+Shift+Home \i Ctrl+Shift+Up, Shift+Home \i Ctrl+Shift+Home\i Ctrl+Shift+Home
- \row \i SelectEndOfDocument \i Ctrl+Shift+End \i Ctrl+Shift+Down, Shift+End \i Ctrl+Shift+End \i Ctrl+Shift+End
- \row \i DeleteStartOfWord \i Ctrl+Backspace \i Alt+Backspace \i Ctrl+Backspace \i Ctrl+Backspace
- \row \i DeleteEndOfWord \i Ctrl+Del \i (none) \i Ctrl+Del \i Ctrl+Del
- \row \i DeleteEndOfLine \i (none) \i (none) \i Ctrl+K \i Ctrl+K
- \row \i InsertParagraphSeparator \i Enter \i Enter \i Enter \i Enter
- \row \i InsertLineSeparator \i Shift+Enter \i Meta+Enter \i Shift+Enter \i Shift+Enter
+ \header \li StandardKey \li Windows \li Mac OS X \li KDE \li GNOME
+ \row \li HelpContents \li F1 \li Ctrl+? \li F1 \li F1
+ \row \li WhatsThis \li Shift+F1 \li Shift+F1 \li Shift+F1 \li Shift+F1
+ \row \li Open \li Ctrl+O \li Ctrl+O \li Ctrl+O \li Ctrl+O
+ \row \li Close \li Ctrl+F4, Ctrl+W \li Ctrl+W, Ctrl+F4 \li Ctrl+W \li Ctrl+W
+ \row \li Save \li Ctrl+S \li Ctrl+S \li Ctrl+S \li Ctrl+S
+ \row \li Quit \li \li Ctrl+Q \li Qtrl+Q \li Qtrl+Q
+ \row \li SaveAs \li \li Ctrl+Shift+S \li \li Ctrl+Shift+S
+ \row \li New \li Ctrl+N \li Ctrl+N \li Ctrl+N \li Ctrl+N
+ \row \li Delete \li Del \li Del, Meta+D \li Del, Ctrl+D \li Del, Ctrl+D
+ \row \li Cut \li Ctrl+X, Shift+Del \li Ctrl+X \li Ctrl+X, F20, Shift+Del \li Ctrl+X, F20, Shift+Del
+ \row \li Copy \li Ctrl+C, Ctrl+Ins \li Ctrl+C \li Ctrl+C, F16, Ctrl+Ins \li Ctrl+C, F16, Ctrl+Ins
+ \row \li Paste \li Ctrl+V, Shift+Ins \li Ctrl+V \li Ctrl+V, F18, Shift+Ins \li Ctrl+V, F18, Shift+Ins
+ \row \li Preferences \li \li Ctrl+, \li \li
+ \row \li Undo \li Ctrl+Z, Alt+Backspace \li Ctrl+Z \li Ctrl+Z, F14 \li Ctrl+Z, F14
+ \row \li Redo \li Ctrl+Y, Shift+Ctrl+Z, Alt+Shift+Backspace \li Ctrl+Shift+Z \li Ctrl+Shift+Z \li Ctrl+Shift+Z
+ \row \li Back \li Alt+Left, Backspace \li Ctrl+[ \li Alt+Left \li Alt+Left
+ \row \li Forward \li Alt+Right, Shift+Backspace \li Ctrl+] \li Alt+Right \li Alt+Right
+ \row \li Refresh \li F5 \li F5 \li F5 \li Ctrl+R, F5
+ \row \li ZoomIn \li Ctrl+Plus \li Ctrl+Plus \li Ctrl+Plus \li Ctrl+Plus
+ \row \li ZoomOut \li Ctrl+Minus \li Ctrl+Minus \li Ctrl+Minus \li Ctrl+Minus
+ \row \li Print \li Ctrl+P \li Ctrl+P \li Ctrl+P \li Ctrl+P
+ \row \li AddTab \li Ctrl+T \li Ctrl+T \li Ctrl+Shift+N, Ctrl+T \li Ctrl+T
+ \row \li NextChild \li Ctrl+Tab, Forward, Ctrl+F6 \li Ctrl+}, Forward, Ctrl+Tab \li Ctrl+Tab, Forward, Ctrl+Comma \li Ctrl+Tab, Forward
+ \row \li PreviousChild \li Ctrl+Shift+Tab, Back, Ctrl+Shift+F6 \li Ctrl+{, Back, Ctrl+Shift+Tab \li Ctrl+Shift+Tab, Back, Ctrl+Period \li Ctrl+Shift+Tab, Back
+ \row \li Find \li Ctrl+F \li Ctrl+F \li Ctrl+F \li Ctrl+F
+ \row \li FindNext \li F3, Ctrl+G \li Ctrl+G \li F3 \li Ctrl+G, F3
+ \row \li FindPrevious \li Shift+F3, Ctrl+Shift+G \li Ctrl+Shift+G \li Shift+F3 \li Ctrl+Shift+G, Shift+F3
+ \row \li Replace \li Ctrl+H \li (none) \li Ctrl+R \li Ctrl+H
+ \row \li SelectAll \li Ctrl+A \li Ctrl+A \li Ctrl+A \li Ctrl+A
+ \row \li Bold \li Ctrl+B \li Ctrl+B \li Ctrl+B \li Ctrl+B
+ \row \li Italic \li Ctrl+I \li Ctrl+I \li Ctrl+I \li Ctrl+I
+ \row \li Underline \li Ctrl+U \li Ctrl+U \li Ctrl+U \li Ctrl+U
+ \row \li MoveToNextChar \li Right \li Right \li Right \li Right
+ \row \li MoveToPreviousChar \li Left \li Left \li Left \li Left
+ \row \li MoveToNextWord \li Ctrl+Right \li Alt+Right \li Ctrl+Right \li Ctrl+Right
+ \row \li MoveToPreviousWord \li Ctrl+Left \li Alt+Left \li Ctrl+Left \li Ctrl+Left
+ \row \li MoveToNextLine \li Down \li Down \li Down \li Down
+ \row \li MoveToPreviousLine \li Up \li Up \li Up \li Up
+ \row \li MoveToNextPage \li PgDown \li PgDown, Alt+PgDown, Meta+Down, Meta+PgDown\li PgDown \li PgDown
+ \row \li MoveToPreviousPage \li PgUp \li PgUp, Alt+PgUp, Meta+Up, Meta+PgUp \li PgUp \li PgUp
+ \row \li MoveToStartOfLine \li Home \li Ctrl+Left, Meta+Left \li Home \li Home
+ \row \li MoveToEndOfLine \li End \li Ctrl+Right, Meta+Right \li End \li End
+ \row \li MoveToStartOfBlock \li (none) \li Alt+Up, Meta+A \li (none) \li (none)
+ \row \li MoveToEndOfBlock \li (none) \li Alt+Down, Meta+E \li (none) \li (none)
+ \row \li MoveToStartOfDocument\li Ctrl+Home \li Ctrl+Up, Home \li Ctrl+Home \li Ctrl+Home
+ \row \li MoveToEndOfDocument \li Ctrl+End \li Ctrl+Down, End \li Ctrl+End \li Ctrl+End
+ \row \li SelectNextChar \li Shift+Right \li Shift+Right \li Shift+Right \li Shift+Right
+ \row \li SelectPreviousChar \li Shift+Left \li Shift+Left \li Shift+Left \li Shift+Left
+ \row \li SelectNextWord \li Ctrl+Shift+Right \li Alt+Shift+Right \li Ctrl+Shift+Right \li Ctrl+Shift+Right
+ \row \li SelectPreviousWord \li Ctrl+Shift+Left \li Alt+Shift+Left \li Ctrl+Shift+Left \li Ctrl+Shift+Left
+ \row \li SelectNextLine \li Shift+Down \li Shift+Down \li Shift+Down \li Shift+Down
+ \row \li SelectPreviousLine \li Shift+Up \li Shift+Up \li Shift+Up \li Shift+Up
+ \row \li SelectNextPage \li Shift+PgDown \li Shift+PgDown \li Shift+PgDown \li Shift+PgDown
+ \row \li SelectPreviousPage \li Shift+PgUp \li Shift+PgUp \li Shift+PgUp \li Shift+PgUp
+ \row \li SelectStartOfLine \li Shift+Home \li Ctrl+Shift+Left \li Shift+Home \li Shift+Home
+ \row \li SelectEndOfLine \li Shift+End \li Ctrl+Shift+Right \li Shift+End \li Shift+End
+ \row \li SelectStartOfBlock \li (none) \li Alt+Shift+Up, Meta+Shift+A \li (none) \li (none)
+ \row \li SelectEndOfBlock \li (none) \li Alt+Shift+Down, Meta+Shift+E \li (none) \li (none)
+ \row \li SelectStartOfDocument\li Ctrl+Shift+Home \li Ctrl+Shift+Up, Shift+Home \li Ctrl+Shift+Home\li Ctrl+Shift+Home
+ \row \li SelectEndOfDocument \li Ctrl+Shift+End \li Ctrl+Shift+Down, Shift+End \li Ctrl+Shift+End \li Ctrl+Shift+End
+ \row \li DeleteStartOfWord \li Ctrl+Backspace \li Alt+Backspace \li Ctrl+Backspace \li Ctrl+Backspace
+ \row \li DeleteEndOfWord \li Ctrl+Del \li (none) \li Ctrl+Del \li Ctrl+Del
+ \row \li DeleteEndOfLine \li (none) \li (none) \li Ctrl+K \li Ctrl+K
+ \row \li InsertParagraphSeparator \li Enter \li Enter \li Enter \li Enter
+ \row \li InsertLineSeparator \li Shift+Enter \li Meta+Enter \li Shift+Enter \li Shift+Enter
\endtable
Note that, since the key sequences used for the standard shortcuts differ
The color groups:
\list
- \i The Active group is used for the window that has keyboard focus.
- \i The Inactive group is used for other windows.
- \i The Disabled group is used for widgets (not windows) that are
+ \li The Active group is used for the window that has keyboard focus.
+ \li The Inactive group is used for other windows.
+ \li The Disabled group is used for widgets (not windows) that are
disabled for some reason.
\endlist
The event filter function set here is called for all messages
received from the platform if they are given type \eventType.
- It is \i not called for messages that are not meant for Qt objects.
+ It is \e not called for messages that are not meant for Qt objects.
The type of event is specific to the platform plugin chosen at run-time.
The QGenericMatrix template has three parameters:
\table
- \row \i N \i Number of columns.
- \row \i M \i Number of rows.
- \row \i T \i Element type that is visible to users of the class.
+ \row \li N \li Number of columns.
+ \row \li M \li Number of rows.
+ \row \li T \li Element type that is visible to users of the class.
\endtable
\sa QMatrix4x4
Internally the data is stored as column-major format, so as to be optimal for
passing to OpenGL functions, which expect column-major data.
- When using these functions be aware that they return data in \bold{column-major}
+ When using these functions be aware that they return data in \b{column-major}
format:
\list
- \o data()
- \o constData()
+ \li data()
+ \li constData()
\endlist
\sa QVector3D, QGenericMatrix
The QVector2D class can also be used to represent vertices in 2D space.
We therefore do not need to provide a separate vertex class.
- \bold{Note:} By design values in the QVector2D instance are stored as \c float.
+ \b{Note:} By design values in the QVector2D instance are stored as \c float.
This means that on platforms where the \c qreal arguments to QVector2D
functions are represented by \c double values, it is possible to
lose precision.
The QVector3D class can also be used to represent vertices in 3D space.
We therefore do not need to provide a separate vertex class.
- \bold{Note:} By design values in the QVector3D instance are stored as \c float.
+ \b{Note:} By design values in the QVector3D instance are stored as \c float.
This means that on platforms where the \c qreal arguments to QVector3D
functions are represented by \c double values, it is possible to
lose precision.
The QVector4D class can also be used to represent vertices in 4D space.
We therefore do not need to provide a separate vertex class.
- \bold{Note:} By design values in the QVector4D instance are stored as \c float.
+ \b{Note:} By design values in the QVector4D instance are stored as \c float.
This means that on platforms where the \c qreal arguments to QVector4D
functions are represented by \c double values, it is possible to
lose precision.
A framebuffer object has several characteristics:
\list
- \i \link setSamples() Number of samples per pixels.\endlink
- \i \link setAttachment() Depth and/or stencil attachments.\endlink
- \i \link setTextureTarget() Texture target.\endlink
- \i \link setInternalTextureFormat() Internal texture format.\endlink
+ \li \link setSamples() Number of samples per pixels.\endlink
+ \li \link setAttachment() Depth and/or stencil attachments.\endlink
+ \li \link setTextureTarget() Texture target.\endlink
+ \li \link setInternalTextureFormat() Internal texture format.\endlink
\endlist
Note that the desired attachments or number of samples per pixels might not
generates a 2D OpenGL texture (using the \c{GL_TEXTURE_2D} target),
which is used as the internal rendering target.
- \bold{It is important to have a current OpenGL context when creating a
+ \b{It is important to have a current OpenGL context when creating a
QOpenGLFramebufferObject, otherwise initialization will fail.}
When using a QPainter to paint to a QOpenGLFramebufferObject you should take
otherwise false. A brush is considered opaque if:
\list
- \o The alpha component of the color() is 255.
- \o Its texture() does not have an alpha channel and is not a QBitmap.
- \o The colors in the gradient() all have an alpha component that is 255.
+ \li The alpha component of the color() is 255.
+ \li Its texture() does not have an alpha channel and is not a QBitmap.
+ \li The colors in the gradient() all have an alpha component that is 255.
\endlist
\table 100%
\row
- \o \inlineimage brush-outline.png Outlines
- \o
+ \li \inlineimage brush-outline.png Outlines
+ \li
To specify the style and color of lines and outlines, use the
QPainter's \l {QPen}{pen} combined with Qt::PenStyle and
is considered opaque if:
\list
- \i The alpha component of the color() is 255.
- \i Its texture() does not have an alpha channel and is not a QBitmap.
- \i The colors in the gradient() all have an alpha component that is 255.
- \i It is an extended radial gradient.
+ \li The alpha component of the color() is 255.
+ \li Its texture() does not have an alpha channel and is not a QBitmap.
+ \li The colors in the gradient() all have an alpha component that is 255.
+ \li It is an extended radial gradient.
\endlist
*/
Qt currently supports three types of gradient fills:
\list
- \o \e Linear gradients interpolate colors between start and end points.
- \o \e Simple radial gradients interpolate colors between a focal point
+ \li \e Linear gradients interpolate colors between start and end points.
+ \li \e Simple radial gradients interpolate colors between a focal point
and end points on a circle surrounding it.
- \o \e Extended radial gradients interpolate colors between a center and
+ \li \e Extended radial gradients interpolate colors between a center and
a focal circle.
- \o \e Conical gradients interpolate colors around a center point.
+ \li \e Conical gradients interpolate colors around a center point.
\endlist
A gradient's type can be retrieved using the type() function.
\table
\header
- \o QLinearGradient
- \o QRadialGradient
- \o QConicalGradient
+ \li QLinearGradient
+ \li QRadialGradient
+ \li QConicalGradient
\row
- \o \inlineimage qgradient-linear.png
- \o \inlineimage qgradient-radial.png
- \o \inlineimage qgradient-conical.png
+ \li \inlineimage qgradient-linear.png
+ \li \inlineimage qgradient-radial.png
+ \li \inlineimage qgradient-conical.png
\endtable
The colors in a gradient are defined using stop points of the
\table
\row
- \o \inlineimage qradialgradient-pad.png
- \o \inlineimage qradialgradient-repeat.png
- \o \inlineimage qradialgradient-reflect.png
+ \li \inlineimage qradialgradient-pad.png
+ \li \inlineimage qradialgradient-repeat.png
+ \li \inlineimage qradialgradient-reflect.png
\row
- \o \l {QGradient::PadSpread}{PadSpread}
- \o \l {QGradient::RepeatSpread}{RepeatSpread}
- \o \l {QGradient::ReflectSpread}{ReflectSpread}
+ \li \l {QGradient::PadSpread}{PadSpread}
+ \li \l {QGradient::RepeatSpread}{RepeatSpread}
+ \li \l {QGradient::ReflectSpread}{ReflectSpread}
\endtable
Note that the setSpread() function only has effect for linear and
\table
\row
- \o \inlineimage qlineargradient-pad.png
- \o \inlineimage qlineargradient-reflect.png
- \o \inlineimage qlineargradient-repeat.png
+ \li \inlineimage qlineargradient-pad.png
+ \li \inlineimage qlineargradient-reflect.png
+ \li \inlineimage qlineargradient-repeat.png
\row
- \o \l {QGradient::PadSpread}{PadSpread} (default)
- \o \l {QGradient::ReflectSpread}{ReflectSpread}
- \o \l {QGradient::RepeatSpread}{RepeatSpread}
+ \li \l {QGradient::PadSpread}{PadSpread} (default)
+ \li \l {QGradient::ReflectSpread}{ReflectSpread}
+ \li \l {QGradient::RepeatSpread}{RepeatSpread}
\endtable
The colors in a gradient is defined using stop points of the
\table
\row
- \o \inlineimage qradialgradient-pad.png
- \o \inlineimage qradialgradient-reflect.png
- \o \inlineimage qradialgradient-repeat.png
+ \li \inlineimage qradialgradient-pad.png
+ \li \inlineimage qradialgradient-reflect.png
+ \li \inlineimage qradialgradient-repeat.png
\row
- \o \l {QGradient::PadSpread}{PadSpread} (default)
- \o \l {QGradient::ReflectSpread}{ReflectSpread}
- \o \l {QGradient::RepeatSpread}{RepeatSpread}
+ \li \l {QGradient::PadSpread}{PadSpread} (default)
+ \li \l {QGradient::ReflectSpread}{ReflectSpread}
+ \li \l {QGradient::RepeatSpread}{RepeatSpread}
\endtable
The colors in a gradient is defined using stop points of the
\table
\header
- \o RGB \o HSV \o CMYK
+ \li RGB \li HSV \li CMYK
\row
- \o \inlineimage qcolor-rgb.png
- \o \inlineimage qcolor-hsv.png
- \o \inlineimage qcolor-cmyk.png
+ \li \inlineimage qcolor-rgb.png
+ \li \inlineimage qcolor-hsv.png
+ \li \inlineimage qcolor-cmyk.png
\endtable
The QColor constructor creates the color based on RGB values. To
HSV, like RGB, has three components:
\list
- \o H, for hue, is in the range 0 to 359 if the color is chromatic (not
+ \li H, for hue, is in the range 0 to 359 if the color is chromatic (not
gray), or meaningless if it is gray. It represents degrees on the
color wheel familiar to most people. Red is 0 (degrees), green is
120, and blue is 240.
\inlineimage qcolor-hue.png
- \o S, for saturation, is in the range 0 to 255, and the bigger it is,
+ \li S, for saturation, is in the range 0 to 255, and the bigger it is,
the stronger the color is. Grayish colors have saturation near 0; very
strong colors have saturation near 255.
\inlineimage qcolor-saturation.png
- \o V, for value, is in the range 0 to 255 and represents lightness or
+ \li V, for value, is in the range 0 to 255 and represents lightness or
brightness of the color. 0 is black; 255 is as far from black as
possible.
of these formats:
\list
- \i #RGB (each of R, G, and B is a single hex digit)
- \i #RRGGBB
- \i #RRRGGGBBB
- \i #RRRRGGGGBBBB
- \i A name from the list of colors defined in the list of \l{SVG color keyword names}
+ \li #RGB (each of R, G, and B is a single hex digit)
+ \li #RRGGBB
+ \li #RRRGGGBBB
+ \li #RRRRGGGGBBBB
+ \li A name from the list of colors defined in the list of \l{SVG color keyword names}
provided by the World Wide Web Consortium; for example, "steelblue" or "gainsboro".
These color names work on all platforms. Note that these color names are \e not the
same as defined by the Qt::GlobalColor enums, e.g. "green" and Qt::green does not
refer to the same color.
- \i \c transparent - representing the absence of a color.
+ \li \c transparent - representing the absence of a color.
\endlist
The color is invalid if \a name cannot be parsed.
\table 100%
\row
- \o \inlineimage qmatrix-simpletransformation.png
- \o
+ \li \inlineimage qmatrix-simpletransformation.png
+ \li
\snippet doc/src/snippets/matrix/matrix.cpp 0
\endtable
\table 100%
\row
- \o \inlineimage qmatrix-combinedtransformation.png
- \o
+ \li \inlineimage qmatrix-combinedtransformation.png
+ \li
\snippet doc/src/snippets/matrix/matrix.cpp 1
\endtable
\table 100%
\row
- \o \inlineimage qmatrix-combinedtransformation.png
- \o
+ \li \inlineimage qmatrix-combinedtransformation.png
+ \li
\snippet doc/src/snippets/matrix/matrix.cpp 2
\endtable
\list
- \o font() is the font used for drawing text. If the painter
+ \li font() is the font used for drawing text. If the painter
isActive(), you can retrieve information about the currently set
font, and its metrics, using the fontInfo() and fontMetrics()
functions respectively.
- \o brush() defines the color or pattern that is used for filling
+ \li brush() defines the color or pattern that is used for filling
shapes.
- \o pen() defines the color or stipple that is used for drawing
+ \li pen() defines the color or stipple that is used for drawing
lines or boundaries.
- \o backgroundMode() defines whether there is a background() or
+ \li backgroundMode() defines whether there is a background() or
not, i.e it is either Qt::OpaqueMode or Qt::TransparentMode.
- \o background() only applies when backgroundMode() is \l
+ \li background() only applies when backgroundMode() is \l
Qt::OpaqueMode and pen() is a stipple. In that case, it
describes the color of the background pixels in the stipple.
- \o brushOrigin() defines the origin of the tiled brushes, normally
+ \li brushOrigin() defines the origin of the tiled brushes, normally
the origin of widget's background.
- \o viewport(), window(), worldTransform() make up the painter's coordinate
+ \li viewport(), window(), worldTransform() make up the painter's coordinate
transformation system. For more information, see the \l
{Coordinate Transformations} section and the \l {Coordinate
System} documentation.
- \o hasClipping() tells whether the painter clips at all. (The paint
+ \li hasClipping() tells whether the painter clips at all. (The paint
device clips, too.) If the painter clips, it clips to clipRegion().
- \o layoutDirection() defines the layout direction used by the
+ \li layoutDirection() defines the layout direction used by the
painter when drawing text.
- \o worldMatrixEnabled() tells whether world transformation is enabled.
+ \li worldMatrixEnabled() tells whether world transformation is enabled.
- \o viewTransformEnabled() tells whether view transformation is
+ \li viewTransformEnabled() tells whether view transformation is
enabled.
\endlist
\table 100%
\row
- \o \inlineimage qpainter-basicdrawing.png
- \o
- \bold {Basic Drawing Example}
+ \li \inlineimage qpainter-basicdrawing.png
+ \li
+ \b {Basic Drawing Example}
The \l {painting/basicdrawing}{Basic Drawing} example shows how to
display basic graphics primitives in a variety of styles using the
\table 100%
\row
- \o
- \bold {Painter Paths example}
+ \li
+ \b {Painter Paths example}
The QPainterPath class provides a container for painting
operations, enabling graphical shapes to be constructed and
The \l {painting/painterpaths}{Painter Paths} example shows how
painter paths can be used to build complex shapes for rendering.
- \o \inlineimage qpainter-painterpaths.png
+ \li \inlineimage qpainter-painterpaths.png
\endtable
QPainter also provides the fillPath() function which fills the
\table
\header
- \o \l {painting/deform}{Vector Deformation}
- \o \l {painting/gradients}{Gradients}
- \o \l {painting/pathstroke}{Path Stroking}
+ \li \l {painting/deform}{Vector Deformation}
+ \li \l {painting/gradients}{Gradients}
+ \li \l {painting/pathstroke}{Path Stroking}
\row
- \o \inlineimage qpainter-vectordeformation.png
- \o \inlineimage qpainter-gradients.png
- \o \inlineimage qpainter-pathstroking.png
+ \li \inlineimage qpainter-vectordeformation.png
+ \li \inlineimage qpainter-gradients.png
+ \li \inlineimage qpainter-pathstroking.png
\endtable
\table 100%
\row
- \o \inlineimage qpainter-concentriccircles.png
- \o
- \bold {Concentric Circles Example}
+ \li \inlineimage qpainter-concentriccircles.png
+ \li
+ \b {Concentric Circles Example}
The \l {painting/concentriccircles}{Concentric Circles} example
shows the improved rendering quality that can be obtained using
\table
\header
- \o nop \o rotate() \o scale() \o translate()
+ \li nop \li rotate() \li scale() \li translate()
\row
- \o \inlineimage qpainter-clock.png
- \o \inlineimage qpainter-rotation.png
- \o \inlineimage qpainter-scale.png
- \o \inlineimage qpainter-translation.png
+ \li \inlineimage qpainter-clock.png
+ \li \inlineimage qpainter-rotation.png
+ \li \inlineimage qpainter-scale.png
+ \li \inlineimage qpainter-translation.png
\endtable
The most commonly used transformations are scaling, rotation,
\table 100%
\row
- \o
- \bold {Affine Transformations Example}
+ \li
+ \b {Affine Transformations Example}
The \l {painting/affine}{Affine Transformations} example shows Qt's
ability to perform affine transformations on painting
operations. The demo also allows the user to experiment with the
transformation operations and see the results immediately.
- \o \inlineimage qpainter-affinetransformations.png
+ \li \inlineimage qpainter-affinetransformations.png
\endtable
All the tranformation operations operate on the transformation
\table 100%
\row
- \o \inlineimage qpainter-compositiondemo.png
+ \li \inlineimage qpainter-compositiondemo.png
- \o
- \bold {Composition Modes Example}
+ \li
+ \b {Composition Modes Example}
The \l {painting/composition}{Composition Modes} example, available in
Qt's examples directory, allows you to experiment with the various
\list
- \o Raster - This backend implements all rendering in pure software
+ \li Raster - This backend implements all rendering in pure software
and is always used to render into QImages. For optimal performance
only use the format types QImage::Format_ARGB32_Premultiplied,
QImage::Format_RGB32 or QImage::Format_RGB16. Any other format,
including QImage::Format_ARGB32, has significantly worse
performance. This engine is used by default for QWidget and QPixmap.
- \o OpenGL 2.0 (ES) - This backend is the primary backend for
+ \li OpenGL 2.0 (ES) - This backend is the primary backend for
hardware accelerated graphics. It can be run on desktop machines
and embedded devices supporting the OpenGL 2.0 or OpenGL/ES 2.0
specification. This includes most graphics chips produced in the
onto a QOpenGLWidget or by passing \c {-graphicssystem opengl} on the
command line when the underlying system supports it.
- \o OpenVG - This backend implements the Khronos standard for 2D
+ \li OpenVG - This backend implements the Khronos standard for 2D
and Vector Graphics. It is primarily for embedded devices with
hardware support for OpenVG. The engine can be enabled by
passing \c {-graphicssystem openvg} on the command line when
\list
- \o Simple transformations, meaning translation and scaling, pluss
+ \li Simple transformations, meaning translation and scaling, pluss
0, 90, 180, 270 degree rotations.
- \o \c drawPixmap() in combination with simple transformations and
+ \li \c drawPixmap() in combination with simple transformations and
opacity with non-smooth transformation mode
(\c QPainter::SmoothPixmapTransform not enabled as a render hint).
- \o Rectangle fills with solid color, two-color linear gradients
+ \li Rectangle fills with solid color, two-color linear gradients
and simple transforms.
- \o Rectangular clipping with simple transformations and intersect
+ \li Rectangular clipping with simple transformations and intersect
clip.
- \o Composition Modes \c QPainter::CompositionMode_Source and
+ \li Composition Modes \c QPainter::CompositionMode_Source and
QPainter::CompositionMode_SourceOver
- \o Rounded rectangle filling using solid color and two-color
+ \li Rounded rectangle filling using solid color and two-color
linear gradients fills.
- \o 3x3 patched pixmaps, via qDrawBorderPixmap.
+ \li 3x3 patched pixmaps, via qDrawBorderPixmap.
\endlist
2 engine:
\list
- \i blending is disabled
- \i the depth, stencil and scissor tests are disabled
- \i the active texture unit is reset to 0
- \i the depth mask, depth function and the clear depth are reset to their
+ \li blending is disabled
+ \li the depth, stencil and scissor tests are disabled
+ \li the active texture unit is reset to 0
+ \li the depth mask, depth function and the clear depth are reset to their
default values
- \i the stencil mask, stencil operation and stencil function are reset to
+ \li the stencil mask, stencil operation and stencil function are reset to
their default values
- \i the current color is reset to solid white
+ \li the current color is reset to solid white
\endlist
If, for example, the OpenGL polygon mode is changed by the user inside a
The following functions can transform the coordinate system without using
a QMatrix:
\list
- \i translate()
- \i scale()
- \i shear()
- \i rotate()
+ \li translate()
+ \li scale()
+ \li shear()
+ \li rotate()
\endlist
They operate on the painter's worldMatrix() and are implemented like this:
\table 100%
\row
- \o \inlineimage qpainter-path.png
- \o
+ \li \inlineimage qpainter-path.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 5
\endtable
\table 100%
\row
- \o \inlineimage qpainter-line.png
- \o
+ \li \inlineimage qpainter-line.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 6
\endtable
\table 100%
\row
- \o \inlineimage qpainter-rectangle.png
- \o
+ \li \inlineimage qpainter-rectangle.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 7
\endtable
\table 100%
\row
- \o \inlineimage qpainter-roundrect.png
- \o
+ \li \inlineimage qpainter-roundrect.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 8
\endtable
\table 100%
\row
- \o \inlineimage qpainter-ellipse.png
- \o
+ \li \inlineimage qpainter-ellipse.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 9
\endtable
\table 100%
\row
- \o \inlineimage qpainter-arc.png
- \o
+ \li \inlineimage qpainter-arc.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 10
\endtable
\table 100%
\row
- \o \inlineimage qpainter-pie.png
- \o
+ \li \inlineimage qpainter-pie.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 11
\endtable
\table 100%
\row
- \o \inlineimage qpainter-chord.png
- \o
+ \li \inlineimage qpainter-chord.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 12
\endtable
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 13
\endtable
\table 100%
\row
- \o \inlineimage qpainter-polygon.png
- \o
+ \li \inlineimage qpainter-polygon.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 14
\endtable
\table 100%
\row
- \o \inlineimage qpainter-polygon.png
- \o
+ \li \inlineimage qpainter-polygon.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 15
\endtable
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 16
\endtable
\table 100%
\row
- \o \inlineimage qpainter-text.png
- \o
+ \li \inlineimage qpainter-text.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 17
\endtable
OR of the following flags:
\list
- \o Qt::AlignLeft
- \o Qt::AlignRight
- \o Qt::AlignHCenter
- \o Qt::AlignJustify
- \o Qt::AlignTop
- \o Qt::AlignBottom
- \o Qt::AlignVCenter
- \o Qt::AlignCenter
- \o Qt::TextDontClip
- \o Qt::TextSingleLine
- \o Qt::TextExpandTabs
- \o Qt::TextShowMnemonic
- \o Qt::TextWordWrap
- \o Qt::TextIncludeTrailingSpaces
+ \li Qt::AlignLeft
+ \li Qt::AlignRight
+ \li Qt::AlignHCenter
+ \li Qt::AlignJustify
+ \li Qt::AlignTop
+ \li Qt::AlignBottom
+ \li Qt::AlignVCenter
+ \li Qt::AlignCenter
+ \li Qt::TextDontClip
+ \li Qt::TextSingleLine
+ \li Qt::TextExpandTabs
+ \li Qt::TextShowMnemonic
+ \li Qt::TextWordWrap
+ \li Qt::TextIncludeTrailingSpaces
\endlist
\sa Qt::AlignmentFlag, Qt::TextFlag, boundingRect(), layoutDirection()
the following flags:
\list
- \o Qt::AlignLeft
- \o Qt::AlignRight
- \o Qt::AlignHCenter
- \o Qt::AlignJustify
- \o Qt::AlignTop
- \o Qt::AlignBottom
- \o Qt::AlignVCenter
- \o Qt::AlignCenter
- \o Qt::TextSingleLine
- \o Qt::TextExpandTabs
- \o Qt::TextShowMnemonic
- \o Qt::TextWordWrap
+ \li Qt::AlignLeft
+ \li Qt::AlignRight
+ \li Qt::AlignHCenter
+ \li Qt::AlignJustify
+ \li Qt::AlignTop
+ \li Qt::AlignBottom
+ \li Qt::AlignVCenter
+ \li Qt::AlignCenter
+ \li Qt::TextSingleLine
+ \li Qt::TextExpandTabs
+ \li Qt::TextShowMnemonic
+ \li Qt::TextWordWrap
\endlist
By default, QPainter draws text anti-aliased.
The \a flags argument is a bitwise OR of the following flags:
\list
- \o Qt::AlignLeft
- \o Qt::AlignRight
- \o Qt::AlignHCenter
- \o Qt::AlignTop
- \o Qt::AlignBottom
- \o Qt::AlignVCenter
- \o Qt::AlignCenter
- \o Qt::TextSingleLine
- \o Qt::TextExpandTabs
- \o Qt::TextShowMnemonic
- \o Qt::TextWordWrap
- \o Qt::TextIncludeTrailingSpaces
+ \li Qt::AlignLeft
+ \li Qt::AlignRight
+ \li Qt::AlignHCenter
+ \li Qt::AlignTop
+ \li Qt::AlignBottom
+ \li Qt::AlignVCenter
+ \li Qt::AlignCenter
+ \li Qt::TextSingleLine
+ \li Qt::TextExpandTabs
+ \li Qt::TextShowMnemonic
+ \li Qt::TextWordWrap
+ \li Qt::TextIncludeTrailingSpaces
\endlist
If several of the horizontal or several of the vertical alignment
flags are set, the resulting alignment is undefined.
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 18
\endtable
\table 100%
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 20
\endtable
\target GetFunction
\table
- \header \o Property Flag \o Current Property Value
- \row \o QPaintEngine::DirtyBackground \o backgroundBrush()
- \row \o QPaintEngine::DirtyBackgroundMode \o backgroundMode()
- \row \o QPaintEngine::DirtyBrush \o brush()
- \row \o QPaintEngine::DirtyBrushOrigin \o brushOrigin()
- \row \o QPaintEngine::DirtyClipRegion \e or QPaintEngine::DirtyClipPath
- \o clipOperation()
- \row \o QPaintEngine::DirtyClipPath \o clipPath()
- \row \o QPaintEngine::DirtyClipRegion \o clipRegion()
- \row \o QPaintEngine::DirtyCompositionMode \o compositionMode()
- \row \o QPaintEngine::DirtyFont \o font()
- \row \o QPaintEngine::DirtyTransform \o transform()
- \row \o QPaintEngine::DirtyClipEnabled \o isClipEnabled()
- \row \o QPaintEngine::DirtyPen \o pen()
- \row \o QPaintEngine::DirtyHints \o renderHints()
+ \header \li Property Flag \li Current Property Value
+ \row \li QPaintEngine::DirtyBackground \li backgroundBrush()
+ \row \li QPaintEngine::DirtyBackgroundMode \li backgroundMode()
+ \row \li QPaintEngine::DirtyBrush \li brush()
+ \row \li QPaintEngine::DirtyBrushOrigin \li brushOrigin()
+ \row \li QPaintEngine::DirtyClipRegion \e or QPaintEngine::DirtyClipPath
+ \li clipOperation()
+ \row \li QPaintEngine::DirtyClipPath \li clipPath()
+ \row \li QPaintEngine::DirtyClipRegion \li clipRegion()
+ \row \li QPaintEngine::DirtyCompositionMode \li compositionMode()
+ \row \li QPaintEngine::DirtyFont \li font()
+ \row \li QPaintEngine::DirtyTransform \li transform()
+ \row \li QPaintEngine::DirtyClipEnabled \li isClipEnabled()
+ \row \li QPaintEngine::DirtyPen \li pen()
+ \row \li QPaintEngine::DirtyHints \li renderHints()
\endtable
The QPaintEngineState class also provide the painter() function
\table 100%
\row
- \o \inlineimage qpainterpath-construction.png
- \o
+ \li \inlineimage qpainterpath-construction.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 0
\endtable
\table
\header
- \o Qt::OddEvenFill
- \o Qt::WindingFill
+ \li Qt::OddEvenFill
+ \li Qt::WindingFill
\row
- \o \inlineimage qt-fillrule-oddeven.png
- \o \inlineimage qt-fillrule-winding.png
+ \li \inlineimage qt-fillrule-oddeven.png
+ \li \inlineimage qt-fillrule-winding.png
\endtable
See the Qt::FillRule documentation for the definition of the
\table
\header
- \o \l {painting/painterpaths}{Painter Paths Example}
- \o \l {painting/deform}{Vector Deformation Example}
+ \li \l {painting/painterpaths}{Painter Paths Example}
+ \li \l {painting/deform}{Vector Deformation Example}
\row
- \o \inlineimage qpainterpath-example.png
- \o \inlineimage qpainterpath-demo.png
+ \li \inlineimage qpainterpath-example.png
+ \li \inlineimage qpainterpath-demo.png
\endtable
\sa QPainterPathStroker, QPainter, QRegion, {Painter Paths Example}
\table 100%
\row
- \o \inlineimage qpainterpath-cubicto.png
- \o
+ \li \inlineimage qpainterpath-cubicto.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 1
\endtable
\table 100%
\row
- \o \inlineimage qpainterpath-arcto.png
- \o
+ \li \inlineimage qpainterpath-arcto.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 2
\endtable
\table 100%
\row
- \o \inlineimage qpainterpath-addrectangle.png
- \o
+ \li \inlineimage qpainterpath-addrectangle.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 3
\endtable
\table 100%
\row
- \o \inlineimage qpainterpath-addpolygon.png
- \o
+ \li \inlineimage qpainterpath-addpolygon.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 4
\endtable
\table 100%
\row
- \o \inlineimage qpainterpath-addellipse.png
- \o
+ \li \inlineimage qpainterpath-addellipse.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 5
\endtable
\table 100%
\row
- \o \inlineimage qpainterpath-addtext.png
- \o
+ \li \inlineimage qpainterpath-addtext.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpainterpath.cpp 6
\endtable
\table
\header
- \o Qt::OddEvenFill (default)
- \o Qt::WindingFill
+ \li Qt::OddEvenFill (default)
+ \li Qt::WindingFill
\row
- \o \inlineimage qt-fillrule-oddeven.png
- \o \inlineimage qt-fillrule-winding.png
+ \li \inlineimage qt-fillrule-oddeven.png
+ \li \inlineimage qt-fillrule-winding.png
\endtable
\sa fillRule()
functions:
\list
- \o setWidth()
- \o setCapStyle()
- \o setJoinStyle()
- \o setDashPattern()
+ \li setWidth()
+ \li setCapStyle()
+ \li setJoinStyle()
+ \li setDashPattern()
\endlist
The setDashPattern() function accepts both a Qt::PenStyle object
\table
\row
- \o \inlineimage qpen-solid.png
- \o \inlineimage qpen-dash.png
- \o \inlineimage qpen-dot.png
+ \li \inlineimage qpen-solid.png
+ \li \inlineimage qpen-dash.png
+ \li \inlineimage qpen-dot.png
\row
- \o Qt::SolidLine
- \o Qt::DashLine
- \o Qt::DotLine
+ \li Qt::SolidLine
+ \li Qt::DashLine
+ \li Qt::DotLine
\row
- \o \inlineimage qpen-dashdot.png
- \o \inlineimage qpen-dashdotdot.png
- \o \inlineimage qpen-custom.png
+ \li \inlineimage qpen-dashdot.png
+ \li \inlineimage qpen-dashdotdot.png
+ \li \inlineimage qpen-custom.png
\row
- \o Qt::DashDotLine
- \o Qt::DashDotDotLine
- \o Qt::CustomDashLine
+ \li Qt::DashDotLine
+ \li Qt::DashDotDotLine
+ \li Qt::CustomDashLine
\endtable
Simply use the setStyle() function to convert the pen style to
\table
\row
- \o \inlineimage qpen-square.png
- \o \inlineimage qpen-flat.png
- \o \inlineimage qpen-roundcap.png
+ \li \inlineimage qpen-square.png
+ \li \inlineimage qpen-flat.png
+ \li \inlineimage qpen-roundcap.png
\row
- \o Qt::SquareCap
- \o Qt::FlatCap
- \o Qt::RoundCap
+ \li Qt::SquareCap
+ \li Qt::FlatCap
+ \li Qt::RoundCap
\endtable
The Qt::SquareCap style is a square line end that covers the end
\table
\row
- \o \inlineimage qpen-bevel.png
- \o \inlineimage qpen-miter.png
- \o \inlineimage qpen-roundjoin.png
+ \li \inlineimage qpen-bevel.png
+ \li \inlineimage qpen-miter.png
+ \li \inlineimage qpen-roundjoin.png
\row
- \o Qt::BevelJoin
- \o Qt::MiterJoin
- \o Qt::RoundJoin
+ \li Qt::BevelJoin
+ \li Qt::MiterJoin
+ \li Qt::RoundJoin
\endtable
The Qt::BevelJoin style fills the triangular notch between the two
\table 100%
\row
- \o \inlineimage qpen-demo.png
- \o \bold {\l {painting/pathstroke}{The Path Stroking Example}}
+ \li \inlineimage qpen-demo.png
+ \li \b {\l {painting/pathstroke}{The Path Stroking Example}}
The Path Stroking example shows Qt's built-in dash patterns and shows
how custom patterns can be used to extend the range of available
\table 100%
\row
- \o \inlineimage qpen-custom.png
- \o
+ \li \inlineimage qpen-custom.png
+ \li
\snippet doc/src/snippets/code/src_gui_painting_qpen.cpp 3
\endtable
to specify the dash pattern.
\table
- \row \o \inlineimage qpen-dashpattern.png
- \o For example, a pattern where each stroke is four units long, followed by a gap
+ \row \li \inlineimage qpen-dashpattern.png
+ \li For example, a pattern where each stroke is four units long, followed by a gap
of two units, will begin with the stroke when drawn as a line.
However, if the dash offset is set to 4.0, any line drawn will begin with the gap.
The rectangles \e must be optimally Y-X sorted and follow these restrictions:
\list
- \o The rectangles must not intersect.
- \o All rectangles with a given top coordinate must have the same height.
- \o No two rectangles may abut horizontally (they should be combined
+ \li The rectangles must not intersect.
+ \li All rectangles with a given top coordinate must have the same height.
+ \li No two rectangles may abut horizontally (they should be combined
into a single wider rectangle in that case).
- \o The rectangles must be sorted in ascending order, with Y as the major
+ \li The rectangles must be sorted in ascending order, with Y as the major
sort key and X as the minor sort key.
\endlist
\omit
\table 100%
\row
- \o \inlineimage qtransform-simpletransformation.png
- \o
+ \li \inlineimage qtransform-simpletransformation.png
+ \li
\snippet doc/src/snippets/transform/main.cpp 0
\endtable
\table 100%
\row
- \o \inlineimage qtransform-combinedtransformation.png
- \o
+ \li \inlineimage qtransform-combinedtransformation.png
+ \li
\snippet doc/src/snippets/transform/main.cpp 1
\endtable
\table 100%
\row
- \o \inlineimage qtransform-combinedtransformation2.png
- \o
+ \li \inlineimage qtransform-combinedtransformation2.png
+ \li
\snippet doc/src/snippets/transform/main.cpp 2
\endtable
custom text object into a document:
\list
- \o Choose an \a objectType. The \a objectType is an integer with a
+ \li Choose an \a objectType. The \a objectType is an integer with a
value greater or equal to QTextFormat::UserObject.
- \o Create a QTextCharFormat object and set the object type to the
+ \li Create a QTextCharFormat object and set the object type to the
chosen type using the setObjectType() function.
- \o Implement the QTextObjectInterface class.
- \o Call QAbstractTextDocumentLayout::registerHandler() with an instance of your
+ \li Implement the QTextObjectInterface class.
+ \li Call QAbstractTextDocumentLayout::registerHandler() with an instance of your
QTextObjectInterface subclass to register your object type.
- \o Insert QChar::ObjectReplacementCharacter with the aforementioned
+ \li Insert QChar::ObjectReplacementCharacter with the aforementioned
QTextCharFormat of the chosen object type into the document.
As mentioned, the functions of QTextObjectInterface
\l{QTextObjectInterface::}{intrinsicSize()} and
implementation of this function would have to do the following:
\list
- \o Determine the list of changed \l{QTextBlock}(s) using the parameters
+ \li Determine the list of changed \l{QTextBlock}(s) using the parameters
provided.
- \o Each QTextBlock object's corresponding QTextLayout object needs to
+ \li Each QTextBlock object's corresponding QTextLayout object needs to
be processed. You can access the \l{QTextBlock}'s layout using the
QTextBlock::layout() function. This processing should take the
document's page size into consideration.
- \o If the total number of pages changed, the pageCountChanged() signal
+ \li If the total number of pages changed, the pageCountChanged() signal
should be emitted.
- \o If the total size changed, the documentSizeChanged() signal should
+ \li If the total size changed, the documentSizeChanged() signal should
be emitted.
- \o The update() signal should be emitted to schedule a repaint of areas
+ \li The update() signal should be emitted to schedule a repaint of areas
in the layout that require repainting.
\endlist
\target fontmatching
The font matching algorithm works as follows:
\list 1
- \o The specified font family is searched for.
- \o If not found, the styleHint() is used to select a replacement
+ \li The specified font family is searched for.
+ \li If not found, the styleHint() is used to select a replacement
family.
- \o Each replacement font family is searched for.
- \o If none of these are found or there was no styleHint(), "helvetica"
+ \li Each replacement font family is searched for.
+ \li If none of these are found or there was no styleHint(), "helvetica"
will be searched for.
- \o If "helvetica" isn't found Qt will try the lastResortFamily().
- \o If the lastResortFamily() isn't found Qt will try the
+ \li If "helvetica" isn't found Qt will try the lastResortFamily().
+ \li If the lastResortFamily() isn't found Qt will try the
lastResortFont() which will always return a name of some kind.
\endlist
Once a font is found, the remaining attributes are matched in order of
priority:
\list 1
- \o fixedPitch()
- \o pointSize() (see below)
- \o weight()
- \o style()
+ \li fixedPitch()
+ \li pointSize() (see below)
+ \li weight()
+ \li style()
\endlist
If you have a font which matches on family, even if none of the
\table
\header
- \o
- \o PreferDefaultHinting
- \o PreferNoHinting
- \o PreferVerticalHinting
- \o PreferFullHinting
+ \li
+ \li PreferDefaultHinting
+ \li PreferNoHinting
+ \li PreferVerticalHinting
+ \li PreferFullHinting
\row
- \o Windows Vista (w/o Platform Update) and earlier
- \o Full hinting
- \o Full hinting
- \o Full hinting
- \o Full hinting
+ \li Windows Vista (w/o Platform Update) and earlier
+ \li Full hinting
+ \li Full hinting
+ \li Full hinting
+ \li Full hinting
\row
- \o Windows 7 and Windows Vista (w/Platform Update) and DirectWrite enabled in Qt
- \o Full hinting
- \o Vertical hinting
- \o Vertical hinting
- \o Full hinting
+ \li Windows 7 and Windows Vista (w/Platform Update) and DirectWrite enabled in Qt
+ \li Full hinting
+ \li Vertical hinting
+ \li Vertical hinting
+ \li Full hinting
\row
- \o FreeType
- \o Operating System setting
- \o No hinting
- \o Vertical hinting (light)
- \o Full hinting
+ \li FreeType
+ \li Operating System setting
+ \li No hinting
+ \li Vertical hinting (light)
+ \li Full hinting
\row
- \o Cocoa on Mac OS X
- \o No hinting
- \o No hinting
- \o No hinting
- \o No hinting
+ \li Cocoa on Mac OS X
+ \li No hinting
+ \li No hinting
+ \li No hinting
+ \li No hinting
\endtable
\note Please be aware that altering the hinting preference on Windows is available through
There are three ways to create a QFontInfo object.
\list 1
- \o Calling the QFontInfo constructor with a QFont creates a font
+ \li Calling the QFontInfo constructor with a QFont creates a font
info object for a screen-compatible font, i.e. the font cannot be
a printer font. If the font is changed later, the font
info object is \e not updated.
inaccurate. Printer fonts are not always accessible so the nearest
screen font is used if a printer font is supplied.)
- \o QWidget::fontInfo() returns the font info for a widget's font.
+ \li QWidget::fontInfo() returns the font info for a widget's font.
This is equivalent to calling QFontInfo(widget->font()). If the
widget's font is changed later, the font info object is \e not
updated.
- \o QPainter::fontInfo() returns the font info for a painter's
+ \li QPainter::fontInfo() returns the font info for a painter's
current font. If the painter's font is changed later, the font
info object is \e not updated.
\endlist
Currently only TrueType fonts and TrueType font collections are supported.
- \bold{Note:} Adding application fonts on Unix/X11 platforms without fontconfig is
+ \b{Note:} Adding application fonts on Unix/X11 platforms without fontconfig is
currently not supported.
\sa addApplicationFont(), applicationFontFamilies(), removeApplicationFont()
QFontMetrics object:
\list 1
- \o Calling the QFontMetrics constructor with a QFont creates a
+ \li Calling the QFontMetrics constructor with a QFont creates a
font metrics object for a screen-compatible font, i.e. the font
cannot be a printer font. If the font is changed
later, the font metrics object is \e not updated.
inaccurate. Printer fonts are not always accessible so the nearest
screen font is used if a printer font is supplied.)
- \o QWidget::fontMetrics() returns the font metrics for a widget's
+ \li QWidget::fontMetrics() returns the font metrics for a widget's
font. This is equivalent to QFontMetrics(widget->font()). If the
widget's font is changed later, the font metrics object is \e not
updated.
- \o QPainter::fontMetrics() returns the font metrics for a
+ \li QPainter::fontMetrics() returns the font metrics for a
painter's current font. If the painter's font is changed later, the
font metrics object is \e not updated.
\endlist
The \a flags argument is the bitwise OR of the following flags:
\list
- \o Qt::AlignLeft aligns to the left border, except for
+ \li Qt::AlignLeft aligns to the left border, except for
Arabic and Hebrew where it aligns to the right.
- \o Qt::AlignRight aligns to the right border, except for
+ \li Qt::AlignRight aligns to the right border, except for
Arabic and Hebrew where it aligns to the left.
- \o Qt::AlignJustify produces justified text.
- \o Qt::AlignHCenter aligns horizontally centered.
- \o Qt::AlignTop aligns to the top border.
- \o Qt::AlignBottom aligns to the bottom border.
- \o Qt::AlignVCenter aligns vertically centered
- \o Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
- \o Qt::TextSingleLine ignores newline characters in the text.
- \o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
- \o Qt::TextWordWrap breaks the text to fit the rectangle.
+ \li Qt::AlignJustify produces justified text.
+ \li Qt::AlignHCenter aligns horizontally centered.
+ \li Qt::AlignTop aligns to the top border.
+ \li Qt::AlignBottom aligns to the bottom border.
+ \li Qt::AlignVCenter aligns vertically centered
+ \li Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
+ \li Qt::TextSingleLine ignores newline characters in the text.
+ \li Qt::TextExpandTabs expands tabs (see below)
+ \li Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
+ \li Qt::TextWordWrap breaks the text to fit the rectangle.
\endlist
Qt::Horizontal alignment defaults to Qt::AlignLeft and vertical
The \a flags argument is the bitwise OR of the following flags:
\list
- \o Qt::TextSingleLine ignores newline characters.
- \o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
- \o Qt::TextWordBreak breaks the text to fit the rectangle.
+ \li Qt::TextSingleLine ignores newline characters.
+ \li Qt::TextExpandTabs expands tabs (see below)
+ \li Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
+ \li Qt::TextWordBreak breaks the text to fit the rectangle.
\endlist
If Qt::TextExpandTabs is set in \a flags, then: if \a tabArray is
The \a flags argument is the bitwise OR of the following flags:
\list
- \o Qt::AlignLeft aligns to the left border, except for
+ \li Qt::AlignLeft aligns to the left border, except for
Arabic and Hebrew where it aligns to the right.
- \o Qt::AlignRight aligns to the right border, except for
+ \li Qt::AlignRight aligns to the right border, except for
Arabic and Hebrew where it aligns to the left.
- \o Qt::AlignJustify produces justified text.
- \o Qt::AlignHCenter aligns horizontally centered.
- \o Qt::AlignTop aligns to the top border.
- \o Qt::AlignBottom aligns to the bottom border.
- \o Qt::AlignVCenter aligns vertically centered
- \o Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
- \o Qt::TextSingleLine ignores newline characters in the text.
- \o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
- \o Qt::TextWordWrap breaks the text to fit the rectangle.
+ \li Qt::AlignJustify produces justified text.
+ \li Qt::AlignHCenter aligns horizontally centered.
+ \li Qt::AlignTop aligns to the top border.
+ \li Qt::AlignBottom aligns to the bottom border.
+ \li Qt::AlignVCenter aligns vertically centered
+ \li Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
+ \li Qt::TextSingleLine ignores newline characters in the text.
+ \li Qt::TextExpandTabs expands tabs (see below)
+ \li Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
+ \li Qt::TextWordWrap breaks the text to fit the rectangle.
\endlist
Qt::Horizontal alignment defaults to Qt::AlignLeft and vertical
If Qt::TextExpandTabs is set in \a flags, the following behavior is
used to interpret tab characters in the text:
\list
- \o If \a tabArray is non-null, it specifies a 0-terminated sequence of
+ \li If \a tabArray is non-null, it specifies a 0-terminated sequence of
pixel-positions for tabs in the text.
- \o If \a tabStops is non-zero, it is used as the tab spacing (in pixels).
+ \li If \a tabStops is non-zero, it is used as the tab spacing (in pixels).
\endlist
Note that the bounding rectangle may extend to the left of (0, 0),
The \a flags argument is the bitwise OR of the following flags:
\list
- \o Qt::TextSingleLine ignores newline characters.
- \o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
- \o Qt::TextWordBreak breaks the text to fit the rectangle.
+ \li Qt::TextSingleLine ignores newline characters.
+ \li Qt::TextExpandTabs expands tabs (see below)
+ \li Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
+ \li Qt::TextWordBreak breaks the text to fit the rectangle.
\endlist
These flags are defined in \l{Qt::TextFlags}.
If Qt::TextExpandTabs is set in \a flags, the following behavior is
used to interpret tab characters in the text:
\list
- \o If \a tabArray is non-null, it specifies a 0-terminated sequence of
+ \li If \a tabArray is non-null, it specifies a 0-terminated sequence of
pixel-positions for tabs in the text.
- \o If \a tabStops is non-zero, it is used as the tab spacing (in pixels).
+ \li If \a tabStops is non-zero, it is used as the tab spacing (in pixels).
\endlist
Newline characters are processed as line breaks.
QRawFont can be constructed in a number of ways:
\list
- \o It can be constructed by calling QTextLayout::glyphs() or QTextFragment::glyphs(). The
+ \li It can be constructed by calling QTextLayout::glyphs() or QTextFragment::glyphs(). The
returned QGlyphs objects will contain QRawFont objects which represent the actual fonts
used to render each portion of the text.
- \o It can be constructed by passing a QFont object to QRawFont::fromFont(). The function
+ \li It can be constructed by passing a QFont object to QRawFont::fromFont(). The function
will return a QRawFont object representing the font that will be selected as response to
the QFont query and the selected writing system.
- \o It can be constructed by passing a file name or QByteArray directly to the QRawFont
+ \li It can be constructed by passing a file name or QByteArray directly to the QRawFont
constructor, or by calling loadFromFile() or loadFromData(). In this case, the
font will not be registered in QFontDatabase, and it will not be available as part of
regular font selection.
document with the cursor:
\list
- \i Lists are ordered sequences of block elements that are decorated with
+ \li Lists are ordered sequences of block elements that are decorated with
bullet points or symbols. These are inserted in a specified format
with insertList().
- \i Tables are inserted with the insertTable() function, and can be
+ \li Tables are inserted with the insertTable() function, and can be
given an optional format. These contain an array of cells that can
be traversed using the cursor.
- \i Inline images are inserted with insertImage(). The image to be
+ \li Inline images are inserted with insertImage(). The image to be
used can be specified in an image format, or by name.
- \i Frames are inserted by calling insertFrame() with a specified format.
+ \li Frames are inserted by calling insertFrame() with a specified format.
\endlist
Actions can be grouped (i.e. treated as a single action for
/*!
Clears the current selection by setting the anchor to the cursor position.
- Note that it does \bold{not} delete the text of the selection.
+ Note that it does \b{not} delete the text of the selection.
\sa removeSelectedText() hasSelection()
*/
system. The following are the undo/redo operations of a QTextDocument:
\list
- \o Insertion or removal of characters. A sequence of insertions or removals
+ \li Insertion or removal of characters. A sequence of insertions or removals
within the same text block are regarded as a single undo/redo operation.
- \o Insertion or removal of text blocks. Sequences of insertion or removals
+ \li Insertion or removal of text blocks. Sequences of insertion or removals
in a single operation (e.g., by selecting and then deleting text) are
regarded as a single undo/redo operation.
- \o Text character format changes.
- \o Text block format changes.
- \o Text block group format changes.
+ \li Text character format changes.
+ \li Text block format changes.
+ \li Text block group format changes.
\endlist
\sa QTextCursor, QTextEdit, \link richtext.html Rich Text Processing\endlink , {Text Object Example}
The style sheet needs to be compliant to CSS 2.1 syntax.
- \bold{Note:} Changing the default style sheet does not have any effect to the existing content
+ \b{Note:} Changing the default style sheet does not have any effect to the existing content
of the document.
\sa {Supported HTML Subset}
The HTML formatting is respected as much as possible; for example,
"<b>bold</b> text" will produce text where the first word has a font
- weight that gives it a bold appearance: "\bold{bold} text".
+ weight that gives it a bold appearance: "\b{bold} text".
\note It is the responsibility of the caller to make sure that the
text is correctly decoded when a QString containing HTML is created
By default, Qt can write the following formats:
\table
- \header \o Format \o Description
- \row \o plaintext \o Plain text
- \row \o HTML \o HyperText Markup Language
- \row \o ODF \o OpenDocument Format
+ \header \li Format \li Description
+ \row \li plaintext \li Plain text
+ \row \li HTML \li HyperText Markup Language
+ \row \li ODF \li OpenDocument Format
\endtable
\sa setFormat()
Returns true if the list has no items; otherwise returns false.
- \bold{Note:} Empty lists are automatically deleted by the QTextDocument that owns
+ \b{Note:} Empty lists are automatically deleted by the QTextDocument that owns
them.
\sa count()
\table 80%
\row
- \o \inlineimage texttable-split.png Original Table
- \o Suppose we have a 2x3 table of names and addresses. To merge both
+ \li \inlineimage texttable-split.png Original Table
+ \li Suppose we have a 2x3 table of names and addresses. To merge both
columns in the first row we invoke mergeCells() with \a row = 0,
\a column = 0, \a numRows = 1 and \a numColumns = 2.
\snippet doc/src/snippets/textdocument-texttable/main.cpp 0
\row
- \o \inlineimage texttable-merge.png
- \o This gives us the following table. To split the first row of the table
+ \li \inlineimage texttable-merge.png
+ \li This gives us the following table. To split the first row of the table
back into two cells, we invoke the splitCell() function with \a numRows
and \a numCols = 1.
\snippet doc/src/snippets/textdocument-texttable/main.cpp 1
\row
- \o \inlineimage texttable-split.png Split Table
- \o This results in the original table.
+ \li \inlineimage texttable-split.png Split Table
+ \li This results in the original table.
\endtable
\sa QTextTableFormat
\list
- \i For a line edit that accepts integers from 10 to 1000 inclusive,
+ \li For a line edit that accepts integers from 10 to 1000 inclusive,
42 and 123 are \l Acceptable, the empty string and 5 are \l
Intermediate, and "asdf" and 1114 is \l Invalid.
- \i For an editable combobox that accepts URLs, any well-formed URL
+ \li For an editable combobox that accepts URLs, any well-formed URL
is \l Acceptable, "http://example.com/," is \l Intermediate
(it might be a cut and paste action that accidentally took in a
comma at the end), the empty string is \l Intermediate (the user
might select and delete all of the text in preparation for entering
a new URL) and "http:///./" is \l Invalid.
- \i For a spin box that accepts lengths, "11cm" and "1in" are \l
+ \li For a spin box that accepts lengths, "11cm" and "1in" are \l
Acceptable, "11" and the empty string are \l Intermediate, and
"http://example.com" and "hour" are \l Invalid.
When QRegExpValidator determines whether a string is \l Acceptable
or not, the regexp is treated as if it begins with the start of string
- assertion (\bold{^}) and ends with the end of string assertion
- (\bold{$}); the match is against the entire input string, or from
+ assertion (\b{^}) and ends with the end of string assertion
+ (\b{$}); the match is against the entire input string, or from
the given position if a start position greater than zero is given.
If a string is a prefix of an \l Acceptable string, it is considered
\l Intermediate. For example, "" and "A" are \l Intermediate for the
- regexp \bold{[A-Z][0-9]} (whereas "_" would be \l Invalid).
+ regexp \b{[A-Z][0-9]} (whereas "_" would be \l Invalid).
For a brief introduction to Qt's regexp engine, see \l QRegExp.
accepts all strings that match the regular expression \a rx.
The match is made against the entire string; e.g. if the regexp is
- \bold{[A-Fa-f0-9]+} it will be treated as \bold{^[A-Fa-f0-9]+$}.
+ \b{[A-Fa-f0-9]+} it will be treated as \b{^[A-Fa-f0-9]+$}.
*/
QRegExpValidator::QRegExpValidator(const QRegExp& rx, QObject *parent)
The \a pos parameter is set to the length of the \a input parameter.
- For example, if the regular expression is \bold{\\w\\d\\d}
+ For example, if the regular expression is \b{\\w\\d\\d}
(word-character, digit, digit) then "A57" is \l Acceptable,
"E5" is \l Intermediate, and "+9" is \l Invalid.
For example, a proxy factory could apply the following rules:
\list
- \o if the target address is in the local network (for example,
+ \li if the target address is in the local network (for example,
if the hostname contains no dots or if it's an IP address in
the organization's range), return QNetworkProxy::NoProxy
- \o if the request is FTP, return an FTP proxy
- \o if the request is HTTP or HTTPS, then return an HTTP proxy
- \o otherwise, return a SOCKSv5 proxy server
+ \li if the request is FTP, return an FTP proxy
+ \li if the request is HTTP or HTTPS, then return an HTTP proxy
+ \li otherwise, return a SOCKSv5 proxy server
\endlist
The lifetime of the object \a factory will be managed by
\table
\header
- \o BearerType
- \o Value
+ \li BearerType
+ \li Value
\row
- \o BearerUnknown
- \o
- \o The session is based on an unknown or unspecified bearer type. The value of the
+ \li BearerUnknown
+ \li
+ \li The session is based on an unknown or unspecified bearer type. The value of the
string returned describes the bearer type.
\row
- \o BearerEthernet
- \o Ethernet
+ \li BearerEthernet
+ \li Ethernet
\row
- \o BearerWLAN
- \o WLAN
+ \li BearerWLAN
+ \li WLAN
\row
- \o Bearer2G
- \o 2G
+ \li Bearer2G
+ \li 2G
\row
- \o BearerCDMA2000
- \o CDMA2000
+ \li BearerCDMA2000
+ \li CDMA2000
\row
- \o BearerWCDMA
- \o WCDMA
+ \li BearerWCDMA
+ \li WCDMA
\row
- \o BearerHSPA
- \o HSPA
+ \li BearerHSPA
+ \li HSPA
\row
- \o BearerBluetooth
- \o Bluetooth
+ \li BearerBluetooth
+ \li Bluetooth
\row
- \o BearerWiMAX
- \o WiMAX
+ \li BearerWiMAX
+ \li WiMAX
\endtable
This function returns an empty string if this is an invalid configuration, a network
\table
\header
- \o Key \o Description
+ \li Key \li Description
\row
- \o ActiveConfiguration
- \o If the session \l isOpen() this property returns the identifier of the
+ \li ActiveConfiguration
+ \li If the session \l isOpen() this property returns the identifier of the
QNetworkConfiguration that is used by this session; otherwise an empty string.
The main purpose of this key is to determine which Internet access point is used
}
\endcode
\row
- \o UserChoiceConfiguration
- \o If the session \l isOpen() and is bound to a QNetworkConfiguration of type
+ \li UserChoiceConfiguration
+ \li If the session \l isOpen() and is bound to a QNetworkConfiguration of type
UserChoice, this property returns the identifier of the QNetworkConfiguration that the
configuration resolved to when \l open() was called; otherwise an empty string.
whereas \e ActiveConfiguration always returns identifiers to
\l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations.
\row
- \o ConnectInBackground
- \o Setting this property to \e true before calling \l open() implies that the connection attempt
+ \li ConnectInBackground
+ \li Setting this property to \e true before calling \l open() implies that the connection attempt
is made but if no connection can be established, the user is not connsulted and asked to select
a suitable connection. This property is not set by default and support for it depends on the platform.
\row
- \o AutoCloseSessionTimeout
- \o If the session requires polling to keep its state up to date, this property holds
+ \li AutoCloseSessionTimeout
+ \li If the session requires polling to keep its state up to date, this property holds
the timeout in milliseconds before the session will automatically close. If the
value of this property is -1 the session will not automatically close. This property
is set to -1 by default.
QAuthenticator supports the following authentication methods:
\list
- \o Basic
- \o NTLM version 2
- \o Digest-MD5
+ \li Basic
+ \li NTLM version 2
+ \li Digest-MD5
\endlist
\section1 Options
\section2 Basic
\table
- \header \o Option \o Direction \o Description
- \row \o \tt{realm} \o Incoming \o Contains the realm of the authentication, the same as realm()
+ \header \li Option \li Direction \li Description
+ \row \li \tt{realm} \li Incoming \li Contains the realm of the authentication, the same as realm()
\endtable
The Basic authentication mechanism supports no outgoing options.
\section2 Digest-MD5
\table
- \header \o Option \o Direction \o Description
- \row \o \tt{realm} \o Incoming \o Contains the realm of the authentication, the same as realm()
+ \header \li Option \li Direction \li Description
+ \row \li \tt{realm} \li Incoming \li Contains the realm of the authentication, the same as realm()
\endtable
The Digest-MD5 authentication mechanism supports no outgoing options.
\list
- \o Node-local: Addresses that are only used for communicating with
+ \li Node-local: Addresses that are only used for communicating with
services on the same interface (e.g., the loopback interface "::1").
- \o Link-local: Addresses that are local to the network interface
+ \li Link-local: Addresses that are local to the network interface
(\e{link}). There is always one link-local address for each IPv6 interface
on your host. Link-local addresses ("fe80...") are generated from the MAC
address of the local network adaptor, and are not guaranteed to be unique.
- \o Site-local: Addresses that are local to the site / private network
+ \li Site-local: Addresses that are local to the site / private network
(e.g., the company intranet). Site-local addresses ("fec0...") are
usually distributed by the site router, and are not guaranteed to be
unique outside of the local site.
- \o Global: For globally routable addresses, such as public servers on the
+ \li Global: For globally routable addresses, such as public servers on the
Internet.
\endlist
This function supports arguments in the form:
\list
- \o 123.123.123.123/n where n is any value between 0 and 32
- \o 123.123.123.123/255.255.255.255
- \o <ipv6-address>/n where n is any value between 0 and 128
+ \li 123.123.123.123/n where n is any value between 0 and 32
+ \li 123.123.123.123/255.255.255.255
+ \li <ipv6-address>/n where n is any value between 0 and 128
\endlist
For IP version 4, this function accepts as well missing trailing
\table
\header
- \o Proxy type
- \o Description
- \o Default capabilities
+ \li Proxy type
+ \li Description
+ \li Default capabilities
\row
- \o SOCKS 5
- \o Generic proxy for any kind of connection. Supports TCP,
+ \li SOCKS 5
+ \li Generic proxy for any kind of connection. Supports TCP,
UDP, binding to a port (incoming connections) and
authentication.
- \o TunnelingCapability, ListeningCapability,
+ \li TunnelingCapability, ListeningCapability,
UdpTunnelingCapability, HostNameLookupCapability
\row
- \o HTTP
- \o Implemented using the "CONNECT" command, supports only
+ \li HTTP
+ \li Implemented using the "CONNECT" command, supports only
outgoing TCP connections; supports authentication.
- \o TunnelingCapability, CachingCapability, HostNameLookupCapability
+ \li TunnelingCapability, CachingCapability, HostNameLookupCapability
\row
- \o Caching-only HTTP
- \o Implemented using normal HTTP commands, it is useful only
+ \li Caching-only HTTP
+ \li Implemented using normal HTTP commands, it is useful only
in the context of HTTP requests (see QNetworkAccessManager)
- \o CachingCapability, HostNameLookupCapability
+ \li CachingCapability, HostNameLookupCapability
\row
- \o Caching FTP
- \o Implemented using an FTP proxy, it is useful only in the
+ \li Caching FTP
+ \li Implemented using an FTP proxy, it is useful only in the
context of FTP requests (see QNetworkAccessManager)
- \o CachingCapability, HostNameLookupCapability
+ \li CachingCapability, HostNameLookupCapability
\endtable
the proxy:
\list
- \o the type of query
- \o the local port number to use
- \o the destination host name
- \o the destination port number
- \o the protocol name, such as "http" or "ftp"
- \o the URL being requested
+ \li the type of query
+ \li the local port number to use
+ \li the destination host name
+ \li the destination port number
+ \li the protocol name, such as "http" or "ftp"
+ \li the URL being requested
\endlist
The destination host name is the host in the connection in the
\table
\header
- \o Query type
- \o Description
+ \li Query type
+ \li Description
\row
- \o TcpSocket
- \o Normal sockets requesting a connection to a remote server,
+ \li TcpSocket
+ \li Normal sockets requesting a connection to a remote server,
like QTcpSocket. The peer hostname and peer port match the
values passed to QTcpSocket::connectToHost(). The local port
is usually -1, indicating the socket has no preference in
which port should be used. The URL component is not used.
\row
- \o UdpSocket
- \o Datagram-based sockets, which can both send and
+ \li UdpSocket
+ \li Datagram-based sockets, which can both send and
receive. The local port, remote host or remote port fields
can all be used or be left unused, depending on the
characteristics of the socket. The URL component is not used.
\row
- \o TcpServer
- \o Passive server sockets that listen on a port and await
+ \li TcpServer
+ \li Passive server sockets that listen on a port and await
incoming connections from the network. Normally, only the
local port is used, but the remote address could be used in
specific circumstances, for example to indicate which remote
host a connection is expected from. The URL component is not used.
\row
- \o UrlRequest
- \o A more high-level request, such as those coming from
+ \li UrlRequest
+ \li A more high-level request, such as those coming from
QNetworkAccessManager. These requests will inevitably use an
outgoing TCP socket, but the this query type is provided to
indicate that more detailed information is present in the URL
listed here.
\list
- \o On MacOS X, this function will ignore the Proxy Auto Configuration
+ \li On MacOS X, this function will ignore the Proxy Auto Configuration
settings, since it cannot execute the associated ECMAScript code.
- \o On Windows platforms, this function may take several seconds to
+ \li On Windows platforms, this function may take several seconds to
execute depending on the configuration of the user's system.
\endlist
*/
* proxy settings for:
*
* \list
- * \o FTP proxy
- * \o Web Proxy (HTTP)
- * \o Secure Web Proxy (HTTPS)
- * \o Streaming Proxy (RTSP)
- * \o SOCKS Proxy
- * \o Gopher Proxy
- * \o URL for Automatic Proxy Configuration (PAC scripts)
- * \o Bypass list (by default: *.local, 169.254/16)
+ * \li FTP proxy
+ * \li Web Proxy (HTTP)
+ * \li Secure Web Proxy (HTTPS)
+ * \li Streaming Proxy (RTSP)
+ * \li SOCKS Proxy
+ * \li Gopher Proxy
+ * \li URL for Automatic Proxy Configuration (PAC scripts)
+ * \li Bypass list (by default: *.local, 169.254/16)
* \endlist
*
* The matching configuration can be obtained by calling SCDynamicStoreCopyProxies
you need a socket, you have two options:
\list
- \i Instantiate QTcpSocket or QUdpSocket.
- \i Create a native socket descriptor, instantiate
+ \li Instantiate QTcpSocket or QUdpSocket.
+ \li Create a native socket descriptor, instantiate
QAbstractSocket, and call setSocketDescriptor() to wrap the
native socket.
\endlist
can be used to implement blocking sockets:
\list
- \o waitForConnected() blocks until a connection has been established.
+ \li waitForConnected() blocks until a connection has been established.
- \o waitForReadyRead() blocks until new data is available for
+ \li waitForReadyRead() blocks until new data is available for
reading.
- \o waitForBytesWritten() blocks until one payload of data has been
+ \li waitForBytesWritten() blocks until one payload of data has been
written to the socket.
- \o waitForDisconnected() blocks until the connection has closed.
+ \li waitForDisconnected() blocks until the connection has closed.
\endlist
We show an example:
Possible values for the \e{TypeOfServiceOption} are:
\table
- \header \o Value \o Description
- \row \o 224 \o Network control
- \row \o 192 \o Internetwork control
- \row \o 160 \o CRITIC/ECP
- \row \o 128 \o Flash override
- \row \o 96 \o Flash
- \row \o 64 \o Immediate
- \row \o 32 \o Priority
- \row \o 0 \o Routine
+ \header \li Value \li Description
+ \row \li 224 \li Network control
+ \row \li 192 \li Internetwork control
+ \row \li 160 \li CRITIC/ECP
+ \row \li 128 \li Flash override
+ \row \li 96 \li Flash
+ \row \li 64 \li Immediate
+ \row \li 32 \li Priority
+ \row \li 0 \li Routine
\endtable
\sa QAbstractSocket::setSocketOption(), QAbstractSocket::socketOption()
Returns true if the socket is valid and ready for use; otherwise
returns false.
- \bold{Note:} The socket's state must be ConnectedState before reading and
+ \b{Note:} The socket's state must be ConnectedState before reading and
writing can occur.
\sa state()
The socket is opened in the mode specified by \a openMode, and
enters the socket state specified by \a socketState.
- \bold{Note:} It is not possible to initialize two abstract sockets
+ \b{Note:} It is not possible to initialize two abstract sockets
with the same native socket descriptor.
\sa socketDescriptor()
allows you to establish a TCP connection and transfer streams of
data. See the QAbstractSocket documentation for details.
- \bold{Note:} TCP sockets cannot be opened in QIODevice::Unbuffered mode.
+ \b{Note:} TCP sockets cannot be opened in QIODevice::Unbuffered mode.
\sa QTcpServer, QUdpSocket, QNetworkAccessManager,
{Fortune Server Example}, {Fortune Client Example},
\table
\header
- \o Property
- \o Description
+ \li Property
+ \li Description
\row
- \o name
- \o The human readable name of the extension, eg. 'basicConstraints'.
+ \li name
+ \li The human readable name of the extension, eg. 'basicConstraints'.
\row
- \o criticality
- \o This is a boolean value indicating if the extension is critical
+ \li criticality
+ \li This is a boolean value indicating if the extension is critical
to correctly interpreting the certificate.
\row
- \o oid
- \o The ASN.1 object identifier that specifies which extension this
+ \li oid
+ \li The ASN.1 object identifier that specifies which extension this
is.
\row
- \o supported
- \o If this is true the structure of the extension's value will not
+ \li supported
+ \li If this is true the structure of the extension's value will not
change between Qt versions.
\row
- \o value
- \o A QVariant with a structure dependent on the type of extension.
+ \li value
+ \li A QVariant with a structure dependent on the type of extension.
\endtable
Whilst this class provides access to any type of extension, only
\table
\header
- \o Name
- \o OID
- \o Details
+ \li Name
+ \li OID
+ \li Details
\row
- \o basicConstraints
- \o 2.5.29.19
- \o Returned as a QVariantMap. The key 'ca' contains a boolean value,
+ \li basicConstraints
+ \li 2.5.29.19
+ \li Returned as a QVariantMap. The key 'ca' contains a boolean value,
the optional key 'pathLenConstraint' contains an integer.
\row
- \o authorityInfoAccess
- \o 1.3.6.1.5.5.7.1.1
- \o Returned as a QVariantMap. There is a key for each access method,
+ \li authorityInfoAccess
+ \li 1.3.6.1.5.5.7.1.1
+ \li Returned as a QVariantMap. There is a key for each access method,
with the value being a URI.
\row
- \o subjectKeyIdentifier
- \o 2.5.29.14
- \o Returned as a QVariant containing a QString. The string is the key
+ \li subjectKeyIdentifier
+ \li 2.5.29.14
+ \li Returned as a QVariant containing a QString. The string is the key
identifier.
\row
- \o authorityKeyIdentifier
- \o 2.5.29.35
- \o Returned as a QVariantMap. The optional key 'keyid' contains the key
+ \li authorityKeyIdentifier
+ \li 2.5.29.35
+ \li Returned as a QVariantMap. The optional key 'keyid' contains the key
identifier as a hex string stored in a QByteArray. The optional key
'serial' contains the authority key serial number as a qlonglong.
Currently there is no support for the general names field of this
The settings that QSslConfiguration currently supports are:
\list
- \o The SSL/TLS protocol to be used
- \o The certificate to be presented to the peer during connection
+ \li The SSL/TLS protocol to be used
+ \li The certificate to be presented to the peer during connection
and its associated private key
- \o The ciphers allowed to be used for encrypting the connection
- \o The list of Certificate Authorities certificates that are
+ \li The ciphers allowed to be used for encrypting the connection
+ \li The list of Certificate Authorities certificates that are
used to validate the peer's certificate
\endlist
The state that QSslConfiguration supports are:
\list
- \o The certificate the peer presented during handshake, along
+ \li The certificate the peer presented during handshake, along
with the chain leading to a CA certificate
- \o The cipher used to encrypt this session
+ \li The cipher used to encrypt this session
\endlist
The state can only be obtained once the SSL connection starts, but
The default SSL configuration consists of:
\list
- \o no local certificate and no private key
- \o protocol SecureProtocols (meaning either TLS 1.0 or SSL 3 will be used)
- \o the system's default CA certificate list
- \o the cipher list equal to the list of the SSL libraries'
+ \li no local certificate and no private key
+ \li protocol SecureProtocols (meaning either TLS 1.0 or SSL 3 will be used)
+ \li the system's default CA certificate list
+ \li the cipher list equal to the list of the SSL libraries'
supported SSL ciphers
\endlist
The following features can also be customized:
\list
- \o The socket's cryptographic cipher suite can be customized before
+ \li The socket's cryptographic cipher suite can be customized before
the handshake phase with setCiphers() and setDefaultCiphers().
- \o The socket's local certificate and private key can be customized
+ \li The socket's local certificate and private key can be customized
before the handshake phase with setLocalCertificate() and
setPrivateKey().
- \o The CA certificate database can be extended and customized with
+ \li The CA certificate database can be extended and customized with
addCaCertificate(), addCaCertificates(), setCaCertificates(),
addDefaultCaCertificate(), addDefaultCaCertificates(), and
setDefaultCaCertificates().
\snippet doc/src/snippets/code/src_network_ssl_qsslsocket.cpp 3
- \bold{Note:} The example above shows that text can be written to
+ \b{Note:} The example above shows that text can be written to
the socket immediately after requesting the encrypted connection,
before the encrypted() signal has been emitted. In such cases, the
text is queued in the object and written to the socket \e after
The socket is opened in the mode specified by \a openMode, and
enters the socket state specified by \a state.
- \bold{Note:} It is not possible to initialize two sockets with the same
+ \b{Note:} It is not possible to initialize two sockets with the same
native socket descriptor.
\sa socketDescriptor()
A display format has several characteristics:
\list
- \i \link setDoubleBuffer() Double or single buffering.\endlink
- \i \link setDepth() Depth buffer.\endlink
- \i \link setRgba() RGBA or color index mode.\endlink
- \i \link setAlpha() Alpha channel.\endlink
- \i \link setAccum() Accumulation buffer.\endlink
- \i \link setStencil() Stencil buffer.\endlink
- \i \link setStereo() Stereo buffers.\endlink
- \i \link setDirectRendering() Direct rendering.\endlink
- \i \link setOverlay() Presence of an overlay.\endlink
- \i \link setPlane() Plane of an overlay.\endlink
- \i \link setSampleBuffers() Multisample buffers.\endlink
+ \li \link setDoubleBuffer() Double or single buffering.\endlink
+ \li \link setDepth() Depth buffer.\endlink
+ \li \link setRgba() RGBA or color index mode.\endlink
+ \li \link setAlpha() Alpha channel.\endlink
+ \li \link setAccum() Accumulation buffer.\endlink
+ \li \link setStencil() Stencil buffer.\endlink
+ \li \link setStereo() Stereo buffers.\endlink
+ \li \link setDirectRendering() Direct rendering.\endlink
+ \li \link setOverlay() Presence of an overlay.\endlink
+ \li \link setPlane() Plane of an overlay.\endlink
+ \li \link setSampleBuffers() Multisample buffers.\endlink
\endlist
You can also specify preferred bit depths for the color buffer,
/*!
Constructs a QGLFormat object with the following default settings:
\list
- \i \link setDoubleBuffer() Double buffer:\endlink Enabled.
- \i \link setDepth() Depth buffer:\endlink Enabled.
- \i \link setRgba() RGBA:\endlink Enabled (i.e., color index disabled).
- \i \link setAlpha() Alpha channel:\endlink Disabled.
- \i \link setAccum() Accumulator buffer:\endlink Disabled.
- \i \link setStencil() Stencil buffer:\endlink Enabled.
- \i \link setStereo() Stereo:\endlink Disabled.
- \i \link setDirectRendering() Direct rendering:\endlink Enabled.
- \i \link setOverlay() Overlay:\endlink Disabled.
- \i \link setPlane() Plane:\endlink 0 (i.e., normal plane).
- \i \link setSampleBuffers() Multisample buffers:\endlink Disabled.
+ \li \link setDoubleBuffer() Double buffer:\endlink Enabled.
+ \li \link setDepth() Depth buffer:\endlink Enabled.
+ \li \link setRgba() RGBA:\endlink Enabled (i.e., color index disabled).
+ \li \link setAlpha() Alpha channel:\endlink Disabled.
+ \li \link setAccum() Accumulator buffer:\endlink Disabled.
+ \li \link setStencil() Stencil buffer:\endlink Enabled.
+ \li \link setStereo() Stereo:\endlink Disabled.
+ \li \link setDirectRendering() Direct rendering:\endlink Enabled.
+ \li \link setOverlay() Overlay:\endlink Disabled.
+ \li \link setPlane() Plane:\endlink 0 (i.e., normal plane).
+ \li \link setSampleBuffers() Multisample buffers:\endlink Disabled.
\endlist
*/
The default overlay format is:
\list
- \i \link setDoubleBuffer() Double buffer:\endlink Disabled.
- \i \link setDepth() Depth buffer:\endlink Disabled.
- \i \link setRgba() RGBA:\endlink Disabled (i.e., color index enabled).
- \i \link setAlpha() Alpha channel:\endlink Disabled.
- \i \link setAccum() Accumulator buffer:\endlink Disabled.
- \i \link setStencil() Stencil buffer:\endlink Disabled.
- \i \link setStereo() Stereo:\endlink Disabled.
- \i \link setDirectRendering() Direct rendering:\endlink Enabled.
- \i \link setOverlay() Overlay:\endlink Disabled.
- \i \link setSampleBuffers() Multisample buffers:\endlink Disabled.
- \i \link setPlane() Plane:\endlink 1 (i.e., first overlay plane).
+ \li \link setDoubleBuffer() Double buffer:\endlink Disabled.
+ \li \link setDepth() Depth buffer:\endlink Disabled.
+ \li \link setRgba() RGBA:\endlink Disabled (i.e., color index enabled).
+ \li \link setAlpha() Alpha channel:\endlink Disabled.
+ \li \link setAccum() Accumulator buffer:\endlink Disabled.
+ \li \link setStencil() Stencil buffer:\endlink Disabled.
+ \li \link setStereo() Stereo:\endlink Disabled.
+ \li \link setDirectRendering() Direct rendering:\endlink Enabled.
+ \li \link setOverlay() Overlay:\endlink Disabled.
+ \li \link setSampleBuffers() Multisample buffers:\endlink Disabled.
+ \li \link setPlane() Plane:\endlink 1 (i.e., first overlay plane).
\endlist
\sa setDefaultFormat()
This function supports the following use cases:
\list
- \i On OpenGL and OpenGL ES 1.x it draws the given texture, \a textureId,
+ \li On OpenGL and OpenGL ES 1.x it draws the given texture, \a textureId,
to the given target rectangle, \a target, in OpenGL model space. The
\a textureTarget should be a 2D texture target.
- \i On OpenGL and OpenGL ES 2.x, if a painter is active, not inside a
+ \li On OpenGL and OpenGL ES 2.x, if a painter is active, not inside a
beginNativePainting / endNativePainting block, and uses the
engine with type QPaintEngine::OpenGL2, the function will draw the given
texture, \a textureId, to the given target rectangle, \a target,
This function supports the following use cases:
\list
- \i By default it draws the given texture, \a textureId,
+ \li By default it draws the given texture, \a textureId,
at the given \a point in OpenGL model space. The
\a textureTarget should be a 2D texture target.
- \i If a painter is active, not inside a
+ \li If a painter is active, not inside a
beginNativePainting / endNativePainting block, and uses the
engine with type QPaintEngine::OpenGL2, the function will draw the given
texture, \a textureId, at the given \a point,
/*! \fn int QGLContext::choosePixelFormat(void* dummyPfd, HDC pdc)
- \bold{Win32 only:} This virtual function chooses a pixel format
+ \b{Win32 only:} This virtual function chooses a pixel format
that matches the OpenGL \link setFormat() format\endlink.
Reimplement this function in a subclass if you need a custom
context.
/*! \fn void *QGLContext::chooseVisual()
- \bold{X11 only:} This virtual function tries to find a visual that
+ \b{X11 only:} This virtual function tries to find a visual that
matches the format, reducing the demands if the original request
cannot be met.
/*! \fn void *QGLContext::tryVisual(const QGLFormat& f, int bufDepth)
\internal
- \bold{X11 only:} This virtual function chooses a visual that matches
+ \b{X11 only:} This virtual function chooses a visual that matches
the OpenGL \link format() format\endlink. Reimplement this function
in a subclass if you need a custom visual.
reimplement in your subclass to perform the typical OpenGL tasks:
\list
- \i paintGL() - Renders the OpenGL scene. Gets called whenever the widget
+ \li paintGL() - Renders the OpenGL scene. Gets called whenever the widget
needs to be updated.
- \i resizeGL() - Sets up the OpenGL viewport, projection, etc. Gets
+ \li resizeGL() - Sets up the OpenGL viewport, projection, etc. Gets
called whenever the widget has been resized (and also when it
is shown for the first time because all newly created widgets get a
resize event automatically).
- \i initializeGL() - Sets up the OpenGL rendering context, defines display
+ \li initializeGL() - Sets up the OpenGL rendering context, defines display
lists, etc. Gets called once before the first time resizeGL() or
paintGL() is called.
\endlist
implement some or all of these virtual methods:
\list
- \i paintOverlayGL()
- \i resizeOverlayGL()
- \i initializeOverlayGL()
+ \li paintOverlayGL()
+ \li resizeOverlayGL()
+ \li initializeOverlayGL()
\endlist
These methods work in the same way as the normal paintGL() etc.
following way:
\list
- \o Reimplement the QGLWidget::initializeGL() and QGLWidget::resizeGL() to
+ \li Reimplement the QGLWidget::initializeGL() and QGLWidget::resizeGL() to
set up the OpenGL state and provide a perspective transformation.
- \o Reimplement QGLWidget::paintGL() to paint the 3D scene, calling only
+ \li Reimplement QGLWidget::paintGL() to paint the 3D scene, calling only
OpenGL functions to draw on the widget.
\endlist
to reimplement QGLWidget::paintEvent() and do the following:
\list
- \o Construct a QPainter object.
- \o Initialize it for use on the widget with the QPainter::begin() function.
- \o Draw primitives using QPainter's member functions.
- \o Call QPainter::end() to finish painting.
+ \li Construct a QPainter object.
+ \li Initialize it for use on the widget with the QPainter::begin() function.
+ \li Draw primitives using QPainter's member functions.
+ \li Call QPainter::end() to finish painting.
\endlist
Overpainting 2D content on top of 3D content takes a little more effort.
As of Qt version 4.8, support for doing threaded GL rendering has
been improved. There are three scenarios that we currently support:
\list
- \o 1. Buffer swapping in a thread.
+ \li 1. Buffer swapping in a thread.
Swapping buffers in a double buffered context may be a
synchronous, locking call that may be a costly operation in some
having the main thread wait while the GPU finishes the swap
operation. Note that this is highly implementation dependent.
- \o 2. Texture uploading in a thread.
+ \li 2. Texture uploading in a thread.
Doing texture uploads in a thread may be very useful for
applications handling large amounts of images that needs to be
thread. For each texture that is bound via bindTexture(), notify
the main thread so that it can start using the texture.
- \o 3. Using QPainter to draw into a QGLWidget in a thread.
+ \li 3. Using QPainter to draw into a QGLWidget in a thread.
In Qt 4.8, it is possible to draw into a QGLWidget using a
QPainter in a separate thread. Note that this is also possible for
A framebuffer object has several characteristics:
\list
- \i \link setSamples() Number of samples per pixels.\endlink
- \i \link setAttachment() Depth and/or stencil attachments.\endlink
- \i \link setTextureTarget() Texture target.\endlink
- \i \link setInternalTextureFormat() Internal texture format.\endlink
+ \li \link setSamples() Number of samples per pixels.\endlink
+ \li \link setAttachment() Depth and/or stencil attachments.\endlink
+ \li \link setTextureTarget() Texture target.\endlink
+ \li \link setInternalTextureFormat() Internal texture format.\endlink
\endlist
Note that the desired attachments or number of samples per pixels might not
generates a 2D GL texture (using the \c{GL_TEXTURE_2D} target),
which is used as the internal rendering target.
- \bold{It is important to have a current GL context when creating a
+ \b{It is important to have a current GL context when creating a
QGLFramebufferObject, otherwise initialization will fail.}
OpenGL framebuffer objects and pbuffers (see
using framebuffer objects instead of pbuffers:
\list 1
- \o A framebuffer object does not require a separate rendering
+ \li A framebuffer object does not require a separate rendering
context, so no context switching will occur when switching
rendering targets. There is an overhead involved in switching
targets, but in general it is cheaper than a context switch to a
pbuffer.
- \o Rendering to dynamic textures (i.e. render-to-texture
+ \li Rendering to dynamic textures (i.e. render-to-texture
functionality) works on all platforms. No need to do explicit copy
calls from a render buffer into a texture, as was necessary on
systems that did not support the \c{render_texture} extension.
- \o It is possible to attach several rendering buffers (or texture
+ \li It is possible to attach several rendering buffers (or texture
objects) to the same framebuffer object, and render to all of them
without doing a context switch.
- \o The OpenGL framebuffer extension is a pure GL extension with no
+ \li The OpenGL framebuffer extension is a pure GL extension with no
system dependant WGL, CGL, or GLX parts. This makes using
framebuffer objects more portable.
\endlist
There are three approaches to using this class:
\list 1
- \o \bold{We can draw into the pbuffer and convert it to a QImage
+ \li \b{We can draw into the pbuffer and convert it to a QImage
using toImage().} This is normally much faster than calling
QGLWidget::renderPixmap().
- \o \bold{We can draw into the pbuffer and copy the contents into
+ \li \b{We can draw into the pbuffer and copy the contents into
an OpenGL texture using updateDynamicTexture().} This allows
us to create dynamic textures and works on all systems
with pbuffer support.
- \o \bold{On systems that support it, we can bind the pbuffer to
+ \li \b{On systems that support it, we can bind the pbuffer to
an OpenGL texture.} The texture is then updated automatically
when the pbuffer contents change, eliminating the need for
additional copy operations. This is supported only on Windows
of QGuiApplication:
\list
- \o \c fontengine=native Indicates that the freetype font
+ \li \c fontengine=native Indicates that the freetype font
engine should not be used.
- \o \c gl=gdi Indicates that ARB Open GL functionality should not be used
+ \li \c gl=gdi Indicates that ARB Open GL functionality should not be used
\endlist
\section1 Tips
\list
- \o The environment variable \c QT_LIGHTHOUSE_WINDOWS_VERBOSE controls
+ \li The environment variable \c QT_LIGHTHOUSE_WINDOWS_VERBOSE controls
the debug level. It takes the form
\c{<keyword1>:<level1>,<keyword2>:<level2>}, where
keyword is one of \c integration, \c windows, \c backingstore and
There 2 types of native dialogs:
\list
- \o Dialogs provided by the Comdlg32 library (ChooseColor,
+ \li Dialogs provided by the Comdlg32 library (ChooseColor,
ChooseFont). They only provide a modal, blocking
function call (with idle processing).
- \o File dialogs are classes derived from IFileDialog. They
+ \li File dialogs are classes derived from IFileDialog. They
inherit IModalWindow and their exec() method (calling
IModalWindow::Show()) is similarly blocking, but methods
like close() can be called on them from event handlers.
\section1 Testing
\list
- \o Install the East Asian language support and choose Japanese (say).
- \o Compile the \a mainwindows/mdi example and open a text window.
- \o In the language bar, switch to Japanese and choose the
+ \li Install the East Asian language support and choose Japanese (say).
+ \li Compile the \a mainwindows/mdi example and open a text window.
+ \li In the language bar, switch to Japanese and choose the
Input method 'Hiragana'.
- \o In a text editor control, type the syllable \a 'la'.
+ \li In a text editor control, type the syllable \a 'la'.
Underlined characters show up, indicating that there is completion
available. Press the Space key two times. A completion popup occurs
which shows the options.
Currently implemented keys
\list
- \o handle (HWND)
- \o getDC (DC)
- \o releaseDC Releases the previously acquired DC and returns 0.
+ \li handle (HWND)
+ \li getDC (DC)
+ \li releaseDC Releases the previously acquired DC and returns 0.
\endlist
\ingroup qt-lighthouse-win
Qt has predefined support for the following Windows Clipboard formats:
\table
- \header \o Windows Format \o Equivalent MIME type
- \row \o \c CF_UNICODETEXT \o \c text/plain
- \row \o \c CF_TEXT \o \c text/plain
- \row \o \c CF_DIB \o \c{image/xyz}, where \c xyz is
+ \header \li Windows Format \li Equivalent MIME type
+ \row \li \c CF_UNICODETEXT \li \c text/plain
+ \row \li \c CF_TEXT \li \c text/plain
+ \row \li \c CF_DIB \li \c{image/xyz}, where \c xyz is
a \l{QImageWriter::supportedImageFormats()}{Qt image format}
- \row \o \c CF_HDROP \o \c text/uri-list
- \row \o \c CF_INETURL \o \c text/uri-list
- \row \o \c CF_HTML \o \c text/html
+ \row \li \c CF_HDROP \li \c text/uri-list
+ \row \li \c CF_INETURL \li \c text/uri-list
+ \row \li \c CF_HTML \li \c text/html
\endtable
An example use of this class would be to map the Windows Metafile
The following methods are NOT supported for data transfer using the
clipboard or drag-drop:
\list
- \o IDataObject::SetData -- return E_NOTIMPL
- \o IDataObject::DAdvise -- return OLE_E_ADVISENOTSUPPORTED
- \o ::DUnadvise
- \o ::EnumDAdvise
- \o IDataObject::GetCanonicalFormatEtc -- return E_NOTIMPL
+ \li IDataObject::SetData -- return E_NOTIMPL
+ \li IDataObject::DAdvise -- return OLE_E_ADVISENOTSUPPORTED
+ \li ::DUnadvise
+ \li ::EnumDAdvise
+ \li IDataObject::GetCanonicalFormatEtc -- return E_NOTIMPL
(NOTE: must set pformatetcOut->ptd = NULL)
\endlist
Window creation is split in 3 steps:
\list
- \o fromWindow() Gather all required information
- \o create() Create the system handle.
- \o initialize() Post creation initialization steps.
+ \li fromWindow() Gather all required information
+ \li create() Create the system handle.
+ \li initialize() Post creation initialization steps.
\endlist
The reason for this split is to also enable changing the QWindowFlags
by calling:
\list
- \o fromWindow() Gather information and determine new system styles
- \o applyWindowFlags() to apply the new window system styles.
- \o initialize() Post creation initialization steps.
+ \li fromWindow() Gather information and determine new system styles
+ \li applyWindowFlags() to apply the new window system styles.
+ \li initialize() Post creation initialization steps.
\endlist
Contains the window creation code formerly in qwidget_win.cpp.
\brief Raster or OpenGL Window.
\list
- \o Raster type: handleWmPaint() is implemented to
+ \li Raster type: handleWmPaint() is implemented to
to bitblt the image. The DC can be accessed
via getDC/Relase DC, which has a special handling
when within a paint event (in that case, the DC obtained
from BeginPaint() is returned).
- \o Open GL: The first time QWindowsGLContext accesses
+ \li Open GL: The first time QWindowsGLContext accesses
the handle, it sets up the pixelformat on the DC
which in turn sets it on the window (see flag
PixelFormatInitialized).
\table
\row
- \o \inlineimage plastique-printdialog.png
- \o \inlineimage plastique-printdialog-properties.png
+ \li \inlineimage plastique-printdialog.png
+ \li \inlineimage plastique-printdialog-properties.png
\endtable
The printer dialog (shown above in Plastique style) enables access to common
straightforward:
\list 1
- \o Create the QPrintPreviewDialog.
+ \li Create the QPrintPreviewDialog.
You can construct a QPrintPreviewDialog with an existing QPrinter
object, or you can have QPrintPreviewDialog create one for you,
which will be the system default printer.
- \o Connect the paintRequested() signal to a slot.
+ \li Connect the paintRequested() signal to a slot.
When the dialog needs to generate a set of preview pages, the
paintRequested() signal will be emitted. You can use the exact
signal, where you draw onto the QPrinter object that is passed
into the slot.
- \o Call exec().
+ \li Call exec().
Call QPrintPreviewDialog::exec() to show the preview dialog.
\endlist
The most important parameters are:
\list
- \i setOrientation() tells QPrinter which page orientation to use.
- \i setPaperSize() tells QPrinter what paper size to expect from the
+ \li setOrientation() tells QPrinter which page orientation to use.
+ \li setPaperSize() tells QPrinter what paper size to expect from the
printer.
- \i setResolution() tells QPrinter what resolution you wish the
+ \li setResolution() tells QPrinter what resolution you wish the
printer to provide, in dots per inch (DPI).
- \i setFullPage() tells QPrinter whether you want to deal with the
+ \li setFullPage() tells QPrinter whether you want to deal with the
full page or just with the part the printer can draw on.
- \i setCopyCount() tells QPrinter how many copies of the document
+ \li setCopyCount() tells QPrinter how many copies of the document
it should print.
\endlist
Using QPrintPreviewWidget is straightforward:
\list 1
- \o Create the QPrintPreviewWidget
+ \li Create the QPrintPreviewWidget
Construct the QPrintPreviewWidget either by passing in an
existing QPrinter object, or have QPrintPreviewWidget create a
default constructed QPrinter object for you.
- \o Connect the paintRequested() signal to a slot.
+ \li Connect the paintRequested() signal to a slot.
When the widget needs to generate a set of preview pages, a
paintRequested() signal will be emitted from the widget. Connect a
The currently available driver types are:
\table
- \header \i Driver Type \i Description
- \row \i QDB2 \i IBM DB2
- \row \i QIBASE \i Borland InterBase Driver
- \row \i QMYSQL \i MySQL Driver
- \row \i QOCI \i Oracle Call Interface Driver
- \row \i QODBC \i ODBC Driver (includes Microsoft SQL Server)
- \row \i QPSQL \i PostgreSQL Driver
- \row \i QSQLITE \i SQLite version 3 or above
- \row \i QSQLITE2 \i SQLite version 2
- \row \i QTDS \i Sybase Adaptive Server
+ \header \li Driver Type \li Description
+ \row \li QDB2 \li IBM DB2
+ \row \li QIBASE \li Borland InterBase Driver
+ \row \li QMYSQL \li MySQL Driver
+ \row \li QOCI \li Oracle Call Interface Driver
+ \row \li QODBC \li ODBC Driver (includes Microsoft SQL Server)
+ \row \li QPSQL \li PostgreSQL Driver
+ \row \li QSQLITE \li SQLite version 3 or above
+ \row \li QSQLITE2 \li SQLite version 2
+ \row \li QTDS \li Sybase Adaptive Server
\endtable
Additional third party drivers, including your own custom
database client used:
\table
- \header \i ODBC \i MySQL \i PostgreSQL
+ \header \li ODBC \li MySQL \li PostgreSQL
\row
- \i
+ \li
\list
- \i SQL_ATTR_ACCESS_MODE
- \i SQL_ATTR_LOGIN_TIMEOUT
- \i SQL_ATTR_CONNECTION_TIMEOUT
- \i SQL_ATTR_CURRENT_CATALOG
- \i SQL_ATTR_METADATA_ID
- \i SQL_ATTR_PACKET_SIZE
- \i SQL_ATTR_TRACEFILE
- \i SQL_ATTR_TRACE
- \i SQL_ATTR_CONNECTION_POOLING
- \i SQL_ATTR_ODBC_VERSION
+ \li SQL_ATTR_ACCESS_MODE
+ \li SQL_ATTR_LOGIN_TIMEOUT
+ \li SQL_ATTR_CONNECTION_TIMEOUT
+ \li SQL_ATTR_CURRENT_CATALOG
+ \li SQL_ATTR_METADATA_ID
+ \li SQL_ATTR_PACKET_SIZE
+ \li SQL_ATTR_TRACEFILE
+ \li SQL_ATTR_TRACE
+ \li SQL_ATTR_CONNECTION_POOLING
+ \li SQL_ATTR_ODBC_VERSION
\endlist
- \i
+ \li
\list
- \i CLIENT_COMPRESS
- \i CLIENT_FOUND_ROWS
- \i CLIENT_IGNORE_SPACE
- \i CLIENT_SSL
- \i CLIENT_ODBC
- \i CLIENT_NO_SCHEMA
- \i CLIENT_INTERACTIVE
- \i UNIX_SOCKET
- \i MYSQL_OPT_RECONNECT
+ \li CLIENT_COMPRESS
+ \li CLIENT_FOUND_ROWS
+ \li CLIENT_IGNORE_SPACE
+ \li CLIENT_SSL
+ \li CLIENT_ODBC
+ \li CLIENT_NO_SCHEMA
+ \li CLIENT_INTERACTIVE
+ \li UNIX_SOCKET
+ \li MYSQL_OPT_RECONNECT
\endlist
- \i
+ \li
\list
- \i connect_timeout
- \i options
- \i tty
- \i requiressl
- \i service
+ \li connect_timeout
+ \li options
+ \li tty
+ \li requiressl
+ \li service
\endlist
- \header \i DB2 \i OCI \i TDS
+ \header \li DB2 \li OCI \li TDS
\row
- \i
+ \li
\list
- \i SQL_ATTR_ACCESS_MODE
- \i SQL_ATTR_LOGIN_TIMEOUT
+ \li SQL_ATTR_ACCESS_MODE
+ \li SQL_ATTR_LOGIN_TIMEOUT
\endlist
- \i
+ \li
\list
- \i OCI_ATTR_PREFETCH_ROWS
- \i OCI_ATTR_PREFETCH_MEMORY
+ \li OCI_ATTR_PREFETCH_ROWS
+ \li OCI_ATTR_PREFETCH_MEMORY
\endlist
- \i
+ \li
\e none
- \header \i SQLite \i Interbase
+ \header \li SQLite \li Interbase
\row
- \i
+ \li
\list
- \i QSQLITE_BUSY_TIMEOUT
- \i QSQLITE_OPEN_READONLY
- \i QSQLITE_ENABLE_SHARED_CACHE
+ \li QSQLITE_BUSY_TIMEOUT
+ \li QSQLITE_OPEN_READONLY
+ \li QSQLITE_ENABLE_SHARED_CACHE
\endlist
- \i
+ \li
\list
- \i ISC_DPB_LC_CTYPE
- \i ISC_DPB_SQL_ROLE_NAME
+ \li ISC_DPB_LC_CTYPE
+ \li ISC_DPB_SQL_ROLE_NAME
\endlist
\endtable
and their constructor arguments:
\table
- \header \i Driver \i Class name \i Constructor arguments \i File to include
+ \header \li Driver \li Class name \li Constructor arguments \li File to include
\row
- \i QPSQL
- \i QPSQLDriver
- \i PGconn *connection
- \i \c qsql_psql.cpp
+ \li QPSQL
+ \li QPSQLDriver
+ \li PGconn *connection
+ \li \c qsql_psql.cpp
\row
- \i QMYSQL
- \i QMYSQLDriver
- \i MYSQL *connection
- \i \c qsql_mysql.cpp
+ \li QMYSQL
+ \li QMYSQLDriver
+ \li MYSQL *connection
+ \li \c qsql_mysql.cpp
\row
- \i QOCI
- \i QOCIDriver
- \i OCIEnv *environment, OCISvcCtx *serviceContext
- \i \c qsql_oci.cpp
+ \li QOCI
+ \li QOCIDriver
+ \li OCIEnv *environment, OCISvcCtx *serviceContext
+ \li \c qsql_oci.cpp
\row
- \i QODBC
- \i QODBCDriver
- \i SQLHANDLE environment, SQLHANDLE connection
- \i \c qsql_odbc.cpp
+ \li QODBC
+ \li QODBCDriver
+ \li SQLHANDLE environment, SQLHANDLE connection
+ \li \c qsql_odbc.cpp
\row
- \i QDB2
- \i QDB2
- \i SQLHANDLE environment, SQLHANDLE connection
- \i \c qsql_db2.cpp
+ \li QDB2
+ \li QDB2
+ \li SQLHANDLE environment, SQLHANDLE connection
+ \li \c qsql_db2.cpp
\row
- \i QTDS
- \i QTDSDriver
- \i LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName
- \i \c qsql_tds.cpp
+ \li QTDS
+ \li QTDSDriver
+ \li LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName
+ \li \c qsql_tds.cpp
\row
- \i QSQLITE
- \i QSQLiteDriver
- \i sqlite *connection
- \i \c qsql_sqlite.cpp
+ \li QSQLITE
+ \li QSQLiteDriver
+ \li sqlite *connection
+ \li \c qsql_sqlite.cpp
\row
- \i QIBASE
- \i QIBaseDriver
- \i isc_db_handle connection
- \i \c qsql_ibase.cpp
+ \li QIBASE
+ \li QIBaseDriver
+ \li isc_db_handle connection
+ \li \c qsql_ibase.cpp
\endtable
The host name (or service name) is needed when constructing the
\list
- \i If \a field is character data, the value is returned enclosed
+ \li If \a field is character data, the value is returned enclosed
in single quotation marks, which is appropriate for many SQL
databases. Any embedded single-quote characters are escaped
(replaced with two single-quote characters). If \a trimStrings is
true (the default is false), all trailing whitespace is trimmed
from the field.
- \i If \a field is date/time data, the value is formatted in ISO
+ \li If \a field is date/time data, the value is formatted in ISO
format and enclosed in single quotation marks. If the date/time
data is invalid, "NULL" is returned.
- \i If \a field is \link QByteArray bytearray\endlink data, and the
+ \li If \a field is \link QByteArray bytearray\endlink data, and the
driver can edit binary fields, the value is formatted as a
hexadecimal string.
- \i For any other field type, toString() is called on its value
+ \li For any other field type, toString() is called on its value
and the result of this is returned.
\endlist
Navigating records is performed with the following functions:
\list
- \o next()
- \o previous()
- \o first()
- \o last()
- \o seek()
+ \li next()
+ \li previous()
+ \li first()
+ \li last()
+ \li seek()
\endlist
These functions allow the programmer to move forward, backward
different binding approaches, as well as one example of binding
values to a stored procedure.
- \bold{Named binding using named placeholders:}
+ \b{Named binding using named placeholders:}
\snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 9
- \bold{Positional binding using named placeholders:}
+ \b{Positional binding using named placeholders:}
\snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 10
- \bold{Binding values using positional placeholders (version 1):}
+ \b{Binding values using positional placeholders (version 1):}
\snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 11
- \bold{Binding values using positional placeholders (version 2):}
+ \b{Binding values using positional placeholders (version 2):}
\snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 12
- \bold{Binding values to a stored procedure:}
+ \b{Binding values to a stored procedure:}
This code calls a stored procedure called \c AsciiToInt(), passing
it a character through its in parameter, and taking its result in
\list
- \o If \a index is negative, the result is positioned before the
+ \li If \a index is negative, the result is positioned before the
first record and false is returned.
- \o Otherwise, an attempt is made to move to the record at position
+ \li Otherwise, an attempt is made to move to the record at position
\a index. If the record at position \a index could not be retrieved,
the result is positioned after the last record and false is
returned. If the record is successfully retrieved, true is returned.
\list
- \o If the result is currently positioned before the first record or
+ \li If the result is currently positioned before the first record or
on the first record, and \a index is negative, there is no change,
and false is returned.
- \o If the result is currently located after the last record, and \a
+ \li If the result is currently located after the last record, and \a
index is positive, there is no change, and false is returned.
- \o If the result is currently located somewhere in the middle, and
+ \li If the result is currently located somewhere in the middle, and
the relative offset \a index moves the result below zero, the result
is positioned before the first record and false is returned.
- \o Otherwise, an attempt is made to move to the record \a index
+ \li Otherwise, an attempt is made to move to the record \a index
records ahead of the current record (or \a index records behind the
current record if \a index is negative). If the record at offset \a
index could not be retrieved, the result is positioned after the
\list
- \o If the result is currently located before the first record,
+ \li If the result is currently located before the first record,
e.g. immediately after a query is executed, an attempt is made to
retrieve the first record.
- \o If the result is currently located after the last record, there
+ \li If the result is currently located after the last record, there
is no change and false is returned.
- \o If the result is located somewhere in the middle, an attempt is
+ \li If the result is located somewhere in the middle, an attempt is
made to retrieve the next record.
\endlist
\list
- \o If the result is currently located before the first record, there
+ \li If the result is currently located before the first record, there
is no change and false is returned.
- \o If the result is currently located after the last record, an
+ \li If the result is currently located after the last record, an
attempt is made to retrieve the last record.
- \o If the result is somewhere in the middle, an attempt is made to
+ \li If the result is somewhere in the middle, an attempt is made to
retrieve the previous record.
\endlist
columns to be set as foreign keys into other database tables.
\table
- \row \o \inlineimage noforeignkeys.png
- \o \inlineimage foreignkeys.png
+ \row \li \inlineimage noforeignkeys.png
+ \li \inlineimage foreignkeys.png
\endtable
The screenshot on the left shows a plain QSqlTableModel in a
Notes:
\list
- \o The table must have a primary key declared.
- \o The table's primary key may not contain a relation to
+ \li The table must have a primary key declared.
+ \li The table's primary key may not contain a relation to
another table.
- \o If a relational table contains keys that refer to non-existent
+ \li If a relational table contains keys that refer to non-existent
rows in the referenced table, the rows containing the invalid
keys will not be exposed through the model. The user or the
database is responsible for keeping referential integrity.
- \o If a relation's display column name is also used as a column
+ \li If a relation's display column name is also used as a column
name in the main table, or if it is used as display column
name in more than one relation it will be aliased. The alias is
is the relation's table name and display column name joined
QSqlRelation, so QSqlRelation::displayColumn() will return the
original display column name, but QSqlRecord::fieldName() will
return aliases.
- \o When using setData() the role should always be Qt::EditRole,
+ \li When using setData() the role should always be Qt::EditRole,
and when using data() the role should always be Qt::DisplayRole.
\endlist
\snippet doc/src/snippets/code/doc_src_qsignalspy.cpp 1
- \bold {Note:} Non-standard data types need to be registered, using
+ \b {Note:} Non-standard data types need to be registered, using
the qRegisterMetaType() function, before you can create a
QSignalSpy. For example:
true, execution continues. If not, a failure is recorded in the test log
and the test won't be executed further.
- \bold {Note:} This macro can only be used in a test function that is invoked
+ \b {Note:} This macro can only be used in a test function that is invoked
by the test framework.
Example:
\c aString and \c expected are variables on the stack that are initialized with
the current test data.
- \bold {Note:} This macro can only be used in a test function that is invoked
+ \b {Note:} This macro can only be used in a test function that is invoked
by the test framework. The test function must have a _data function.
*/
This macro can be used to force a test failure. The test stops
executing and the failure \a message is appended to the test log.
- \bold {Note:} This macro can only be used in a test function that is invoked
+ \b {Note:} This macro can only be used in a test function that is invoked
by the test framework.
Example:
If called from initTestCase() or initTestCase_data(), the QSKIP() macro will
skip all test and _data functions.
- \bold {Note:} This macro can only be used in a test function or _data
+ \b {Note:} This macro can only be used in a test function or _data
function that is invoked by the test framework.
Example:
\a mode is a \l QTest::TestFailMode and sets whether the test should
continue to execute or not.
- \bold {Note:} This macro can only be used in a test function that is invoked
+ \b {Note:} This macro can only be used in a test function that is invoked
by the test framework.
Example 1:
resolves to an existing file or directory:
\list
- \o \a filename relative to QCoreApplication::applicationDirPath()
+ \li \a filename relative to QCoreApplication::applicationDirPath()
(only if a QCoreApplication or QApplication object has been created).
- \o \a filename relative to the test's standard install directory
+ \li \a filename relative to the test's standard install directory
(QLibraryInfo::TestsPath with the lowercased testcase name appended).
- \o \a filename relative to the directory containing the source file from which
+ \li \a filename relative to the directory containing the source file from which
QFINDTESTDATA is invoked.
\endlist
The testdata file will be resolved as the first existing file from:
\list
- \o \c{/home/user/build/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml}
- \o \c{/usr/local/Qt-5.0.0/tests/tst_myxmlparser/testxml/simple1.xml}
- \o \c{/home/user/sources/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml}
+ \li \c{/home/user/build/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml}
+ \li \c{/usr/local/Qt-5.0.0/tests/tst_myxmlparser/testxml/simple1.xml}
+ \li \c{/home/user/sources/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml}
\endlist
This allows the test to find its testdata regardless of whether the
test has been installed, and regardless of whether the test's build tree
is equal to the test's source tree.
- \bold {Note:} reliable detection of testdata from the source directory requires
+ \b {Note:} reliable detection of testdata from the source directory requires
either that qmake is used, or the \c{QT_TESTCASE_BUILDDIR} macro is defined to
point to the working directory from which the compiler is invoked, or only
absolute paths to the source files are passed to the compiler. Otherwise, the
Similarly, if qmake is used and the configuration includes \c{QT += gui}, then
\c QT_GUI_LIB will be defined automatically.
- \bold {Note:} On platforms that have keypad navigation enabled by default,
+ \b {Note:} On platforms that have keypad navigation enabled by default,
this macro will forcefully disable it if \c QT_WIDGETS_LIB is defined. This is done
to simplify the usage of key events when writing autotests. If you wish to write a
test case that uses keypad navigation, you should enable it either in the
Simulates pressing a \a key with an optional \a modifier on a \a widget. If \a delay
is larger than 0, the test will wait for \a delay milliseconds before pressing the key.
- \bold {Note:} At some point you should release the key using \l keyRelease().
+ \b {Note:} At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
If \a delay is larger than 0, the test will wait for \a delay milliseconds
before pressing the key.
- \bold {Note:} At some point you should release the key using \l keyRelease().
+ \b {Note:} At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
You can add specializations of this function to your test to enable
verbose output.
- \bold {Note:} The caller of toString() must delete the returned data
+ \b {Note:} The caller of toString() must delete the returned data
using \c{delete[]}. Your implementation should return a string
created with \c{new[]} or qstrdup().
test log. If the test finished and the \a message was not outputted,
a test failure is appended to the test log.
- \bold {Note:} Invoking this function will only ignore one message.
+ \b {Note:} Invoking this function will only ignore one message.
If the message you want to ignore is outputted twice, you have to
call ignoreMessage() twice, too.
Example:
\snippet doc/src/snippets/code/src_qtestlib_qtestcase.cpp 20
- \bold {Note:} This macro can only be used in a test's data function
+ \b {Note:} This macro can only be used in a test's data function
that is invoked by the test framework.
See \l {Chapter 2: Data Driven Testing}{Data Driven Testing} for
To add custom types to the testdata, the type must be registered with
QMetaType via \l Q_DECLARE_METATYPE().
- \bold {Note:} This macro can only be used in a test's data function
+ \b {Note:} This macro can only be used in a test's data function
that is invoked by the test framework.
See \l {Chapter 2: Data Driven Testing}{Data Driven Testing} for
\a ms must be greater than 0.
- \bold {Note:} The qSleep() function calls either \c nanosleep() on
+ \b {Note:} The qSleep() function calls either \c nanosleep() on
unix or \c Sleep() on windows, so the accuracy of time spent in
qSleep() depends on the operating system.
\section1 Modal Dialogs
- A \bold{modal} dialog is a dialog that blocks input to other
+ A \b{modal} dialog is a dialog that blocks input to other
visible windows in the same application. Dialogs that are used to
request a file name from the user or that are used to set
application preferences are usually modal. Dialogs can be
\section1 Modeless Dialogs
- A \bold{modeless} dialog is a dialog that operates
+ A \b{modeless} dialog is a dialog that operates
independently of other windows in the same application. Find and
replace dialogs in word-processors are often modeless to allow the
user to interact with both the application's main window and with
Sets the filter used in the file dialog to the given \a filter.
If \a filter contains a pair of parentheses containing one or more
- of \bold{anything*something}, separated by spaces, then only the
+ of \b{anything*something}, separated by spaces, then only the
text contained in the parentheses is used as the filter. This means
that these calls are all equivalent:
\fn bool QFileSystemModel::rmdir(const QModelIndex &index) const
Removes the directory corresponding to the model item \a index in the
- file system model and \bold{deletes the corresponding directory from the
+ file system model and \b{deletes the corresponding directory from the
file system}, returning true if successful. If the directory cannot be
removed, false is returned.
\warning This function deletes directories from the file system; it does
- \bold{not} move them to a location where they can be recovered.
+ \b{not} move them to a location where they can be recovered.
\sa remove()
*/
/*!
\fn bool QFileSystemModel::remove(const QModelIndex &index) const
- Removes the model item \a index from the file system model and \bold{deletes the
+ Removes the model item \a index from the file system model and \b{deletes the
corresponding file from the file system}, returning true if successful. If the
item cannot be removed, false is returned.
- \warning This function deletes files from the file system; it does \bold{not}
+ \warning This function deletes files from the file system; it does \b{not}
move them to a location where they can be recovered.
\sa rmdir()
in \a member. These are:
\list
- \o textValueSelected() if \a member has a QString for its first argument.
- \o intValueSelected() if \a member has an int for its first argument.
- \o doubleValueSelected() if \a member has a double for its first argument.
- \o accepted() if \a member has NO arguments.
+ \li textValueSelected() if \a member has a QString for its first argument.
+ \li intValueSelected() if \a member has an int for its first argument.
+ \li doubleValueSelected() if \a member has a double for its first argument.
+ \li accepted() if \a member has NO arguments.
\endlist
The signal will be disconnected from the slot when the dialog is closed.
\table
\row
- \o \img qmessagebox-quest.png
- \o \l Question
- \o For asking a question during normal operations.
+ \li \img qmessagebox-quest.png
+ \li \l Question
+ \li For asking a question during normal operations.
\row
- \o \img qmessagebox-info.png
- \o \l Information
- \o For reporting information about normal operations.
+ \li \img qmessagebox-info.png
+ \li \l Information
+ \li For reporting information about normal operations.
\row
- \o \img qmessagebox-warn.png
- \o \l Warning
- \o For reporting non-critical errors.
+ \li \img qmessagebox-warn.png
+ \li \l Warning
+ \li For reporting non-critical errors.
\row
- \o \img qmessagebox-crit.png
- \o \l Critical
- \o For reporting critical errors.
+ \li \img qmessagebox-crit.png
+ \li \l Critical
+ \li For reporting critical errors.
\endtable
\l{QMessageBox::Icon}{Predefined icons} are not defined by QMessageBox, but
\list 1
- \o If there is only one button, it is the button activated when
+ \li If there is only one button, it is the button activated when
\key Esc is pressed.
- \o If there is a \l Cancel button, it is the button activated when
+ \li If there is a \l Cancel button, it is the button activated when
\key Esc is pressed.
- \o If there is exactly one button having either
+ \li If there is exactly one button having either
\l{QMessageBox::RejectRole} {the Reject role} or the
\l{QMessageBox::NoRole} {the No role}, it is the button
activated when \key Esc is pressed.
escape button as follows:
\list 1
- \o If there is only one button, it is made the escape button.
- \o If there is a \l Cancel button, it is made the escape button.
- \o On Mac OS X only, if there is exactly one button with the role
+ \li If there is only one button, it is made the escape button.
+ \li If there is a \l Cancel button, it is made the escape button.
+ \li On Mac OS X only, if there is exactly one button with the role
QMessageBox::RejectRole, it is made the escape button.
\endlist
values:
\list
- \o QMessageBox::NoIcon
- \o QMessageBox::Question
- \o QMessageBox::Information
- \o QMessageBox::Warning
- \o QMessageBox::Critical
+ \li QMessageBox::NoIcon
+ \li QMessageBox::Question
+ \li QMessageBox::Information
+ \li QMessageBox::Warning
+ \li QMessageBox::Critical
\endlist
The default is QMessageBox::NoIcon.
about() looks for a suitable icon in four locations:
\list 1
- \o It prefers \link QWidget::windowIcon() parent->icon() \endlink
+ \li It prefers \link QWidget::windowIcon() parent->icon() \endlink
if that exists.
- \o If not, it tries the top-level widget containing \a parent.
- \o If that fails, it tries the \link
+ \li If not, it tries the top-level widget containing \a parent.
+ \li If that fails, it tries the \link
QApplication::activeWindow() active window. \endlink
- \o As a last resort it uses the Information icon.
+ \li As a last resort it uses the Information icon.
\endlist
The about box has a single button labelled "OK". On Mac OS X, the
The \a icon must be one of the following:
\list
- \o QMessageBox::NoIcon
- \o QMessageBox::Question
- \o QMessageBox::Information
- \o QMessageBox::Warning
- \o QMessageBox::Critical
+ \li QMessageBox::NoIcon
+ \li QMessageBox::Question
+ \li QMessageBox::Information
+ \li QMessageBox::Warning
+ \li QMessageBox::Critical
\endlist
Each button, \a button0, \a button1 and \a button2, can have one
of the following values:
\list
- \o QMessageBox::NoButton
- \o QMessageBox::Ok
- \o QMessageBox::Cancel
- \o QMessageBox::Yes
- \o QMessageBox::No
- \o QMessageBox::Abort
- \o QMessageBox::Retry
- \o QMessageBox::Ignore
- \o QMessageBox::YesAll
- \o QMessageBox::NoAll
+ \li QMessageBox::NoButton
+ \li QMessageBox::Ok
+ \li QMessageBox::Cancel
+ \li QMessageBox::Yes
+ \li QMessageBox::No
+ \li QMessageBox::Abort
+ \li QMessageBox::Retry
+ \li QMessageBox::Ignore
+ \li QMessageBox::YesAll
+ \li QMessageBox::NoAll
\endlist
Use QMessageBox::NoButton for the later parameters to have fewer
of the following values:
\list
- \o QMessageBox::NoButton
- \o QMessageBox::Ok
- \o QMessageBox::Cancel
- \o QMessageBox::Yes
- \o QMessageBox::No
- \o QMessageBox::Abort
- \o QMessageBox::Retry
- \o QMessageBox::Ignore
- \o QMessageBox::YesAll
- \o QMessageBox::NoAll
+ \li QMessageBox::NoButton
+ \li QMessageBox::Ok
+ \li QMessageBox::Cancel
+ \li QMessageBox::Yes
+ \li QMessageBox::No
+ \li QMessageBox::Abort
+ \li QMessageBox::Retry
+ \li QMessageBox::Ignore
+ \li QMessageBox::YesAll
+ \li QMessageBox::NoAll
\endlist
If you don't want all three buttons, set the last button, or last
following values:
\list
- \o QMessageBox::NoButton
- \o QMessageBox::Ok
- \o QMessageBox::Cancel
- \o QMessageBox::Yes
- \o QMessageBox::No
- \o QMessageBox::Abort
- \o QMessageBox::Retry
- \o QMessageBox::Ignore
- \o QMessageBox::YesAll
- \o QMessageBox::NoAll
+ \li QMessageBox::NoButton
+ \li QMessageBox::Ok
+ \li QMessageBox::Cancel
+ \li QMessageBox::Yes
+ \li QMessageBox::No
+ \li QMessageBox::Abort
+ \li QMessageBox::Retry
+ \li QMessageBox::Ignore
+ \li QMessageBox::YesAll
+ \li QMessageBox::NoAll
\endlist
If you don't want all three buttons, set the last button, or last
one of the following values:
\list
- \o QMessageBox::NoButton
- \o QMessageBox::Ok
- \o QMessageBox::Cancel
- \o QMessageBox::Yes
- \o QMessageBox::No
- \o QMessageBox::Abort
- \o QMessageBox::Retry
- \o QMessageBox::Ignore
- \o QMessageBox::YesAll
- \o QMessageBox::NoAll
+ \li QMessageBox::NoButton
+ \li QMessageBox::Ok
+ \li QMessageBox::Cancel
+ \li QMessageBox::Yes
+ \li QMessageBox::No
+ \li QMessageBox::Abort
+ \li QMessageBox::Retry
+ \li QMessageBox::Ignore
+ \li QMessageBox::YesAll
+ \li QMessageBox::NoAll
\endlist
If you don't want all three buttons, set the last button, or last
one of the following values:
\list
- \o QMessageBox::NoButton
- \o QMessageBox::Ok
- \o QMessageBox::Cancel
- \o QMessageBox::Yes
- \o QMessageBox::No
- \o QMessageBox::Abort
- \o QMessageBox::Retry
- \o QMessageBox::Ignore
- \o QMessageBox::YesAll
- \o QMessageBox::NoAll
+ \li QMessageBox::NoButton
+ \li QMessageBox::Ok
+ \li QMessageBox::Cancel
+ \li QMessageBox::Yes
+ \li QMessageBox::No
+ \li QMessageBox::Abort
+ \li QMessageBox::Retry
+ \li QMessageBox::Ignore
+ \li QMessageBox::YesAll
+ \li QMessageBox::NoAll
\endlist
If you don't want all three buttons, set the last button, or last
Default settings:
\list
- \i The label text is empty.
- \i The cancel button text is (translated) "Cancel".
- \i minimum is 0;
- \i maximum is 100
+ \li The label text is empty.
+ \li The cancel button text is (translated) "Cancel".
+ \li minimum is 0;
+ \li maximum is 100
\endlist
The \a parent argument is dialog's parent widget. The widget flags, \a f, are
QWizard supports four wizard looks:
\list
- \o ClassicStyle
- \o ModernStyle
- \o MacStyle
- \o AeroStyle
+ \li ClassicStyle
+ \li ModernStyle
+ \li MacStyle
+ \li AeroStyle
\endlist
You can explicitly set the look to use using setWizardStyle()
(e.g., if you want the same look on all platforms).
\table
- \header \o ClassicStyle
- \o ModernStyle
- \o MacStyle
- \o AeroStyle
- \row \o \inlineimage qtwizard-classic1.png
- \o \inlineimage qtwizard-modern1.png
- \o \inlineimage qtwizard-mac1.png
- \o \inlineimage qtwizard-aero1.png
- \row \o \inlineimage qtwizard-classic2.png
- \o \inlineimage qtwizard-modern2.png
- \o \inlineimage qtwizard-mac2.png
- \o \inlineimage qtwizard-aero2.png
+ \header \li ClassicStyle
+ \li ModernStyle
+ \li MacStyle
+ \li AeroStyle
+ \row \li \inlineimage qtwizard-classic1.png
+ \li \inlineimage qtwizard-modern1.png
+ \li \inlineimage qtwizard-mac1.png
+ \li \inlineimage qtwizard-aero1.png
+ \row \li \inlineimage qtwizard-classic2.png
+ \li \inlineimage qtwizard-modern2.png
+ \li \inlineimage qtwizard-mac2.png
+ \li \inlineimage qtwizard-aero2.png
\endtable
Note: AeroStyle has effect only on a Windows Vista system with alpha compositing enabled.
only one page is shown. A page has the following attributes:
\list
- \o A \l{QWizardPage::}{title}.
- \o A \l{QWizardPage::}{subTitle}.
- \o A set of pixmaps, which may or may not be honored, depending
+ \li A \l{QWizardPage::}{title}.
+ \li A \l{QWizardPage::}{subTitle}.
+ \li A set of pixmaps, which may or may not be honored, depending
on the wizard's style:
\list
- \o WatermarkPixmap (used by ClassicStyle and ModernStyle)
- \o BannerPixmap (used by ModernStyle)
- \o LogoPixmap (used by ClassicStyle and ModernStyle)
- \o BackgroundPixmap (used by MacStyle)
+ \li WatermarkPixmap (used by ClassicStyle and ModernStyle)
+ \li BannerPixmap (used by ModernStyle)
+ \li LogoPixmap (used by ClassicStyle and ModernStyle)
+ \li BackgroundPixmap (used by MacStyle)
\endlist
\endlist
By default, the following options are set (depending on the platform):
\list
- \o Windows: HelpButtonOnRight.
- \o Mac OS X: NoDefaultButton and NoCancelButton.
- \o X11 and QWS (Qt for Embedded Linux): none.
+ \li Windows: HelpButtonOnRight.
+ \li Mac OS X: NoDefaultButton and NoCancelButton.
+ \li X11 and QWS (Qt for Embedded Linux): none.
\endlist
\sa wizardStyle
changedSignal. The table below lists these widgets:
\table
- \header \o Widget \o Property \o Change Notification Signal
- \row \o QAbstractButton \o bool \l{QAbstractButton::}{checked} \o \l{QAbstractButton::}{toggled()}
- \row \o QAbstractSlider \o int \l{QAbstractSlider::}{value} \o \l{QAbstractSlider::}{valueChanged()}
- \row \o QComboBox \o int \l{QComboBox::}{currentIndex} \o \l{QComboBox::}{currentIndexChanged()}
- \row \o QDateTimeEdit \o QDateTime \l{QDateTimeEdit::}{dateTime} \o \l{QDateTimeEdit::}{dateTimeChanged()}
- \row \o QLineEdit \o QString \l{QLineEdit::}{text} \o \l{QLineEdit::}{textChanged()}
- \row \o QListWidget \o int \l{QListWidget::}{currentRow} \o \l{QListWidget::}{currentRowChanged()}
- \row \o QSpinBox \o int \l{QSpinBox::}{value} \o \l{QSpinBox::}{valueChanged()}
+ \header \li Widget \li Property \li Change Notification Signal
+ \row \li QAbstractButton \li bool \l{QAbstractButton::}{checked} \li \l{QAbstractButton::}{toggled()}
+ \row \li QAbstractSlider \li int \l{QAbstractSlider::}{value} \li \l{QAbstractSlider::}{valueChanged()}
+ \row \li QComboBox \li int \l{QComboBox::}{currentIndex} \li \l{QComboBox::}{currentIndexChanged()}
+ \row \li QDateTimeEdit \li QDateTime \l{QDateTimeEdit::}{dateTime} \li \l{QDateTimeEdit::}{dateTimeChanged()}
+ \row \li QLineEdit \li QString \l{QLineEdit::}{text} \li \l{QLineEdit::}{textChanged()}
+ \row \li QListWidget \li int \l{QListWidget::}{currentRow} \li \l{QListWidget::}{currentRowChanged()}
+ \row \li QSpinBox \li int \l{QSpinBox::}{value} \li \l{QSpinBox::}{valueChanged()}
\endtable
\sa QWizardPage::registerField()
provide custom behavior:
\list
- \o initializePage() is called to initialize the page's contents
+ \li initializePage() is called to initialize the page's contents
when the user clicks the wizard's \gui Next button. If you
want to derive the page's default from what the user entered
on previous pages, this is the function to reimplement.
- \o cleanupPage() is called to reset the page's contents when the
+ \li cleanupPage() is called to reset the page's contents when the
user clicks the wizard's \gui Back button.
- \o validatePage() validates the page when the user clicks \gui
+ \li validatePage() validates the page when the user clicks \gui
Next or \gui Finish. It is often used to show an error message
if the user has entered incomplete or invalid information.
- \o nextId() returns the ID of the next page. It is useful when
+ \li nextId() returns the ID of the next page. It is useful when
\l{creating non-linear wizards}, which allow different
traversal paths based on the information provided by the user.
- \o isComplete() is called to determine whether the \gui Next
+ \li isComplete() is called to determine whether the \gui Next
and/or \gui Finish button should be enabled or disabled. If
you reimplement isComplete(), also make sure that
completeChanged() is emitted whenever the complete state
changedSignal. The table below lists these widgets:
\table
- \header \o Widget \o Property \o Change Notification Signal
- \row \o QAbstractButton \o bool \l{QAbstractButton::}{checked} \o \l{QAbstractButton::}{toggled()}
- \row \o QAbstractSlider \o int \l{QAbstractSlider::}{value} \o \l{QAbstractSlider::}{valueChanged()}
- \row \o QComboBox \o int \l{QComboBox::}{currentIndex} \o \l{QComboBox::}{currentIndexChanged()}
- \row \o QDateTimeEdit \o QDateTime \l{QDateTimeEdit::}{dateTime} \o \l{QDateTimeEdit::}{dateTimeChanged()}
- \row \o QLineEdit \o QString \l{QLineEdit::}{text} \o \l{QLineEdit::}{textChanged()}
- \row \o QListWidget \o int \l{QListWidget::}{currentRow} \o \l{QListWidget::}{currentRowChanged()}
- \row \o QSpinBox \o int \l{QSpinBox::}{value} \o \l{QSpinBox::}{valueChanged()}
+ \header \li Widget \li Property \li Change Notification Signal
+ \row \li QAbstractButton \li bool \l{QAbstractButton::}{checked} \li \l{QAbstractButton::}{toggled()}
+ \row \li QAbstractSlider \li int \l{QAbstractSlider::}{value} \li \l{QAbstractSlider::}{valueChanged()}
+ \row \li QComboBox \li int \l{QComboBox::}{currentIndex} \li \l{QComboBox::}{currentIndexChanged()}
+ \row \li QDateTimeEdit \li QDateTime \l{QDateTimeEdit::}{dateTime} \li \l{QDateTimeEdit::}{dateTimeChanged()}
+ \row \li QLineEdit \li QString \l{QLineEdit::}{text} \li \l{QLineEdit::}{textChanged()}
+ \row \li QListWidget \li int \l{QListWidget::}{currentRow} \li \l{QListWidget::}{currentRowChanged()}
+ \row \li QSpinBox \li int \l{QSpinBox::}{value} \li \l{QSpinBox::}{valueChanged()}
\endtable
You can use QWizard::setDefaultProperty() to add entries to this
Qt provides the following standard effects:
\list
- \o QGraphicsBlurEffect - blurs the item by a given radius
- \o QGraphicsDropShadowEffect - renders a dropshadow behind the item
- \o QGraphicsColorizeEffect - renders the item in shades of any given color
- \o QGraphicsOpacityEffect - renders the item with an opacity
+ \li QGraphicsBlurEffect - blurs the item by a given radius
+ \li QGraphicsDropShadowEffect - renders a dropshadow behind the item
+ \li QGraphicsColorizeEffect - renders the item in shades of any given color
+ \li QGraphicsOpacityEffect - renders the item with an opacity
\endlist
\table
\row
- \o{2,1} \img graphicseffect-plain.png
+ \li{2,1} \img graphicseffect-plain.png
\row
- \o \img graphicseffect-blur.png
- \o \img graphicseffect-colorize.png
+ \li \img graphicseffect-blur.png
+ \li \img graphicseffect-colorize.png
\row
- \o \img graphicseffect-opacity.png
- \o \img graphicseffect-drop-shadow.png
+ \li \img graphicseffect-opacity.png
+ \li \img graphicseffect-drop-shadow.png
\endtable
\img graphicseffect-widget.png
avoid any future regressions in behaviour:
\list
- \o Stretch factors are not respected.
+ \li Stretch factors are not respected.
- \o QSizePolicy::ExpandFlag is not respected.
+ \li QSizePolicy::ExpandFlag is not respected.
- \o Height for width is not respected.
+ \li Height for width is not respected.
\endlist
common shapes. These are:
\list
- \o QGraphicsEllipseItem provides an ellipse item
- \o QGraphicsLineItem provides a line item
- \o QGraphicsPathItem provides an arbitrary path item
- \o QGraphicsPixmapItem provides a pixmap item
- \o QGraphicsPolygonItem provides a polygon item
- \o QGraphicsRectItem provides a rectangular item
- \o QGraphicsSimpleTextItem provides a simple text label item
- \o QGraphicsTextItem provides an advanced text browser item
+ \li QGraphicsEllipseItem provides an ellipse item
+ \li QGraphicsLineItem provides a line item
+ \li QGraphicsPathItem provides an arbitrary path item
+ \li QGraphicsPixmapItem provides a pixmap item
+ \li QGraphicsPolygonItem provides a polygon item
+ \li QGraphicsRectItem provides a rectangular item
+ \li QGraphicsSimpleTextItem provides a simple text label item
+ \li QGraphicsTextItem provides an advanced text browser item
\endlist
All of an item's geometric information is based on its local coordinate
\list 1
- \o Reimplement shape() to return an accurate shape for your item,
+ \li Reimplement shape() to return an accurate shape for your item,
and rely on the default implementation of collidesWithItem() to do
shape-shape intersection. This can be rather expensive if the
shapes are complex.
- \o Reimplement collidesWithItem() to provide your own custom item
+ \li Reimplement collidesWithItem() to provide your own custom item
and shape collision algorithm.
\endlist
QGraphicsItem always applies the properties in a fixed, defined order:
\list
- \o The item's base transform is applied (transform())
- \o The item's transformations list is applied in order (transformations())
- \o The item is rotated relative to its transform origin point (rotation(), transformOriginPoint())
- \o The item is scaled relative to its transform origin point (scale(), transformOriginPoint())
+ \li The item's base transform is applied (transform())
+ \li The item's transformations list is applied in order (transformations())
+ \li The item is rotated relative to its transform origin point (rotation(), transformOriginPoint())
+ \li The item is scaled relative to its transform origin point (scale(), transformOriginPoint())
\endlist
\section1 Painting
For advanced users, there are ways to alter how your items are sorted:
\list
- \o You can call setZValue() on an item to explicitly stack it on top of, or
+ \li You can call setZValue() on an item to explicitly stack it on top of, or
under, other sibling items. The default Z value for an item is 0. Items
with the same Z value are stacked by insertion order.
- \o You can call stackBefore() to reorder the list of children. This will
+ \li You can call stackBefore() to reorder the list of children. This will
directly modify the insertion order.
- \o You can set the ItemStacksBehindParent flag to stack a child item behind
+ \li You can set the ItemStacksBehindParent flag to stack a child item behind
its parent.
\endlist
to a set of convenience event handlers:
\list
- \o contextMenuEvent() handles context menu events
- \o focusInEvent() and focusOutEvent() handle focus in and out events
- \o hoverEnterEvent(), hoverMoveEvent(), and hoverLeaveEvent() handles
+ \li contextMenuEvent() handles context menu events
+ \li focusInEvent() and focusOutEvent() handle focus in and out events
+ \li hoverEnterEvent(), hoverMoveEvent(), and hoverLeaveEvent() handles
hover enter, move and leave events
- \o inputMethodEvent() handles input events, for accessibility support
- \o keyPressEvent() and keyReleaseEvent() handle key press and release events
- \o mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), and
+ \li inputMethodEvent() handles input events, for accessibility support
+ \li keyPressEvent() and keyReleaseEvent() handle key press and release events
+ \li mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), and
mouseDoubleClickEvent() handles mouse press, move, release, click and
doubleclick events
\endlist
following events occurs:
\list
- \o The item becomes invisible
- \o The item is removed from the scene
- \o The item is deleted
- \o The item call ungrabMouse()
- \o Another item calls grabMouse(); the item will regain the mouse grab
+ \li The item becomes invisible
+ \li The item is removed from the scene
+ \li The item is deleted
+ \li The item call ungrabMouse()
+ \li Another item calls grabMouse(); the item will regain the mouse grab
when the other item calls ungrabMouse().
\endlist
following events occur:
\list
- \o The item becomes invisible
- \o The item is removed from the scene
- \o The item is deleted
- \o The item calls ungrabKeyboard()
- \o Another item calls grabKeyboard(); the item will regain the keyboard grab
+ \li The item becomes invisible
+ \li The item is removed from the scene
+ \li The item is deleted
+ \li The item calls ungrabKeyboard()
+ \li Another item calls grabKeyboard(); the item will regain the keyboard grab
when the other item calls ungrabKeyboard().
\endlist
viewport, which does not benefit from scroll optimizations), this function
is equivalent to calling update(\a rect).
- \bold{Note:} Scrolling is only supported when QGraphicsItem::ItemCoordinateCache
+ \b{Note:} Scrolling is only supported when QGraphicsItem::ItemCoordinateCache
is enabled; in all other cases calling this function is equivalent to calling
update(\a rect). If you for sure know that the item is opaque and not overlapped
by other items, you can map the \a rect to viewport coordinates and scroll the
\table
\row
- \o \inlineimage graphicsview-ellipseitem.png
- \o \inlineimage graphicsview-ellipseitem-pie.png
+ \li \inlineimage graphicsview-ellipseitem.png
+ \li \inlineimage graphicsview-ellipseitem-pie.png
\endtable
To set the item's ellipse, pass a QRectF to QGraphicsEllipseItem's
minimum:
\table
- \header \o Function \o Description
- \row \o QGraphicsLayoutItem::setGeometry()
- \o Notifies you when the geometry of the layout is set. You can
+ \header \li Function \li Description
+ \row \li QGraphicsLayoutItem::setGeometry()
+ \li Notifies you when the geometry of the layout is set. You can
store the geometry in your own layout class in a reimplementation
of this function.
- \row \o QGraphicsLayoutItem::sizeHint()
- \o Returns the layout's size hints.
- \row \o QGraphicsLayout::count()
- \o Returns the number of items in your layout.
- \row \o QGraphicsLayout::itemAt()
- \o Returns a pointer to an item in your layout.
- \row \o QGraphicsLayout::removeAt()
- \o Removes an item from your layout without destroying it.
+ \row \li QGraphicsLayoutItem::sizeHint()
+ \li Returns the layout's size hints.
+ \row \li QGraphicsLayout::count()
+ \li Returns the number of items in your layout.
+ \row \li QGraphicsLayout::itemAt()
+ \li Returns a pointer to an item in your layout.
+ \row \li QGraphicsLayout::removeAt()
+ \li Removes an item from your layout without destroying it.
\endtable
For more details on how to implement each function, refer to the individual
QGraphicsProxyWidget maintains symmetry for the following states:
\table
- \header \o QWidget state \o QGraphicsProxyWidget state \o Notes
- \row \o QWidget::enabled
- \o QGraphicsProxyWidget::enabled
- \o
- \row \o QWidget::visible
- \o QGraphicsProxyWidget::visible
- \o The explicit state is also symmetric.
- \row \o QWidget::geometry
- \o QGraphicsProxyWidget::geometry
- \o Geometry is only guaranteed to be symmetric while
+ \header \li QWidget state \li QGraphicsProxyWidget state \li Notes
+ \row \li QWidget::enabled
+ \li QGraphicsProxyWidget::enabled
+ \li
+ \row \li QWidget::visible
+ \li QGraphicsProxyWidget::visible
+ \li The explicit state is also symmetric.
+ \row \li QWidget::geometry
+ \li QGraphicsProxyWidget::geometry
+ \li Geometry is only guaranteed to be symmetric while
the embedded widget is visible.
- \row \o QWidget::layoutDirection
- \o QGraphicsProxyWidget::layoutDirection
- \o
- \row \o QWidget::style
- \o QGraphicsProxyWidget::style
- \o
- \row \o QWidget::palette
- \o QGraphicsProxyWidget::palette
- \o
- \row \o QWidget::font
- \o QGraphicsProxyWidget::font
- \o
- \row \o QWidget::cursor
- \o QGraphicsProxyWidget::cursor
- \o The embedded widget overrides the proxy widget
+ \row \li QWidget::layoutDirection
+ \li QGraphicsProxyWidget::layoutDirection
+ \li
+ \row \li QWidget::style
+ \li QGraphicsProxyWidget::style
+ \li
+ \row \li QWidget::palette
+ \li QGraphicsProxyWidget::palette
+ \li
+ \row \li QWidget::font
+ \li QGraphicsProxyWidget::font
+ \li
+ \row \li QWidget::cursor
+ \li QGraphicsProxyWidget::cursor
+ \li The embedded widget overrides the proxy widget
cursor. The proxy cursor changes depending on
which embedded subwidget is currently under the
mouse.
- \row \o QWidget::sizeHint()
- \o QGraphicsProxyWidget::sizeHint()
- \o All size hint functionality from the embedded
+ \row \li QWidget::sizeHint()
+ \li QGraphicsProxyWidget::sizeHint()
+ \li All size hint functionality from the embedded
widget is forwarded by the proxy.
- \row \o QWidget::getContentsMargins()
- \o QGraphicsProxyWidget::getContentsMargins()
- \o Updated once by setWidget().
- \row \o QWidget::windowTitle
- \o QGraphicsProxyWidget::windowTitle
- \o Updated once by setWidget().
+ \row \li QWidget::getContentsMargins()
+ \li QGraphicsProxyWidget::getContentsMargins()
+ \li Updated once by setWidget().
+ \row \li QWidget::windowTitle
+ \li QGraphicsProxyWidget::windowTitle
+ \li Updated once by setWidget().
\endtable
\note QGraphicsScene keeps the embedded widget in a special state that
the following events occur:
\list
- \o If the item receives a mouse release event when there are no other
+ \li If the item receives a mouse release event when there are no other
buttons pressed, it loses the mouse grab.
- \o If the item becomes invisible (i.e., someone calls \c {item->setVisible(false)}),
+ \li If the item becomes invisible (i.e., someone calls \c {item->setVisible(false)}),
or if it becomes disabled (i.e., someone calls \c {item->setEnabled(false)}),
it loses the mouse grab.
- \o If the item is removed from the scene, it loses the mouse grab.
+ \li If the item is removed from the scene, it loses the mouse grab.
\endlist
If the item loses its mouse grab, the scene will ignore all mouse events
over QGraphicsItem. It is similar to QWidget in many ways:
\list
- \o Provides a \l palette, a \l font and a \l style().
- \o Has a defined geometry().
- \o Supports layouts with setLayout() and layout().
- \o Supports shortcuts and actions with grabShortcut() and insertAction()
+ \li Provides a \l palette, a \l font and a \l style().
+ \li Has a defined geometry().
+ \li Supports layouts with setLayout() and layout().
+ \li Supports shortcuts and actions with grabShortcut() and insertAction()
\endlist
Unlike QGraphicsItem, QGraphicsWidget is not an abstract class; you can
Noticeable differences between QGraphicsWidget and QWidget are:
\table
- \header \o QGraphicsWidget
- \o QWidget
- \row \o Coordinates and geometry are defined with qreals (doubles or
+ \header \li QGraphicsWidget
+ \li QWidget
+ \row \li Coordinates and geometry are defined with qreals (doubles or
floats, depending on the platform).
- \o QWidget uses integer geometry (QPoint, QRect).
- \row \o The widget is already visible by default; you do not have to
+ \li QWidget uses integer geometry (QPoint, QRect).
+ \row \li The widget is already visible by default; you do not have to
call show() to display the widget.
- \o QWidget is hidden by default until you call show().
- \row \o A subset of widget attributes are supported.
- \o All widget attributes are supported.
- \row \o A top-level item's style defaults to QGraphicsScene::style
- \o A top-level widget's style defaults to QApplication::style
- \row \o Graphics View provides a custom drag and drop framework, different
+ \li QWidget is hidden by default until you call show().
+ \row \li A subset of widget attributes are supported.
+ \li All widget attributes are supported.
+ \row \li A top-level item's style defaults to QGraphicsScene::style
+ \li A top-level widget's style defaults to QApplication::style
+ \row \li Graphics View provides a custom drag and drop framework, different
from QWidget.
- \o Standard drag and drop framework.
- \row \o Widget items do not support modality.
- \o Full modality support.
+ \li Standard drag and drop framework.
+ \row \li Widget items do not support modality.
+ \li Full modality support.
\endtable
QGraphicsWidget supports a subset of Qt's widget attributes,
listed in this table are unsupported, or otherwise unused.
\table
- \header \o Widget Attribute \o Usage
- \row \o Qt::WA_SetLayoutDirection
- \o Set by setLayoutDirection(), cleared by
+ \header \li Widget Attribute \li Usage
+ \row \li Qt::WA_SetLayoutDirection
+ \li Set by setLayoutDirection(), cleared by
unsetLayoutDirection(). You can test this attribute to
check if the widget has been explicitly assigned a
\l{QGraphicsWidget::layoutDirection()}
{layoutDirection}. If the attribute is not set, the
\l{QGraphicsWidget::layoutDirection()}
{layoutDirection()} is inherited.
- \row \o Qt::WA_RightToLeft
- \o Toggled by setLayoutDirection(). Inherited from the
+ \row \li Qt::WA_RightToLeft
+ \li Toggled by setLayoutDirection(). Inherited from the
parent/scene. If set, the widget's layout will order
horizontally arranged widgets from right to left.
- \row \o Qt::WA_SetStyle
- \o Set and cleared by setStyle(). If this attribute is
+ \row \li Qt::WA_SetStyle
+ \li Set and cleared by setStyle(). If this attribute is
set, the widget has been explicitly assigned a style.
If it is unset, the widget will use the scene's or the
application's style.
- \row \o Qt::WA_Resized
- \o Set by setGeometry() and resize().
- \row \o Qt::WA_SetPalette
- \o Set by setPalette().
- \row \o Qt::WA_SetFont
- \o Set by setFont().
- \row \o Qt::WA_WindowPropagation
- \o Enables propagation to window widgets.
+ \row \li Qt::WA_Resized
+ \li Set by setGeometry() and resize().
+ \row \li Qt::WA_SetPalette
+ \li Set by setPalette().
+ \row \li Qt::WA_SetFont
+ \li Set by setFont().
+ \row \li Qt::WA_WindowPropagation
+ \li Enables propagation to window widgets.
\endtable
Although QGraphicsWidget inherits from both QObject and QGraphicsItem,
\table
\header
- \o Style Option Property
- \o Value
+ \li Style Option Property
+ \li Value
\row
- \o state & QStyle::State_Enabled
- \o Corresponds to QGraphicsItem::isEnabled().
+ \li state & QStyle::State_Enabled
+ \li Corresponds to QGraphicsItem::isEnabled().
\row
- \o state & QStyle::State_HasFocus
- \o Corresponds to QGraphicsItem::hasFocus().
+ \li state & QStyle::State_HasFocus
+ \li Corresponds to QGraphicsItem::hasFocus().
\row
- \o state & QStyle::State_MouseOver
- \o Corresponds to QGraphicsItem::isUnderMouse().
+ \li state & QStyle::State_MouseOver
+ \li Corresponds to QGraphicsItem::isUnderMouse().
\row
- \o direction
- \o Corresponds to QGraphicsWidget::layoutDirection().
+ \li direction
+ \li Corresponds to QGraphicsWidget::layoutDirection().
\row
- \o rect
- \o Corresponds to QGraphicsWidget::rect().toRect().
+ \li rect
+ \li Corresponds to QGraphicsWidget::rect().toRect().
\row
- \o palette
- \o Corresponds to QGraphicsWidget::palette().
+ \li palette
+ \li Corresponds to QGraphicsWidget::palette().
\row
- \o fontMetrics
- \o Corresponds to QFontMetrics(QGraphicsWidget::font()).
+ \li fontMetrics
+ \li Corresponds to QFontMetrics(QGraphicsWidget::font()).
\endtable
Subclasses of QGraphicsWidget should call the base implementation, and
QGraphicsWidget delivers notifications for the following properties:
- \table \o propertyName \o Property
- \row \o layoutDirection \o QGraphicsWidget::layoutDirection
- \row \o size \o QGraphicsWidget::size
- \row \o font \o QGraphicsWidget::font
- \row \o palette \o QGraphicsWidget::palette
+ \table \li propertyName \li Property
+ \row \li layoutDirection \li QGraphicsWidget::layoutDirection
+ \row \li size \li QGraphicsWidget::size
+ \row \li font \li QGraphicsWidget::font
+ \row \li palette \li QGraphicsWidget::palette
\endtable
\sa itemChange()
Handles the \a event. QGraphicsWidget handles the following
events:
- \table \o Event \o Usage
- \row \o Polish
- \o Delivered to the widget some time after it has been
+ \table \li Event \li Usage
+ \row \li Polish
+ \li Delivered to the widget some time after it has been
shown.
- \row \o GraphicsSceneMove
- \o Delivered to the widget after its local position has
+ \row \li GraphicsSceneMove
+ \li Delivered to the widget after its local position has
changed.
- \row \o GraphicsSceneResize
- \o Delivered to the widget after its size has changed.
- \row \o Show
- \o Delivered to the widget before it has been shown.
- \row \o Hide
- \o Delivered to the widget after it has been hidden.
- \row \o PaletteChange
- \o Delivered to the widget after its palette has changed.
- \row \o FontChange
- \o Delivered to the widget after its font has changed.
- \row \o EnabledChange
- \o Delivered to the widget after its enabled state has
+ \row \li GraphicsSceneResize
+ \li Delivered to the widget after its size has changed.
+ \row \li Show
+ \li Delivered to the widget before it has been shown.
+ \row \li Hide
+ \li Delivered to the widget after it has been hidden.
+ \row \li PaletteChange
+ \li Delivered to the widget after its palette has changed.
+ \row \li FontChange
+ \li Delivered to the widget after its font has changed.
+ \row \li EnabledChange
+ \li Delivered to the widget after its enabled state has
changed.
- \row \o StyleChange
- \o Delivered to the widget after its style has changed.
- \row \o LayoutDirectionChange
- \o Delivered to the widget after its layout direction has
+ \row \li StyleChange
+ \li Delivered to the widget after its style has changed.
+ \row \li LayoutDirectionChange
+ \li Delivered to the widget after its layout direction has
changed.
- \row \o ContentsRectChange
- \o Delivered to the widget after its contents margins/
+ \row \li ContentsRectChange
+ \li Delivered to the widget after its contents margins/
contents rect has changed.
\endtable
*/
\table
\header
- \o Keys
- \o Functionality
+ \li Keys
+ \li Functionality
\row
- \o Arrow keys
- \o Changes the current item and selects it.
+ \li Arrow keys
+ \li Changes the current item and selects it.
\row
- \o Ctrl+Arrow keys
- \o Changes the current item but does not select it.
+ \li Ctrl+Arrow keys
+ \li Changes the current item but does not select it.
\row
- \o Shift+Arrow keys
- \o Changes the current item and selects it. The previously
+ \li Shift+Arrow keys
+ \li Changes the current item and selects it. The previously
selected item(s) is not deselected.
\row
- \o Ctr+Space
- \o Toggles selection of the current item.
+ \li Ctr+Space
+ \li Toggles selection of the current item.
\row
- \o Tab/Backtab
- \o Changes the current item to the next/previous item.
+ \li Tab/Backtab
+ \li Changes the current item to the next/previous item.
\row
- \o Home/End
- \o Selects the first/last item in the model.
+ \li Home/End
+ \li Selects the first/last item in the model.
\row
- \o Page up/Page down
- \o Scrolls the rows shown up/down by the number of
+ \li Page up/Page down
+ \li Scrolls the rows shown up/down by the number of
visible rows in the view.
\row
- \o Ctrl+A
- \o Selects all items in the model.
+ \li Ctrl+A
+ \li Selects all items in the model.
\endtable
Note that the above table assumes that the
\value DragOnly The view supports dragging of its own items
\value DropOnly The view accepts drops
\value DragDrop The view supports both dragging and dropping
- \value InternalMove The view accepts move (\bold{not copy}) operations only
+ \value InternalMove The view accepts move (\b{not copy}) operations only
from itself.
Note that the model used needs to provide support for drag and drop operations.
Let us assume that we have an item model named \c{model} with the following contents:
\table
- \row \o 1 \o Qt Norway \o Oslo
- \row \o 2 \o Qt Australia \o Brisbane
- \row \o 3 \o Qt USA \o Palo Alto
- \row \o 4 \o Qt China \o Beijing
- \row \o 5 \o Qt Germany \o Berlin
+ \row \li 1 \li Qt Norway \li Oslo
+ \row \li 2 \li Qt Australia \li Brisbane
+ \row \li 3 \li Qt USA \li Palo Alto
+ \row \li 4 \li Qt China \li Beijing
+ \row \li 5 \li Qt Germany \li Berlin
\endtable
The following code will map the columns of the model to widgets called \c mySpinBox,
\snippet doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp 1
- \bold{Notes:}
+ \b{Notes:}
\list
- \o If the \a widget is already mapped to a section, the
+ \li If the \a widget is already mapped to a section, the
old mapping will be replaced by the new one.
- \o Only one-to-one mappings between sections and widgets are allowed.
+ \li Only one-to-one mappings between sections and widgets are allowed.
It is not possible to map a single section to multiple widgets, or to
map a single widget to multiple sections.
\endlist
Use Qt::Horizontal for tabular data that looks like this:
\table
- \row \o 1 \o Qt Norway \o Oslo
- \row \o 2 \o Qt Australia \o Brisbane
- \row \o 3 \o Qt USA \o Silicon Valley
- \row \o 4 \o Qt China \o Beijing
- \row \o 5 \o Qt Germany \o Berlin
+ \row \li 1 \li Qt Norway \li Oslo
+ \row \li 2 \li Qt Australia \li Brisbane
+ \row \li 3 \li Qt USA \li Silicon Valley
+ \row \li 4 \li Qt China \li Beijing
+ \row \li 5 \li Qt Germany \li Berlin
\endtable
If the orientation is set to Qt::Vertical, a widget is mapped to
Use Qt::Vertical for tabular data that looks like this:
\table
- \row \o 1 \o 2 \o 3 \o 4 \o 5
- \row \o Qt Norway \o Qt Australia \o Qt USA \o Qt China \o Qt Germany
- \row \o Oslo \o Brisbane \o Silicon Valley \o Beijing \i Berlin
+ \row \li 1 \li 2 \li 3 \li 4 \li 5
+ \row \li Qt Norway \li Qt Australia \li Qt USA \li Qt China \li Qt Germany
+ \row \li Oslo \li Brisbane \li Silicon Valley \li Beijing \li Berlin
\endtable
Changing the orientation clears all existing mappings.
/*!
Removes the directory corresponding to the model item \a index in the
- directory model and \bold{deletes the corresponding directory from the
+ directory model and \b{deletes the corresponding directory from the
file system}, returning true if successful. If the directory cannot be
removed, false is returned.
\warning This function deletes directories from the file system; it does
- \bold{not} move them to a location where they can be recovered.
+ \b{not} move them to a location where they can be recovered.
\sa remove()
*/
}
/*!
- Removes the model item \a index from the directory model and \bold{deletes the
+ Removes the model item \a index from the directory model and \b{deletes the
corresponding file from the file system}, returning true if successful. If the
item cannot be removed, false is returned.
- \warning This function deletes files from the file system; it does \bold{not}
+ \warning This function deletes files from the file system; it does \b{not}
move them to a location where they can be recovered.
\sa rmdir()
/*!
Returns the file information for the specified model \a index.
- \bold{Note:} If the model index represents a symbolic link in the
+ \b{Note:} If the model index represents a symbolic link in the
underlying filing system, the file information returned will contain
information about the symbolic link itself, regardless of whether
resolveSymlinks is enabled or not.
reimplemented here:
\list
- \o createEditor() returns the widget used to change data from the model
+ \li createEditor() returns the widget used to change data from the model
and can be reimplemented to customize editing behavior.
- \o setEditorData() provides the widget with data to manipulate.
- \o updateEditorGeometry() ensures that the editor is displayed correctly
+ \li setEditorData() provides the widget with data to manipulate.
+ \li updateEditorGeometry() ensures that the editor is displayed correctly
with respect to the item view.
- \o setModelData() returns updated data to the model.
+ \li setModelData() returns updated data to the model.
\endlist
The closeEditor() signal indicates that the user has completed editing the data,
appearance of the delegate as described in the following table.
\table
- \header \o Role \o Accepted Types
+ \header \li Role \li Accepted Types
\omit
- \row \o \l Qt::AccessibleDescriptionRole \o QString
- \row \o \l Qt::AccessibleTextRole \o QString
+ \row \li \l Qt::AccessibleDescriptionRole \li QString
+ \row \li \l Qt::AccessibleTextRole \li QString
\endomit
- \row \o \l Qt::BackgroundRole \o QBrush
- \row \o \l Qt::BackgroundColorRole \o QColor (obsolete; use Qt::BackgroundRole instead)
- \row \o \l Qt::CheckStateRole \o Qt::CheckState
- \row \o \l Qt::DecorationRole \o QIcon, QPixmap and QColor
- \row \o \l Qt::DisplayRole \o QString and types with a string representation
- \row \o \l Qt::EditRole \o See QItemEditorFactory for details
- \row \o \l Qt::FontRole \o QFont
- \row \o \l Qt::SizeHintRole \o QSize
+ \row \li \l Qt::BackgroundRole \li QBrush
+ \row \li \l Qt::BackgroundColorRole \li QColor (obsolete; use Qt::BackgroundRole instead)
+ \row \li \l Qt::CheckStateRole \li Qt::CheckState
+ \row \li \l Qt::DecorationRole \li QIcon, QPixmap and QColor
+ \row \li \l Qt::DisplayRole \li QString and types with a string representation
+ \row \li \l Qt::EditRole \li See QItemEditorFactory for details
+ \row \li \l Qt::FontRole \li QFont
+ \row \li \l Qt::SizeHintRole \li QSize
\omit
- \row \o \l Qt::StatusTipRole \o
+ \row \li \l Qt::StatusTipRole \li
\endomit
- \row \o \l Qt::TextAlignmentRole \o Qt::Alignment
- \row \o \l Qt::ForegroundRole \o QBrush
- \row \o \l Qt::TextColorRole \o QColor (obsolete; use Qt::ForegroundRole instead)
+ \row \li \l Qt::TextAlignmentRole \li Qt::Alignment
+ \row \li \l Qt::ForegroundRole \li QBrush
+ \row \li \l Qt::TextColorRole \li QColor (obsolete; use Qt::ForegroundRole instead)
\omit
- \row \o \l Qt::ToolTipRole
- \row \o \l Qt::WhatsThisRole
+ \row \li \l Qt::ToolTipRole
+ \row \li \l Qt::WhatsThisRole
\endomit
\endtable
key press events are handled by default:
\list
- \o \gui Tab
- \o \gui Backtab
- \o \gui Enter
- \o \gui Return
- \o \gui Esc
+ \li \gui Tab
+ \li \gui Backtab
+ \li \gui Enter
+ \li \gui Return
+ \li \gui Esc
\endlist
In the case of \gui Tab, \gui Backtab, \gui Enter and \gui Return
types and the standard editors provided.
\table
- \header \o Type \o Editor Widget
- \row \o bool \o QComboBox
- \row \o double \o QDoubleSpinBox
- \row \o int \o{1,2} QSpinBox
- \row \o unsigned int
- \row \o QDate \o QDateEdit
- \row \o QDateTime \o QDateTimeEdit
- \row \o QPixmap \o QLabel
- \row \o QString \o QLineEdit
- \row \o QTime \o QTimeEdit
+ \header \li Type \li Editor Widget
+ \row \li bool \li QComboBox
+ \row \li double \li QDoubleSpinBox
+ \row \li int \li{1,2} QSpinBox
+ \row \li unsigned int
+ \row \li QDate \li QDateEdit
+ \row \li QDateTime \li QDateTimeEdit
+ \row \li QPixmap \li QLabel
+ \row \li QString \li QLineEdit
+ \row \li QTime \li QTimeEdit
\endtable
Additional editors can be registered with the registerEditor() function.
/*!
Registers an item editor creator specified by \a creator for the given \a userType of data.
- \bold{Note:} The factory takes ownership of the item editor creator and will destroy
+ \b{Note:} The factory takes ownership of the item editor creator and will destroy
it if a new creator for the same type is registered later.
\sa createEditor()
be rendered as large or small icons depending on their iconSize().
\table 100%
- \row \o \inlineimage windowsxp-listview.png Screenshot of a Windows XP style list view
- \o \inlineimage macintosh-listview.png Screenshot of a Macintosh style table view
- \o \inlineimage plastique-listview.png Screenshot of a Plastique style table view
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} list view.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} list view.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} list view.
+ \row \li \inlineimage windowsxp-listview.png Screenshot of a Windows XP style list view
+ \li \inlineimage macintosh-listview.png Screenshot of a Macintosh style table view
+ \li \inlineimage plastique-listview.png Screenshot of a Plastique style table view
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} list view.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} list view.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} list view.
\endtable
\section1 Improving Performance
new current item and the item that was previously current.
\table 100%
- \row \o \inlineimage windowsxp-listview.png Screenshot of a Windows XP style list widget
- \o \inlineimage macintosh-listview.png Screenshot of a Macintosh style table widget
- \o \inlineimage plastique-listview.png Screenshot of a Plastique style table widget
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} list widget.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} list widget.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} list widget.
+ \row \li \inlineimage windowsxp-listview.png Screenshot of a Windows XP style list widget
+ \li \inlineimage macintosh-listview.png Screenshot of a Macintosh style table widget
+ \li \inlineimage plastique-listview.png Screenshot of a Plastique style table widget
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} list widget.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} list widget.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} list widget.
\endtable
\sa QListWidgetItem, QListView, QTreeView, {Model/View Programming},
each of the roles to determine the appearance of items in views.
\table
- \header \o Role \o Accepted Types
+ \header \li Role \li Accepted Types
\omit
- \row \o \l Qt::AccessibleDescriptionRole \o QString
- \row \o \l Qt::AccessibleTextRole \o QString
+ \row \li \l Qt::AccessibleDescriptionRole \li QString
+ \row \li \l Qt::AccessibleTextRole \li QString
\endomit
- \row \o \l Qt::BackgroundRole \o QBrush
- \row \o \l Qt::BackgroundColorRole \o QColor (obsolete; use Qt::BackgroundRole instead)
- \row \o \l Qt::CheckStateRole \o Qt::CheckState
- \row \o \l Qt::DecorationRole \o QIcon, QPixmap, QImage and QColor
- \row \o \l Qt::DisplayRole \o QString and types with a string representation
- \row \o \l Qt::EditRole \o See QItemEditorFactory for details
- \row \o \l Qt::FontRole \o QFont
- \row \o \l Qt::SizeHintRole \o QSize
+ \row \li \l Qt::BackgroundRole \li QBrush
+ \row \li \l Qt::BackgroundColorRole \li QColor (obsolete; use Qt::BackgroundRole instead)
+ \row \li \l Qt::CheckStateRole \li Qt::CheckState
+ \row \li \l Qt::DecorationRole \li QIcon, QPixmap, QImage and QColor
+ \row \li \l Qt::DisplayRole \li QString and types with a string representation
+ \row \li \l Qt::EditRole \li See QItemEditorFactory for details
+ \row \li \l Qt::FontRole \li QFont
+ \row \li \l Qt::SizeHintRole \li QSize
\omit
- \row \o \l Qt::StatusTipRole \o
+ \row \li \l Qt::StatusTipRole \li
\endomit
- \row \o \l Qt::TextAlignmentRole \o Qt::Alignment
- \row \o \l Qt::ForegroundRole \o QBrush
- \row \o \l Qt::TextColorRole \o QColor (obsolete; use Qt::ForegroundRole instead)
+ \row \li \l Qt::TextAlignmentRole \li Qt::Alignment
+ \row \li \l Qt::ForegroundRole \li QBrush
+ \row \li \l Qt::TextColorRole \li QColor (obsolete; use Qt::ForegroundRole instead)
\omit
- \row \o \l Qt::ToolTipRole
- \row \o \l Qt::WhatsThisRole
+ \row \li \l Qt::ToolTipRole
+ \row \li \l Qt::WhatsThisRole
\endomit
\endtable
following virtual functions must be reimplemented:
\list
- \o createEditor() returns the widget used to change data from the model
+ \li createEditor() returns the widget used to change data from the model
and can be reimplemented to customize editing behavior.
- \o setEditorData() provides the widget with data to manipulate.
- \o updateEditorGeometry() ensures that the editor is displayed correctly
+ \li setEditorData() provides the widget with data to manipulate.
+ \li updateEditorGeometry() ensures that the editor is displayed correctly
with respect to the item view.
- \o setModelData() returns updated data to the model.
+ \li setModelData() returns updated data to the model.
\endlist
The \l{Star Delegate Example}{Star Delegate} example creates
key press events are handled by default:
\list
- \o \gui Tab
- \o \gui Backtab
- \o \gui Enter
- \o \gui Return
- \o \gui Esc
+ \li \gui Tab
+ \li \gui Backtab
+ \li \gui Enter
+ \li \gui Return
+ \li \gui Esc
\endlist
In the case of \gui Tab, \gui Backtab, \gui Enter and \gui Return
later retrieved with \l{QAbstractItemView::}{indexWidget()}.
\table
- \row \o \inlineimage qtableview-resized.png
- \o By default, the cells in a table do not expand to fill the available space.
+ \row \li \inlineimage qtableview-resized.png
+ \li By default, the cells in a table do not expand to fill the available space.
You can make the cells fill the available space by stretching the last
header section. Access the relevant header using horizontalHeader()
its appearance in other styles.
\table 100%
- \row \o \inlineimage windowsxp-tableview.png Screenshot of a Windows XP style table view
- \o \inlineimage macintosh-tableview.png Screenshot of a Macintosh style table view
- \o \inlineimage plastique-tableview.png Screenshot of a Plastique style table view
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} table view.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} table view.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} table view.
+ \row \li \inlineimage windowsxp-tableview.png Screenshot of a Windows XP style table view
+ \li \inlineimage macintosh-tableview.png Screenshot of a Macintosh style table view
+ \li \inlineimage plastique-tableview.png Screenshot of a Plastique style table view
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} table view.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} table view.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} table view.
\endtable
\sa QTableWidget, {View Classes}, QAbstractItemModel, QAbstractItemView,
clear() function.
\table 100%
- \row \o \inlineimage windowsxp-tableview.png Screenshot of a Windows XP style table widget
- \o \inlineimage macintosh-tableview.png Screenshot of a Macintosh style table widget
- \o \inlineimage plastique-tableview.png Screenshot of a Plastique style table widget
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} table widget.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} table widget.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} table widget.
+ \row \li \inlineimage windowsxp-tableview.png Screenshot of a Windows XP style table widget
+ \li \inlineimage macintosh-tableview.png Screenshot of a Macintosh style table widget
+ \li \inlineimage plastique-tableview.png Screenshot of a Plastique style table widget
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} table widget.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} table widget.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} table widget.
\endtable
\sa QTableWidgetItem, QTableView, {Model/View Programming}
navigate in the view and interact with the contents of items:
\table
- \header \o Key \o Action
- \row \o Up \o Moves the cursor to the item in the same column on
+ \header \li Key \li Action
+ \row \li Up \li Moves the cursor to the item in the same column on
the previous row. If the parent of the current item has no more rows to
navigate to, the cursor moves to the relevant item in the last row
of the sibling that precedes the parent.
- \row \o Down \o Moves the cursor to the item in the same column on
+ \row \li Down \li Moves the cursor to the item in the same column on
the next row. If the parent of the current item has no more rows to
navigate to, the cursor moves to the relevant item in the first row
of the sibling that follows the parent.
- \row \o Left \o Hides the children of the current item (if present)
+ \row \li Left \li Hides the children of the current item (if present)
by collapsing a branch.
- \row \o Minus \o Same as LeftArrow.
- \row \o Right \o Reveals the children of the current item (if present)
+ \row \li Minus \li Same as LeftArrow.
+ \row \li Right \li Reveals the children of the current item (if present)
by expanding a branch.
- \row \o Plus \o Same as RightArrow.
- \row \o Asterisk \o Expands all children of the current item (if present).
- \row \o PageUp \o Moves the cursor up one page.
- \row \o PageDown \o Moves the cursor down one page.
- \row \o Home \o Moves the cursor to an item in the same column of the first
+ \row \li Plus \li Same as RightArrow.
+ \row \li Asterisk \li Expands all children of the current item (if present).
+ \row \li PageUp \li Moves the cursor up one page.
+ \row \li PageDown \li Moves the cursor down one page.
+ \row \li Home \li Moves the cursor to an item in the same column of the first
row of the first top-level item in the model.
- \row \o End \o Moves the cursor to an item in the same column of the last
+ \row \li End \li Moves the cursor to an item in the same column of the last
row of the last top-level item in the model.
- \row \o F2 \o In editable models, this opens the current item for editing.
+ \row \li F2 \li In editable models, this opens the current item for editing.
The Escape key can be used to cancel the editing process and revert
any changes to the data displayed.
\endtable
\endomit
\table 100%
- \row \o \inlineimage windowsxp-treeview.png Screenshot of a Windows XP style tree view
- \o \inlineimage macintosh-treeview.png Screenshot of a Macintosh style tree view
- \o \inlineimage plastique-treeview.png Screenshot of a Plastique style tree view
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} tree view.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} tree view.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} tree view.
+ \row \li \inlineimage windowsxp-treeview.png Screenshot of a Windows XP style tree view
+ \li \inlineimage macintosh-treeview.png Screenshot of a Macintosh style tree view
+ \li \inlineimage plastique-treeview.png Screenshot of a Plastique style tree view
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} tree view.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} tree view.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} tree view.
\endtable
\section1 Improving Performance
}
/** \internal
- creates and initialize the viewItem structure of the children of the element \i
+ creates and initialize the viewItem structure of the children of the element \li
set \a recursiveExpanding if the function has to expand all the children (called from expandAll)
\a afterIsUninitialized is when we recurse from layout(-1), it means all the items after 'i' are
whether sorting is enabled.
\table 100%
- \row \o \inlineimage windowsxp-treeview.png Screenshot of a Windows XP style tree widget
- \o \inlineimage macintosh-treeview.png Screenshot of a Macintosh style tree widget
- \o \inlineimage plastique-treeview.png Screenshot of a Plastique style tree widget
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} tree widget.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} tree widget.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} tree widget.
+ \row \li \inlineimage windowsxp-treeview.png Screenshot of a Windows XP style tree widget
+ \li \inlineimage macintosh-treeview.png Screenshot of a Macintosh style tree widget
+ \li \inlineimage plastique-treeview.png Screenshot of a Plastique style tree widget
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} tree widget.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} tree widget.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} tree widget.
\endtable
\sa QTreeWidgetItem, QTreeWidgetItemIterator, QTreeView,
/*!
Clears the tree widget by removing all of its items and selections.
- \bold{Note:} Since each item is removed from the tree widget before being
+ \b{Note:} Since each item is removed from the tree widget before being
deleted, the return value of QTreeWidgetItem::treeWidget() will be invalid
when called from an item's destructor.
for QWidget-based applications. It handles widget specific initialization,
finalization, and provides session management.
- For any GUI application using Qt, there is precisely \bold one QApplication
+ For any GUI application using Qt, there is precisely \b one QApplication
object, no matter whether the application has 0, 1, 2 or more windows at
any given time. For non-QWidget based Qt applications, use QGuiApplication instead,
as it does not depend on the \l QtWidgets library.
QApplication's main areas of responsibility are:
\list
- \o It initializes the application with the user's desktop settings
+ \li It initializes the application with the user's desktop settings
such as palette(), font() and doubleClickInterval(). It keeps
track of these properties in case the user changes the desktop
globally, for example through some kind of control panel.
- \o It performs event handling, meaning that it receives events
+ \li It performs event handling, meaning that it receives events
from the underlying window system and dispatches them to the
relevant widgets. By using sendEvent() and postEvent() you can
send your own events to widgets.
- \o It parses common command line arguments and sets its internal
+ \li It parses common command line arguments and sets its internal
state accordingly. See the \l{QApplication::QApplication()}
{constructor documentation} below for more details.
- \o It defines the application's look and feel, which is
+ \li It defines the application's look and feel, which is
encapsulated in a QStyle object. This can be changed at runtime
with setStyle().
- \o It specifies how the application is to allocate colors. See
+ \li It specifies how the application is to allocate colors. See
setColorSpec() for details.
- \o It provides localization of strings that are visible to the
+ \li It provides localization of strings that are visible to the
user via translate().
- \o It provides some magical objects like the desktop() and the
+ \li It provides some magical objects like the desktop() and the
clipboard().
- \o It knows about the application's windows. You can ask which
+ \li It knows about the application's windows. You can ask which
widget is at a certain position using widgetAt(), get a list of
topLevelWidgets() and closeAllWindows(), etc.
- \o It manages the application's mouse cursor handling, see
+ \li It manages the application's mouse cursor handling, see
setOverrideCursor()
- \o It provides support for sophisticated \l{Session Management}
+ \li It provides support for sophisticated \l{Session Management}
{session management}. This makes it possible for applications
to terminate gracefully when the user logs out, to cancel a
shutdown process if termination isn't possible and even to
\table
\header
- \o{2,1} Groups of functions
+ \li{2,1} Groups of functions
\row
- \o System settings
- \o desktopSettingsAware(),
+ \li System settings
+ \li desktopSettingsAware(),
setDesktopSettingsAware(),
cursorFlashTime(),
setCursorFlashTime(),
fontMetrics().
\row
- \o Event handling
- \o exec(),
+ \li Event handling
+ \li exec(),
processEvents(),
exit(),
quit().
notify().
\row
- \o GUI Styles
- \o style(),
+ \li GUI Styles
+ \li style(),
setStyle().
\row
- \o Color usage
- \o colorSpec(),
+ \li Color usage
+ \li colorSpec(),
setColorSpec().
\row
- \o Text handling
- \o installTranslator(),
+ \li Text handling
+ \li installTranslator(),
removeTranslator()
translate().
\row
- \o Widgets
- \o allWidgets(),
+ \li Widgets
+ \li allWidgets(),
topLevelWidgets(),
desktop(),
activePopupWidget(),
widgetAt().
\row
- \o Advanced cursor handling
- \o overrideCursor(),
+ \li Advanced cursor handling
+ \li overrideCursor(),
setOverrideCursor(),
restoreOverrideCursor().
\row
- \o Session management
- \o isSessionRestored(),
+ \li Session management
+ \li isSessionRestored(),
sessionId(),
commitData(),
saveState().
\row
- \o Miscellaneous
- \o closeAllWindows(),
+ \li Miscellaneous
+ \li closeAllWindows(),
startingUp(),
closingDown(),
type().
All Qt programs automatically support the following command line options:
\list
- \o -style= \e style, sets the application GUI style. Possible values
+ \li -style= \e style, sets the application GUI style. Possible values
are \c motif, \c windows, and \c platinum. If you compiled Qt with
additional styles or have additional styles as plugins these will
be available to the \c -style command line option.
- \o -style \e style, is the same as listed above.
- \o -stylesheet= \e stylesheet, sets the application \l styleSheet. The
+ \li -style \e style, is the same as listed above.
+ \li -stylesheet= \e stylesheet, sets the application \l styleSheet. The
value must be a path to a file that contains the Style Sheet.
\note Relative URLs in the Style Sheet file are relative to the
Style Sheet file's path.
- \o -stylesheet \e stylesheet, is the same as listed above.
- \o -session= \e session, restores the application from an earlier
+ \li -stylesheet \e stylesheet, is the same as listed above.
+ \li -session= \e session, restores the application from an earlier
\l{Session Management}{session}.
- \o -session \e session, is the same as listed above.
- \o -widgetcount, prints debug message at the end about number of
+ \li -session \e session, is the same as listed above.
+ \li -widgetcount, prints debug message at the end about number of
widgets left undestroyed and maximum number of widgets existed at
the same time
- \o -reverse, sets the application's layout direction to
+ \li -reverse, sets the application's layout direction to
Qt::RightToLeft
- \o -qmljsdebugger=, activates the QML/JS debugger with a specified port.
+ \li -qmljsdebugger=, activates the QML/JS debugger with a specified port.
The value must be of format port:1234[,block], where block is optional
and will make the application wait until a debugger connects to it.
\endlist
\since 4.4
\brief defines a threshold for auto maximizing widgets
- \bold{The auto maximize threshold is only available as part of Qt for
+ \b{The auto maximize threshold is only available as part of Qt for
Windows CE.}
This property defines a threshold for the size of a window as a percentage
the WA_InputMethodEnabled attribute set, and is typically used to launch
a virtual keyboard on devices which have very few or no keys.
- \bold{ The property only has an effect on platforms which use software input
+ \b{ The property only has an effect on platforms which use software input
panels, such as Windows CE.}
The default is platform dependent.
The options are:
\list
- \o QApplication::NormalColor. This is the default color allocation
+ \li QApplication::NormalColor. This is the default color allocation
strategy. Use this option if your application uses buttons, menus,
texts and pixmaps with few colors. With this option, the
application uses system global colors. This works fine for most
applications under X11, but on the Windows platform, it may cause
dithering of non-standard colors.
- \o QApplication::CustomColor. Use this option if your application
+ \li QApplication::CustomColor. Use this option if your application
needs a small number of custom colors. On X11, this option is the
same as NormalColor. On Windows, Qt creates a Windows palette, and
allocates colors to it on demand.
- \o QApplication::ManyColor. Use this option if your application is
+ \li QApplication::ManyColor. Use this option if your application is
very color hungry, e.g., it requires thousands of colors. \br
Under X11 the effect is:
\list
- \o For 256-color displays which have at best a 256 color true
+ \li For 256-color displays which have at best a 256 color true
color visual, the default visual is used, and colors are
allocated from a color cube. The color cube is the 6x6x6
(216 color) "Web palette" (the red, green, and blue
can be changed by the \e -ncols option. The user can force
the application to use the true color visual with the
\l{QApplication::QApplication()}{-visual} option.
- \o For 256-color displays which have a true color visual with
+ \li For 256-color displays which have a true color visual with
more than 256 colors, use that visual. Silicon Graphics X
servers this feature, for example. They provide an 8 bit
visual by default but can deliver true color when asked.
one of four functions:
\list
- \o addWidget() to add a widget to the QBoxLayout and set the
+ \li addWidget() to add a widget to the QBoxLayout and set the
widget's stretch factor. (The stretch factor is along the row of
boxes.)
- \o addSpacing() to create an empty box; this is one of the
+ \li addSpacing() to create an empty box; this is one of the
functions you use to create nice and spacious dialogs. See below
for ways to set margins.
- \o addStretch() to create an empty, stretchable box.
+ \li addStretch() to create an empty, stretchable box.
- \o addLayout() to add a box containing another QLayout to the row
+ \li addLayout() to add a box containing another QLayout to the row
and set that layout's stretch factor.
\endlist
QBoxLayout also includes two margin widths:
\list
- \o setContentsMargins() sets the width of the outer border on
+ \li setContentsMargins() sets the width of the outer border on
each side of the widget. This is the width of the reserved space
along each of the QBoxLayout's four sides.
- \o setSpacing() sets the width between neighboring boxes. (You
+ \li setSpacing() sets the width between neighboring boxes. (You
can use addSpacing() to get more space at a particular spot.)
\endlist
provides the following advantages:
\list
- \o \bold{Adherence to the different platform's look and feel guidelines.}
+ \li \b{Adherence to the different platform's look and feel guidelines.}
For example, the
\l{Mac OS X Aqua} and KDE guidelines specify that the
labels should be right-aligned, whereas Windows and GNOME
applications normally use left-alignment.
- \o \bold{Support for wrapping long rows.}
+ \li \b{Support for wrapping long rows.}
For devices with small displays, QFormLayout can be set to
\l{WrapLongRows}{wrap long rows}, or even to
\l{WrapAllRows}{wrap all rows}.
- \o \bold{Convenient API for creating label--field pairs.}
+ \li \b{Convenient API for creating label--field pairs.}
The addRow() overload that takes a QString and a QWidget *
creates a QLabel behind the scenes and automatically set up
\table
\header
- \o QCommonStyle derived styles (except QPlastiqueStyle)
- \o QMacStyle
- \o QPlastiqueStyle
- \o Qt Extended styles
+ \li QCommonStyle derived styles (except QPlastiqueStyle)
+ \li QMacStyle
+ \li QPlastiqueStyle
+ \li Qt Extended styles
\row
- \o \inlineimage qformlayout-win.png
- \o \inlineimage qformlayout-mac.png
- \o \inlineimage qformlayout-kde.png
- \o \inlineimage qformlayout-qpe.png
+ \li \inlineimage qformlayout-win.png
+ \li \inlineimage qformlayout-mac.png
+ \li \inlineimage qformlayout-kde.png
+ \li \inlineimage qformlayout-qpe.png
\row
- \o Traditional style used for Windows, GNOME, and earlier
+ \li Traditional style used for Windows, GNOME, and earlier
versions of KDE. Labels are left aligned, and expanding
fields grow to fill the available space. (This normally
corresponds to what we would get using a two-column
QGridLayout.)
- \o Style based on the
+ \li Style based on the
\l{Mac OS X Aqua} guidelines. Labels are right-aligned,
the fields don't grow beyond their size hint, and the
form is horizontally centered.
- \o Recommended style for
+ \li Recommended style for
\l{KDE applications}. Similar to MacStyle, except that the form
is left-aligned and all fields grow to fill the available
space.
- \o Default style for Qt Extended styles. Labels are right-aligned,
+ \li Default style for Qt Extended styles. Labels are right-aligned,
expanding fields grow to fill the available space, and row
wrapping is enabled for long lines.
\endtable
If the cell is already occupied, the \a widget is not inserted and an error message is
sent to the console.
- \bold{Note:} For most applications, addRow() or insertRow() should be used instead of setWidget().
+ \b{Note:} For most applications, addRow() or insertRow() should be used instead of setWidget().
\sa setLayout()
*/
If the cell is already occupied, the \a layout is not inserted and an error message is
sent to the console.
- \bold{Note:} For most applications, addRow() or insertRow() should be used instead of setLayout().
+ \b{Note:} For most applications, addRow() or insertRow() should be used instead of setLayout().
\sa setWidget()
*/
specification can be obtained here:
\list
- \o \l{http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html}
- \o \l{http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html}
+ \li \l{http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html}
+ \li \l{http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html}
\endlist
To fetch an icon from the current icon theme:
\ingroup plugins
\inmodule QtWidgets
- \bold {Use QIconEnginePluginV2 instead.}
+ \b {Use QIconEnginePluginV2 instead.}
The icon engine plugin is a simple plugin interface that makes it easy to
create custom icon engines that can be loaded dynamically into applications
to a layout, use the addWidget() function; to add a child layout, use the
addLayout() function provided by the relevant QLayout subclass.
- \bold{Note:} The ownership of \a item is transferred to the layout, and it's
+ \b{Note:} The ownership of \a item is transferred to the layout, and it's
the layout's responsibility to delete it.
\sa addWidget(), QBoxLayout::addLayout(), QGridLayout::addLayout()
is the caller's responsibility to give the widget a reasonable
geometry or to put the widget back into a layout.
- \bold{Note:} The ownership of \a widget remains the same as
+ \b{Note:} The ownership of \a widget remains the same as
when it was added.
\sa removeItem(), QWidget::setGeometry(), addWidget()
manipulating empty space in layouts:
\table
- \header \o Class
- \o Functions
- \row \o QHBoxLayout
- \o \l{QBoxLayout::addSpacing()}{addSpacing()},
+ \header \li Class
+ \li Functions
+ \row \li QHBoxLayout
+ \li \l{QBoxLayout::addSpacing()}{addSpacing()},
\l{QBoxLayout::addStretch()}{addStretch()},
\l{QBoxLayout::insertSpacing()}{insertSpacing()},
\l{QBoxLayout::insertStretch()}{insertStretch()}
- \row \o QGridLayout
- \o \l{QGridLayout::setRowMinimumHeight()}{setRowMinimumHeight()},
+ \row \li QGridLayout
+ \li \l{QGridLayout::setRowMinimumHeight()}{setRowMinimumHeight()},
\l{QGridLayout::setRowStretch()}{setRowStretch()},
\l{QGridLayout::setColumnMinimumWidth()}{setColumnMinimumWidth()},
\l{QGridLayout::setColumnStretch()}{setColumnStretch()}
manipulating widgets in layouts:
\table
- \header \o Class
- \o Functions
- \row \o QBoxLayout
- \o \l{QBoxLayout::addWidget()}{addWidget()},
+ \header \li Class
+ \li Functions
+ \row \li QBoxLayout
+ \li \l{QBoxLayout::addWidget()}{addWidget()},
\l{QBoxLayout::insertWidget()}{insertWidget()},
\l{QBoxLayout::setStretchFactor()}{setStretchFactor()}
- \row \o QGridLayout
- \o \l{QGridLayout::addWidget()}{addWidget()}
- \row \o QStackedLayout
- \o \l{QStackedLayout::addWidget()}{addWidget()},
+ \row \li QGridLayout
+ \li \l{QGridLayout::addWidget()}{addWidget()}
+ \row \li QStackedLayout
+ \li \l{QStackedLayout::addWidget()}{addWidget()},
\l{QStackedLayout::insertWidget()}{insertWidget()},
\l{QStackedLayout::currentWidget()}{currentWidget()},
\l{QStackedLayout::setCurrentWidget()}{setCurrentWidget()},
/*!
Sets the alignment of this item to \a alignment.
- \bold{Note:} Item alignment is only supported by QLayoutItem subclasses
+ \b{Note:} Item alignment is only supported by QLayoutItem subclasses
where it would have a visual effect. Except for QSpacerItem, which provides
blank space for layouts, all public Qt classes that inherit QLayoutItem
support item alignment.
Every widget's constructor accepts one or two standard arguments:
\list 1
- \i \c{QWidget *parent = 0} is the parent of the new widget. If it is 0
+ \li \c{QWidget *parent = 0} is the parent of the new widget. If it is 0
(the default), the new widget will be a window. If not, it will be
a child of \e parent, and be constrained by \e parent's geometry
(unless you specify Qt::Window as window flag).
- \i \c{Qt::WindowFlags f = 0} (where available) sets the window flags;
+ \li \c{Qt::WindowFlags f = 0} (where available) sets the window flags;
the default is suitable for almost all widgets, but to get, for
example, a window without a window system frame, you must use
special flags.
starting with the most common ones:
\list
- \i paintEvent() is called whenever the widget needs to be repainted.
+ \li paintEvent() is called whenever the widget needs to be repainted.
Every widget displaying custom content must implement it. Painting
using a QPainter can only take place in a paintEvent() or a
function called by a paintEvent().
- \i resizeEvent() is called when the widget has been resized.
- \i mousePressEvent() is called when a mouse button is pressed while
+ \li resizeEvent() is called when the widget has been resized.
+ \li mousePressEvent() is called when a mouse button is pressed while
the mouse cursor is inside the widget, or when the widget has
grabbed the mouse using grabMouse(). Pressing the mouse without
releasing it is effectively the same as calling grabMouse().
- \i mouseReleaseEvent() is called when a mouse button is released. A
+ \li mouseReleaseEvent() is called when a mouse button is released. A
widget receives mouse release events when it has received the
corresponding mouse press event. This means that if the user
presses the mouse inside \e your widget, then drags the mouse
receives the release event. There is one exception: if a popup menu
appears while the mouse button is held down, this popup immediately
steals the mouse events.
- \i mouseDoubleClickEvent() is called when the user double-clicks in
+ \li mouseDoubleClickEvent() is called when the user double-clicks in
the widget. If the user double-clicks, the widget receives a mouse
press event, a mouse release event and finally this event instead
of a second mouse press event. (Some mouse move events may also be
handlers:
\list
- \i keyPressEvent() is called whenever a key is pressed, and again when
+ \li keyPressEvent() is called whenever a key is pressed, and again when
a key has been held down long enough for it to auto-repeat. The
\key Tab and \key Shift+Tab keys are only passed to the widget if
they are not used by the focus-change mechanisms. To force those
keys to be processed by your widget, you must reimplement
QWidget::event().
- \i focusInEvent() is called when the widget gains keyboard focus
+ \li focusInEvent() is called when the widget gains keyboard focus
(assuming you have called setFocusPolicy()). Well-behaved widgets
indicate that they own the keyboard focus in a clear but discreet
way.
- \i focusOutEvent() is called when the widget loses keyboard focus.
+ \li focusOutEvent() is called when the widget loses keyboard focus.
\endlist
You may be required to also reimplement some of the less common event
handlers:
\list
- \i mouseMoveEvent() is called whenever the mouse moves while a mouse
+ \li mouseMoveEvent() is called whenever the mouse moves while a mouse
button is held down. This can be useful during drag and drop
operations. If you call \l{setMouseTracking()}{setMouseTracking}(true),
you get mouse move events even when no buttons are held down.
(See also the \l{Drag and Drop} guide.)
- \i keyReleaseEvent() is called whenever a key is released and while it
+ \li keyReleaseEvent() is called whenever a key is released and while it
is held down (if the key is auto-repeating). In that case, the
widget will receive a pair of key release and key press event for
every repeat. The \key Tab and \key Shift+Tab keys are only passed
to the widget if they are not used by the focus-change mechanisms.
To force those keys to be processed by your widget, you must
reimplement QWidget::event().
- \i wheelEvent() is called whenever the user turns the mouse wheel
+ \li wheelEvent() is called whenever the user turns the mouse wheel
while the widget has the focus.
- \i enterEvent() is called when the mouse enters the widget's screen
+ \li enterEvent() is called when the mouse enters the widget's screen
space. (This excludes screen space owned by any of the widget's
children.)
- \i leaveEvent() is called when the mouse leaves the widget's screen
+ \li leaveEvent() is called when the mouse leaves the widget's screen
space. If the mouse enters a child widget it will not cause a
leaveEvent().
- \i moveEvent() is called when the widget has been moved relative to
+ \li moveEvent() is called when the widget has been moved relative to
its parent.
- \i closeEvent() is called when the user closes the widget (or when
+ \li closeEvent() is called when the user closes the widget (or when
close() is called).
\endlist
\section1 Groups of Functions and Properties
\table
- \header \i Context \i Functions and Properties
+ \header \li Context \li Functions and Properties
- \row \i Window functions \i
+ \row \li Window functions \li
show(),
hide(),
raise(),
lower(),
close().
- \row \i Top-level windows \i
+ \row \li Top-level windows \li
\l windowModified, \l windowTitle, \l windowIcon, \l windowIconText,
\l isActiveWindow, activateWindow(), \l minimized, showMinimized(),
\l maximized, showMaximized(), \l fullScreen, showFullScreen(),
showNormal().
- \row \i Window contents \i
+ \row \li Window contents \li
update(),
repaint(),
scroll().
- \row \i Geometry \i
+ \row \li Geometry \li
\l pos, x(), y(), \l rect, \l size, width(), height(), move(), resize(),
\l sizePolicy, sizeHint(), minimumSizeHint(),
updateGeometry(), layout(),
\l maximumSize, \l minimumSize, \l sizeIncrement,
\l baseSize, setFixedSize()
- \row \i Mode \i
+ \row \li Mode \li
\l visible, isVisibleTo(),
\l enabled, isEnabledTo(),
\l modal,
\l updatesEnabled,
visibleRegion().
- \row \i Look and feel \i
+ \row \li Look and feel \li
style(),
setStyle(),
\l styleSheet,
backgroundRole(), setBackgroundRole(),
fontInfo(), fontMetrics().
- \row \i Keyboard focus functions \i
+ \row \li Keyboard focus functions \li
\l focus, \l focusPolicy,
setFocus(), clearFocus(), setTabOrder(), setFocusProxy(),
focusNextChild(), focusPreviousChild().
- \row \i Mouse and keyboard grabbing \i
+ \row \li Mouse and keyboard grabbing \li
grabMouse(), releaseMouse(),
grabKeyboard(), releaseKeyboard(),
mouseGrabber(), keyboardGrabber().
- \row \i Event handlers \i
+ \row \li Event handlers \li
event(),
mousePressEvent(),
mouseReleaseEvent(),
customEvent().
changeEvent(),
- \row \i System functions \i
+ \row \li System functions \li
parentWidget(), window(), setParent(), winId(),
find(), metric().
- \row \i Interactive help \i
+ \row \li Interactive help \li
setToolTip(), setWhatsThis()
\endtable
achieve different effects:
\list
- \i The left widget has no additional properties or widget attributes
+ \li The left widget has no additional properties or widget attributes
set. This default state suits most custom widgets using
transparency, are irregularly-shaped, or do not paint over their
entire area with an opaque brush.
- \i The center widget has the \l autoFillBackground property set. This
+ \li The center widget has the \l autoFillBackground property set. This
property is used with custom widgets that rely on the widget to
supply a default background, and do not paint over their entire
area with an opaque brush.
- \i The right widget has the Qt::WA_OpaquePaintEvent widget attribute
+ \li The right widget has the Qt::WA_OpaquePaintEvent widget attribute
set. This indicates that the widget will paint over its entire area
with opaque colors. The widget's area will initially be
\e{uninitialized}, represented in the diagram with a red diagonal
Platform notes:
\list
- \o X11: This feature relies on the use of an X server that supports ARGB visuals
+ \li X11: This feature relies on the use of an X server that supports ARGB visuals
and a compositing window manager.
- \o Windows: The widget needs to have the Qt::FramelessWindowHint window flag set
+ \li Windows: The widget needs to have the Qt::FramelessWindowHint window flag set
for the translucency to work.
\endlist
one of the following options:
\list 1
- \i Use the \c{QT_USE_NATIVE_WINDOWS=1} in your environment.
- \i Set the Qt::AA_NativeWindows attribute on your application. All
+ \li Use the \c{QT_USE_NATIVE_WINDOWS=1} in your environment.
+ \li Set the Qt::AA_NativeWindows attribute on your application. All
widgets will be native widgets.
- \i Set the Qt::WA_NativeWindow attribute on widgets: The widget itself
+ \li Set the Qt::WA_NativeWindow attribute on widgets: The widget itself
and all of its ancestors will become native (unless
Qt::WA_DontCreateNativeAncestors is set).
- \i Call QWidget::winId to enforce a native window (this implies 3).
- \i Set the Qt::WA_PaintOnScreen attribute to enforce a native window
+ \li Call QWidget::winId to enforce a native window (this implies 3).
+ \li Set the Qt::WA_PaintOnScreen attribute to enforce a native window
(this implies 3).
\endlist
/*
Widget state flags:
\list
- \i Qt::WA_WState_Created The widget has a valid winId().
- \i Qt::WA_WState_Visible The widget is currently visible.
- \i Qt::WA_WState_Hidden The widget is hidden, i.e. it won't
+ \li Qt::WA_WState_Created The widget has a valid winId().
+ \li Qt::WA_WState_Visible The widget is currently visible.
+ \li Qt::WA_WState_Hidden The widget is hidden, i.e. it won't
become visible unless you call show() on it. Qt::WA_WState_Hidden
implies !Qt::WA_WState_Visible.
- \i Qt::WA_WState_CompressKeys Compress keyboard events.
- \i Qt::WA_WState_BlockUpdates Repaints and updates are disabled.
- \i Qt::WA_WState_InPaintEvent Currently processing a paint event.
- \i Qt::WA_WState_Reparented The widget has been reparented.
- \i Qt::WA_WState_ConfigPending A configuration (resize/move) event is pending.
- \i Qt::WA_WState_DND (Deprecated) The widget supports drag and drop, see setAcceptDrops().
+ \li Qt::WA_WState_CompressKeys Compress keyboard events.
+ \li Qt::WA_WState_BlockUpdates Repaints and updates are disabled.
+ \li Qt::WA_WState_InPaintEvent Currently processing a paint event.
+ \li Qt::WA_WState_Reparented The widget has been reparented.
+ \li Qt::WA_WState_ConfigPending A configuration (resize/move) event is pending.
+ \li Qt::WA_WState_DND (Deprecated) The widget supports drag and drop, see setAcceptDrops().
\endlist
*/
On Mac OS X:
\list
- \o The file name of the specified path, obtained using QFileInfo::fileName().
+ \li The file name of the specified path, obtained using QFileInfo::fileName().
\endlist
On Windows and X11:
\list
- \o The file name of the specified path, obtained using QFileInfo::fileName().
- \o An optional \c{*} character, if the \l windowModified property is set.
- \o The \c{0x2014} unicode character, padded either side by spaces.
- \o The application name, obtained from the application's
+ \li The file name of the specified path, obtained using QFileInfo::fileName().
+ \li An optional \c{*} character, if the \l windowModified property is set.
+ \li The \c{0x2014} unicode character, padded either side by spaces.
+ \li The application name, obtained from the application's
\l{QCoreApplication::}{applicationName} property.
\endlist
Widgets are hidden if:
\list
- \o they were created as independent windows,
- \o they were created as children of visible widgets,
- \o hide() or setVisible(false) was called.
+ \li they were created as independent windows,
+ \li they were created as children of visible widgets,
+ \li hide() or setVisible(false) was called.
\endlist
*/
happen for one of the following reasons:
\list
- \o repaint() or update() was invoked,
- \o the widget was obscured and has now been uncovered, or
- \o many other reasons.
+ \li repaint() or update() was invoked,
+ \li the widget was obscured and has now been uncovered, or
+ \li many other reasons.
\endlist
Many widgets can simply repaint their entire surface when asked to, but
Since Qt 4.0, QWidget automatically double-buffers its painting, so there
is no need to write double-buffering code in paintEvent() to avoid flicker.
- \bold{Note for the X11 platform}: It is possible to toggle global double
+ \b{Note for the X11 platform}: It is possible to toggle global double
buffering by calling \c qt_x11_set_global_double_buffer(). For example,
\snippet doc/src/snippets/code/src_gui_kernel_qwidget.cpp 14
\note Generally, you should refrain from calling update() or repaint()
- \bold{inside} a paintEvent(). For example, calling update() or repaint() on
+ \b{inside} a paintEvent(). For example, calling update() or repaint() on
children inside a paintevent() results in undefined behavior; the child may
or may not get a paint event.
x11Event(), winEvent() and macEvent() of Qt 4.
\table
- \header \i Platform \i Event Type Identifier \i Message Type \i Result Type
- \row \i Windows \i "windows_generic_MSG" \i MSG * \i LRESULT
+ \header \li Platform \li Event Type Identifier \li Message Type \li Result Type
+ \row \li Windows \li "windows_generic_MSG" \li MSG * \li LRESULT
\endtable
*/
If you need to change some settings when a widget is polished,
reimplement event() and handle the QEvent::Polish event type.
- \bold{Note:} The function is declared const so that it can be called from
+ \b{Note:} The function is declared const so that it can be called from
other const functions (e.g., sizeHint()).
\sa event()
\note Only visible widgets can grab mouse input. If isVisible()
returns false for a widget, that widget cannot call grabMouse().
- \note \bold{(Mac OS X developers)} For \e Cocoa, calling
+ \note \b{(Mac OS X developers)} For \e Cocoa, calling
grabMouse() on a widget only works when the mouse is inside the
frame of that widget. For \e Carbon, it works outside the widget's
frame as well, like for Windows and X11.
\warning Grabbing the mouse might lock the terminal.
- \note \bold{(Mac OS X developers)} See the note in QWidget::grabMouse().
+ \note \b{(Mac OS X developers)} See the note in QWidget::grabMouse().
\sa releaseMouse(), grabKeyboard(), releaseKeyboard(), setCursor()
*/
Note that it is up to the widget to activate the action, for example by
reimplementing mouse event handlers and calling QAction::trigger().
- \bold {Mac OS X}: If you add a widget to a menu in the application's menu
+ \b {Mac OS X}: If you add a widget to a menu in the application's menu
bar on Mac OS X, the widget will be added and it will function but with some
limitations:
\list 1
- \o The widget is reparented away from the QMenu to the native menu
+ \li The widget is reparented away from the QMenu to the native menu
view. If you show the menu in some other place (e.g. as a popup menu),
the widget will not be there.
- \o Focus/Keyboard handling of the widget is not possible.
- \o Due to Apple's design, mouse tracking on the widget currently does
+ \li Focus/Keyboard handling of the widget is not possible.
+ \li Due to Apple's design, mouse tracking on the widget currently does
not work.
- \o Connecting the triggered() signal to a slot that opens a modal
+ \li Connecting the triggered() signal to a slot that opens a modal
dialog will cause a crash in Mac OS X 10.4 (known bug acknowledged
by Apple), a workaround is to use a QueuedConnection instead of a
DirectConnection.
\list
- \i Layout - The restrictions on window layout are such that some
+ \li Layout - The restrictions on window layout are such that some
aspects of layout that are style-dependent cannot be achieved
using QLayout. Changes are being considered (and feedback would be
appreciated) to make layouts QStyle-able. Some of the restrictions
involve horizontal and vertical widget alignment and widget size
(covered below).
- \i Widget size - Mac OS X allows widgets to have specific fixed sizes. Qt
+ \li Widget size - Mac OS X allows widgets to have specific fixed sizes. Qt
does not fully implement this behavior so as to maintain cross-platform
compatibility. As a result some widgets sizes may be inappropriate (and
subsequently not rendered correctly by the HITheme APIs).The
QWidget::sizeHint() will return the appropriate size for many
managed widgets (widgets enumerated in \l QStyle::ContentsType).
- \i Effects - QMacStyle uses HITheme for performing most of the drawing, but
+ \li Effects - QMacStyle uses HITheme for performing most of the drawing, but
also uses emulation in a few cases where HITheme does not provide the
required functionality (for example, tab bars on Panther, the toolbar
separator, etc). We tried to make the emulation as close to the original as
Most QStyle draw functions take four arguments:
\list
- \o an enum value specifying which graphical element to draw
- \o a QStyleOption specifying how and where to render that element
- \o a QPainter that should be used to draw the element
- \o a QWidget on which the drawing is performed (optional)
+ \li an enum value specifying which graphical element to draw
+ \li a QStyleOption specifying how and where to render that element
+ \li a QPainter that should be used to draw the element
+ \li a QWidget on which the drawing is performed (optional)
\endlist
For example, if you want to draw a focus rectangle on your
right-to-left environment:
\list
- \o subControlRect() and subElementRect() return rectangles in screen coordinates
- \o QStyleOption::direction indicates in which direction the item should be drawn in
- \o If a style is not right-to-left aware it will display items as if it were left-to-right
- \o visualRect(), visualPos(), and visualAlignment() are helpful functions that will
+ \li subControlRect() and subElementRect() return rectangles in screen coordinates
+ \li QStyleOption::direction indicates in which direction the item should be drawn in
+ \li If a style is not right-to-left aware it will display items as if it were left-to-right
+ \li visualRect(), visualPos(), and visualAlignment() are helpful functions that will
translate from logical to screen representations.
- \o alignedRect() will return a logical rect aligned for the current direction
+ \li alignedRect() will return a logical rect aligned for the current direction
\endlist
\section1 Styles in Item Views
it uses a plain QStyleOption object.
\table
- \header \o Primitive Element \o QStyleOption Subclass \o Style Flag \o Remark
- \row \o \l PE_FrameFocusRect \o \l QStyleOptionFocusRect
- \o \l State_FocusAtBorder
- \o Whether the focus is is at the border or inside the widget.
- \row \o{1,2} \l PE_IndicatorCheckBox \o{1,2} \l QStyleOptionButton
- \o \l State_NoChange \o Indicates a "tri-state" checkbox.
- \row \o \l State_On \o Indicates the indicator is checked.
- \row \o \l PE_IndicatorRadioButton \o \l QStyleOptionButton
- \o \l State_On \o Indicates that a radio button is selected.
- \row \o{1,3} \l PE_Q3CheckListExclusiveIndicator, \l PE_Q3CheckListIndicator
- \o{1,3} \l QStyleOptionQ3ListView \o \l State_On
- \o Indicates whether or not the controller is selected.
- \row \o \l State_NoChange \o Indicates a "tri-state" controller.
- \row \o \l State_Enabled \o Indicates the controller is enabled.
- \row \o{1,4} \l PE_IndicatorBranch \o{1,4} \l QStyleOption
- \o \l State_Children \o Indicates that the control for expanding the tree to show child items, should be drawn.
- \row \o \l State_Item \o Indicates that a horizontal branch (to show a child item), should be drawn.
- \row \o \l State_Open \o Indicates that the tree branch is expanded.
- \row \o \l State_Sibling \o Indicates that a vertical line (to show a sibling item), should be drawn.
- \row \o \l PE_IndicatorHeaderArrow \o \l QStyleOptionHeader
- \o \l State_UpArrow \o Indicates that the arrow should be drawn up;
+ \header \li Primitive Element \li QStyleOption Subclass \li Style Flag \li Remark
+ \row \li \l PE_FrameFocusRect \li \l QStyleOptionFocusRect
+ \li \l State_FocusAtBorder
+ \li Whether the focus is is at the border or inside the widget.
+ \row \li{1,2} \l PE_IndicatorCheckBox \li{1,2} \l QStyleOptionButton
+ \li \l State_NoChange \li Indicates a "tri-state" checkbox.
+ \row \li \l State_On \li Indicates the indicator is checked.
+ \row \li \l PE_IndicatorRadioButton \li \l QStyleOptionButton
+ \li \l State_On \li Indicates that a radio button is selected.
+ \row \li{1,3} \l PE_Q3CheckListExclusiveIndicator, \l PE_Q3CheckListIndicator
+ \li{1,3} \l QStyleOptionQ3ListView \li \l State_On
+ \li Indicates whether or not the controller is selected.
+ \row \li \l State_NoChange \li Indicates a "tri-state" controller.
+ \row \li \l State_Enabled \li Indicates the controller is enabled.
+ \row \li{1,4} \l PE_IndicatorBranch \li{1,4} \l QStyleOption
+ \li \l State_Children \li Indicates that the control for expanding the tree to show child items, should be drawn.
+ \row \li \l State_Item \li Indicates that a horizontal branch (to show a child item), should be drawn.
+ \row \li \l State_Open \li Indicates that the tree branch is expanded.
+ \row \li \l State_Sibling \li Indicates that a vertical line (to show a sibling item), should be drawn.
+ \row \li \l PE_IndicatorHeaderArrow \li \l QStyleOptionHeader
+ \li \l State_UpArrow \li Indicates that the arrow should be drawn up;
otherwise it should be down.
- \row \o \l PE_FrameGroupBox, \l PE_Frame, \l PE_FrameLineEdit,
+ \row \li \l PE_FrameGroupBox, \l PE_Frame, \l PE_FrameLineEdit,
\l PE_FrameMenu, \l PE_FrameDockWidget, \l PE_FrameWindow
- \o \l QStyleOptionFrame \o \l State_Sunken
- \o Indicates that the Frame should be sunken.
- \row \o \l PE_IndicatorToolBarHandle \o \l QStyleOption
- \o \l State_Horizontal \o Indicates that the window handle is horizontal
+ \li \l QStyleOptionFrame \li \l State_Sunken
+ \li Indicates that the Frame should be sunken.
+ \row \li \l PE_IndicatorToolBarHandle \li \l QStyleOption
+ \li \l State_Horizontal \li Indicates that the window handle is horizontal
instead of vertical.
- \row \o \l PE_Q3DockWindowSeparator \o \l QStyleOption
- \o \l State_Horizontal \o Indicates that the separator is horizontal
+ \row \li \l PE_Q3DockWindowSeparator \li \l QStyleOption
+ \li \l State_Horizontal \li Indicates that the separator is horizontal
instead of vertical.
- \row \o \l PE_IndicatorSpinPlus, \l PE_IndicatorSpinMinus, \l PE_IndicatorSpinUp,
+ \row \li \l PE_IndicatorSpinPlus, \l PE_IndicatorSpinMinus, \l PE_IndicatorSpinUp,
\l PE_IndicatorSpinDown,
- \o \l QStyleOptionSpinBox
- \o \l State_Sunken \o Indicates that the button is pressed.
- \row \o{1,5} \l PE_PanelButtonCommand
- \o{1,5} \l QStyleOptionButton
- \o \l State_Enabled \o Set if the button is enabled.
- \row \o \l State_HasFocus \o Set if the button has input focus.
- \row \o \l State_Raised \o Set if the button is not down, not on and not flat.
- \row \o \l State_On \o Set if the button is a toggle button and is toggled on.
- \row \o \l State_Sunken
- \o Set if the button is down (i.e., the mouse button or the
+ \li \l QStyleOptionSpinBox
+ \li \l State_Sunken \li Indicates that the button is pressed.
+ \row \li{1,5} \l PE_PanelButtonCommand
+ \li{1,5} \l QStyleOptionButton
+ \li \l State_Enabled \li Set if the button is enabled.
+ \row \li \l State_HasFocus \li Set if the button has input focus.
+ \row \li \l State_Raised \li Set if the button is not down, not on and not flat.
+ \row \li \l State_On \li Set if the button is a toggle button and is toggled on.
+ \row \li \l State_Sunken
+ \li Set if the button is down (i.e., the mouse button or the
space bar is pressed on the button).
\endtable
it uses a plain QStyleOption object.
\table
- \header \o Control Element \o QStyleOption Subclass \o Style Flag \o Remark
- \row \o{1,5} \l CE_MenuItem, \l CE_MenuBarItem
- \o{1,5} \l QStyleOptionMenuItem
- \o \l State_Selected \o The menu item is currently selected item.
- \row \o \l State_Enabled \o The item is enabled.
- \row \o \l State_DownArrow \o Indicates that a scroll down arrow should be drawn.
- \row \o \l State_UpArrow \o Indicates that a scroll up arrow should be drawn
- \row \o \l State_HasFocus \o Set if the menu bar has input focus.
-
- \row \o{1,5} \l CE_PushButton, \l CE_PushButtonBevel, \l CE_PushButtonLabel
- \o{1,5} \l QStyleOptionButton
- \o \l State_Enabled \o Set if the button is enabled.
- \row \o \l State_HasFocus \o Set if the button has input focus.
- \row \o \l State_Raised \o Set if the button is not down, not on and not flat.
- \row \o \l State_On \o Set if the button is a toggle button and is toggled on.
- \row \o \l State_Sunken
- \o Set if the button is down (i.e., the mouse button or the
+ \header \li Control Element \li QStyleOption Subclass \li Style Flag \li Remark
+ \row \li{1,5} \l CE_MenuItem, \l CE_MenuBarItem
+ \li{1,5} \l QStyleOptionMenuItem
+ \li \l State_Selected \li The menu item is currently selected item.
+ \row \li \l State_Enabled \li The item is enabled.
+ \row \li \l State_DownArrow \li Indicates that a scroll down arrow should be drawn.
+ \row \li \l State_UpArrow \li Indicates that a scroll up arrow should be drawn
+ \row \li \l State_HasFocus \li Set if the menu bar has input focus.
+
+ \row \li{1,5} \l CE_PushButton, \l CE_PushButtonBevel, \l CE_PushButtonLabel
+ \li{1,5} \l QStyleOptionButton
+ \li \l State_Enabled \li Set if the button is enabled.
+ \row \li \l State_HasFocus \li Set if the button has input focus.
+ \row \li \l State_Raised \li Set if the button is not down, not on and not flat.
+ \row \li \l State_On \li Set if the button is a toggle button and is toggled on.
+ \row \li \l State_Sunken
+ \li Set if the button is down (i.e., the mouse button or the
space bar is pressed on the button).
- \row \o{1,6} \l CE_RadioButton, \l CE_RadioButtonLabel,
+ \row \li{1,6} \l CE_RadioButton, \l CE_RadioButtonLabel,
\l CE_CheckBox, \l CE_CheckBoxLabel
- \o{1,6} \l QStyleOptionButton
- \o \l State_Enabled \o Set if the button is enabled.
- \row \o \l State_HasFocus \o Set if the button has input focus.
- \row \o \l State_On \o Set if the button is checked.
- \row \o \l State_Off \o Set if the button is not checked.
- \row \o \l State_NoChange \o Set if the button is in the NoChange state.
- \row \o \l State_Sunken
- \o Set if the button is down (i.e., the mouse button or
+ \li{1,6} \l QStyleOptionButton
+ \li \l State_Enabled \li Set if the button is enabled.
+ \row \li \l State_HasFocus \li Set if the button has input focus.
+ \row \li \l State_On \li Set if the button is checked.
+ \row \li \l State_Off \li Set if the button is not checked.
+ \row \li \l State_NoChange \li Set if the button is in the NoChange state.
+ \row \li \l State_Sunken
+ \li Set if the button is down (i.e., the mouse button or
the space bar is pressed on the button).
- \row \o{1,2} \l CE_ProgressBarContents, \l CE_ProgressBarLabel,
+ \row \li{1,2} \l CE_ProgressBarContents, \l CE_ProgressBarLabel,
\l CE_ProgressBarGroove
- \o{1,2} \l QStyleOptionProgressBar
- \o \l State_Enabled \o Set if the progress bar is enabled.
- \row \o \l State_HasFocus \o Set if the progress bar has input focus.
-
- \row \o \l CE_Header, \l CE_HeaderSection, \l CE_HeaderLabel \o \l QStyleOptionHeader \o \o
-
- \row \o{1,3} \l CE_TabBarTab, CE_TabBarTabShape, CE_TabBarTabLabel
- \o{1,3} \l QStyleOptionTab
- \o \l State_Enabled \o Set if the tab bar is enabled.
- \row \o \l State_Selected \o The tab bar is the currently selected tab bar.
- \row \o \l State_HasFocus \o Set if the tab bar tab has input focus.
-
- \row \o{1,7} \l CE_ToolButtonLabel
- \o{1,7} \l QStyleOptionToolButton
- \o \l State_Enabled \o Set if the tool button is enabled.
- \row \o \l State_HasFocus \o Set if the tool button has input focus.
- \row \o \l State_Sunken
- \o Set if the tool button is down (i.e., a mouse button or
+ \li{1,2} \l QStyleOptionProgressBar
+ \li \l State_Enabled \li Set if the progress bar is enabled.
+ \row \li \l State_HasFocus \li Set if the progress bar has input focus.
+
+ \row \li \l CE_Header, \l CE_HeaderSection, \l CE_HeaderLabel \li \l QStyleOptionHeader \li \li
+
+ \row \li{1,3} \l CE_TabBarTab, CE_TabBarTabShape, CE_TabBarTabLabel
+ \li{1,3} \l QStyleOptionTab
+ \li \l State_Enabled \li Set if the tab bar is enabled.
+ \row \li \l State_Selected \li The tab bar is the currently selected tab bar.
+ \row \li \l State_HasFocus \li Set if the tab bar tab has input focus.
+
+ \row \li{1,7} \l CE_ToolButtonLabel
+ \li{1,7} \l QStyleOptionToolButton
+ \li \l State_Enabled \li Set if the tool button is enabled.
+ \row \li \l State_HasFocus \li Set if the tool button has input focus.
+ \row \li \l State_Sunken
+ \li Set if the tool button is down (i.e., a mouse button or
the space bar is pressed).
- \row \o \l State_On \o Set if the tool button is a toggle button and is toggled on.
- \row \o \l State_AutoRaise \o Set if the tool button has auto-raise enabled.
- \row \o \l State_MouseOver \o Set if the mouse pointer is over the tool button.
- \row \o \l State_Raised \o Set if the button is not down and is not on.
-
- \row \o \l CE_ToolBoxTab \o \l QStyleOptionToolBox
- \o \l State_Selected \o The tab is the currently selected tab.
- \row \o{1,3} \l CE_HeaderSection \o{1,3} \l QStyleOptionHeader
- \o \l State_Sunken \o Indicates that the section is pressed.
- \row \o \l State_UpArrow \o Indicates that the sort indicator should be pointing up.
- \row \o \l State_DownArrow \o Indicates that the sort indicator should be pointing down.
+ \row \li \l State_On \li Set if the tool button is a toggle button and is toggled on.
+ \row \li \l State_AutoRaise \li Set if the tool button has auto-raise enabled.
+ \row \li \l State_MouseOver \li Set if the mouse pointer is over the tool button.
+ \row \li \l State_Raised \li Set if the button is not down and is not on.
+
+ \row \li \l CE_ToolBoxTab \li \l QStyleOptionToolBox
+ \li \l State_Selected \li The tab is the currently selected tab.
+ \row \li{1,3} \l CE_HeaderSection \li{1,3} \l QStyleOptionHeader
+ \li \l State_Sunken \li Indicates that the section is pressed.
+ \row \li \l State_UpArrow \li Indicates that the sort indicator should be pointing up.
+ \row \li \l State_DownArrow \li Indicates that the sort indicator should be pointing down.
\endtable
\sa drawPrimitive(), drawComplexControl()
table below for the appropriate \a option casts:
\table
- \header \o Sub Element \o QStyleOption Subclass
- \row \o \l SE_PushButtonContents \o \l QStyleOptionButton
- \row \o \l SE_PushButtonFocusRect \o \l QStyleOptionButton
- \row \o \l SE_CheckBoxIndicator \o \l QStyleOptionButton
- \row \o \l SE_CheckBoxContents \o \l QStyleOptionButton
- \row \o \l SE_CheckBoxFocusRect \o \l QStyleOptionButton
- \row \o \l SE_RadioButtonIndicator \o \l QStyleOptionButton
- \row \o \l SE_RadioButtonContents \o \l QStyleOptionButton
- \row \o \l SE_RadioButtonFocusRect \o \l QStyleOptionButton
- \row \o \l SE_ComboBoxFocusRect \o \l QStyleOptionComboBox
- \row \o \l SE_Q3DockWindowHandleRect \o \l QStyleOptionQ3DockWindow
- \row \o \l SE_ProgressBarGroove \o \l QStyleOptionProgressBar
- \row \o \l SE_ProgressBarContents \o \l QStyleOptionProgressBar
- \row \o \l SE_ProgressBarLabel \o \l QStyleOptionProgressBar
+ \header \li Sub Element \li QStyleOption Subclass
+ \row \li \l SE_PushButtonContents \li \l QStyleOptionButton
+ \row \li \l SE_PushButtonFocusRect \li \l QStyleOptionButton
+ \row \li \l SE_CheckBoxIndicator \li \l QStyleOptionButton
+ \row \li \l SE_CheckBoxContents \li \l QStyleOptionButton
+ \row \li \l SE_CheckBoxFocusRect \li \l QStyleOptionButton
+ \row \li \l SE_RadioButtonIndicator \li \l QStyleOptionButton
+ \row \li \l SE_RadioButtonContents \li \l QStyleOptionButton
+ \row \li \l SE_RadioButtonFocusRect \li \l QStyleOptionButton
+ \row \li \l SE_ComboBoxFocusRect \li \l QStyleOptionComboBox
+ \row \li \l SE_Q3DockWindowHandleRect \li \l QStyleOptionQ3DockWindow
+ \row \li \l SE_ProgressBarGroove \li \l QStyleOptionProgressBar
+ \row \li \l SE_ProgressBarContents \li \l QStyleOptionProgressBar
+ \row \li \l SE_ProgressBarLabel \li \l QStyleOptionProgressBar
\endtable
*/
appropriate subclass.
\table
- \header \o Complex Control \o QStyleOptionComplex Subclass \o Style Flag \o Remark
- \row \o{1,2} \l{CC_SpinBox} \o{1,2} \l QStyleOptionSpinBox
- \o \l State_Enabled \o Set if the spin box is enabled.
- \row \o \l State_HasFocus \o Set if the spin box has input focus.
-
- \row \o{1,2} \l {CC_ComboBox} \o{1,2} \l QStyleOptionComboBox
- \o \l State_Enabled \o Set if the combobox is enabled.
- \row \o \l State_HasFocus \o Set if the combobox has input focus.
-
- \row \o{1,2} \l {CC_ScrollBar} \o{1,2} \l QStyleOptionSlider
- \o \l State_Enabled \o Set if the scroll bar is enabled.
- \row \o \l State_HasFocus \o Set if the scroll bar has input focus.
-
- \row \o{1,2} \l {CC_Slider} \o{1,2} \l QStyleOptionSlider
- \o \l State_Enabled \o Set if the slider is enabled.
- \row \o \l State_HasFocus \o Set if the slider has input focus.
-
- \row \o{1,2} \l {CC_Dial} \o{1,2} \l QStyleOptionSlider
- \o \l State_Enabled \o Set if the dial is enabled.
- \row \o \l State_HasFocus \o Set if the dial has input focus.
-
- \row \o{1,6} \l {CC_ToolButton} \o{1,6} \l QStyleOptionToolButton
- \o \l State_Enabled \o Set if the tool button is enabled.
- \row \o \l State_HasFocus \o Set if the tool button has input focus.
- \row \o \l State_DownArrow \o Set if the tool button is down (i.e., a mouse
+ \header \li Complex Control \li QStyleOptionComplex Subclass \li Style Flag \li Remark
+ \row \li{1,2} \l{CC_SpinBox} \li{1,2} \l QStyleOptionSpinBox
+ \li \l State_Enabled \li Set if the spin box is enabled.
+ \row \li \l State_HasFocus \li Set if the spin box has input focus.
+
+ \row \li{1,2} \l {CC_ComboBox} \li{1,2} \l QStyleOptionComboBox
+ \li \l State_Enabled \li Set if the combobox is enabled.
+ \row \li \l State_HasFocus \li Set if the combobox has input focus.
+
+ \row \li{1,2} \l {CC_ScrollBar} \li{1,2} \l QStyleOptionSlider
+ \li \l State_Enabled \li Set if the scroll bar is enabled.
+ \row \li \l State_HasFocus \li Set if the scroll bar has input focus.
+
+ \row \li{1,2} \l {CC_Slider} \li{1,2} \l QStyleOptionSlider
+ \li \l State_Enabled \li Set if the slider is enabled.
+ \row \li \l State_HasFocus \li Set if the slider has input focus.
+
+ \row \li{1,2} \l {CC_Dial} \li{1,2} \l QStyleOptionSlider
+ \li \l State_Enabled \li Set if the dial is enabled.
+ \row \li \l State_HasFocus \li Set if the dial has input focus.
+
+ \row \li{1,6} \l {CC_ToolButton} \li{1,6} \l QStyleOptionToolButton
+ \li \l State_Enabled \li Set if the tool button is enabled.
+ \row \li \l State_HasFocus \li Set if the tool button has input focus.
+ \row \li \l State_DownArrow \li Set if the tool button is down (i.e., a mouse
button or the space bar is pressed).
- \row \o \l State_On \o Set if the tool button is a toggle button
+ \row \li \l State_On \li Set if the tool button is a toggle button
and is toggled on.
- \row \o \l State_AutoRaise \o Set if the tool button has auto-raise enabled.
- \row \o \l State_Raised \o Set if the button is not down, not on, and doesn't
+ \row \li \l State_AutoRaise \li Set if the tool button has auto-raise enabled.
+ \row \li \l State_Raised \li Set if the button is not down, not on, and doesn't
contain the mouse when auto-raise is enabled.
- \row \o \l{CC_TitleBar} \o \l QStyleOptionTitleBar
- \o \l State_Enabled \o Set if the title bar is enabled.
+ \row \li \l{CC_TitleBar} \li \l QStyleOptionTitleBar
+ \li \l State_Enabled \li Set if the title bar is enabled.
- \row \o \l{CC_Q3ListView} \o \l QStyleOptionQ3ListView
- \o \l State_Enabled \o Set if the list view is enabled.
+ \row \li \l{CC_Q3ListView} \li \l QStyleOptionQ3ListView
+ \li \l State_Enabled \li Set if the list view is enabled.
\endtable
for the appropriate \a option casts:
\table
- \header \o Pixel Metric \o QStyleOption Subclass
- \row \o \l PM_SliderControlThickness \o \l QStyleOptionSlider
- \row \o \l PM_SliderLength \o \l QStyleOptionSlider
- \row \o \l PM_SliderTickmarkOffset \o \l QStyleOptionSlider
- \row \o \l PM_SliderSpaceAvailable \o \l QStyleOptionSlider
- \row \o \l PM_ScrollBarExtent \o \l QStyleOptionSlider
- \row \o \l PM_TabBarTabOverlap \o \l QStyleOptionTab
- \row \o \l PM_TabBarTabHSpace \o \l QStyleOptionTab
- \row \o \l PM_TabBarTabVSpace \o \l QStyleOptionTab
- \row \o \l PM_TabBarBaseHeight \o \l QStyleOptionTab
- \row \o \l PM_TabBarBaseOverlap \o \l QStyleOptionTab
+ \header \li Pixel Metric \li QStyleOption Subclass
+ \row \li \l PM_SliderControlThickness \li \l QStyleOptionSlider
+ \row \li \l PM_SliderLength \li \l QStyleOptionSlider
+ \row \li \l PM_SliderTickmarkOffset \li \l QStyleOptionSlider
+ \row \li \l PM_SliderSpaceAvailable \li \l QStyleOptionSlider
+ \row \li \l PM_ScrollBarExtent \li \l QStyleOptionSlider
+ \row \li \l PM_TabBarTabOverlap \li \l QStyleOptionTab
+ \row \li \l PM_TabBarTabHSpace \li \l QStyleOptionTab
+ \row \li \l PM_TabBarTabVSpace \li \l QStyleOptionTab
+ \row \li \l PM_TabBarBaseHeight \li \l QStyleOptionTab
+ \row \li \l PM_TabBarBaseOverlap \li \l QStyleOptionTab
\endtable
Some pixel metrics are called from widgets and some are only called
See the table below for the appropriate \a option casts:
\table
- \header \o Contents Type \o QStyleOption Subclass
- \row \o \l CT_PushButton \o \l QStyleOptionButton
- \row \o \l CT_CheckBox \o \l QStyleOptionButton
- \row \o \l CT_RadioButton \o \l QStyleOptionButton
- \row \o \l CT_ToolButton \o \l QStyleOptionToolButton
- \row \o \l CT_ComboBox \o \l QStyleOptionComboBox
- \row \o \l CT_Splitter \o \l QStyleOption
- \row \o \l CT_Q3DockWindow \o \l QStyleOptionQ3DockWindow
- \row \o \l CT_ProgressBar \o \l QStyleOptionProgressBar
- \row \o \l CT_MenuItem \o \l QStyleOptionMenuItem
+ \header \li Contents Type \li QStyleOption Subclass
+ \row \li \l CT_PushButton \li \l QStyleOptionButton
+ \row \li \l CT_CheckBox \li \l QStyleOptionButton
+ \row \li \l CT_RadioButton \li \l QStyleOptionButton
+ \row \li \l CT_ToolButton \li \l QStyleOptionToolButton
+ \row \li \l CT_ComboBox \li \l QStyleOptionComboBox
+ \row \li \l CT_Splitter \li \l QStyleOption
+ \row \li \l CT_Q3DockWindow \li \l QStyleOptionQ3DockWindow
+ \row \li \l CT_ProgressBar \li \l QStyleOptionProgressBar
+ \row \li \l CT_MenuItem \li \l QStyleOptionMenuItem
\endtable
\sa ContentsType QStyleOption
\brief the text for the menu item
Note that the text format is something like this "Menu
- text\bold{\\t}Shortcut".
+ text\b{\\t}Shortcut".
If the menu item doesn't have a shortcut, it will just contain the
menu item's text. The default value is an empty string.
\inmodule QtWidgets
This class is used for drawing the compatibility Q3ListView's
- items. \bold {It is not recommended for new classes}.
+ items. \b {It is not recommended for new classes}.
QStyleOptionQ3ListViewItem contains all the information that
QStyle functions need to draw the Q3ListView items.
\inmodule QtWidgets
- This class is used for drawing the compatibility Q3ListView. \bold
+ This class is used for drawing the compatibility Q3ListView. \b
{It is not recommended for new classes}.
QStyleOptionQ3ListView contains all the information that QStyle
\inmodule QtWidgets
This class is used for drawing the old Q3DockWindow and its
- parts. \bold {It is not recommended for new classes}.
+ parts. \b {It is not recommended for new classes}.
QStyleOptionQ3DockWindow contains all the information that QStyle
functions need to draw Q3DockWindow and its parts.
The sort order (i.e ascending or descending order) of the model is determined
dynamically by inspecting the contents of the model.
- \bold{Note:} The performance improvements described above cannot take place
+ \b{Note:} The performance improvements described above cannot take place
when the completer's \l caseSensitivity is different to the case sensitivity
used by the model's when sorting.
around the axis. The threshold must be in the range \c 0 to \c 1.
\value ScrollingCurve The QEasingCurve used when decelerating the scrolling velocity after an
- user initiated flick. Please note that this is the easing curve for the positions, \bold{not}
+ user initiated flick. Please note that this is the easing curve for the positions, \b{not}
the velocity: the default is QEasingCurve::OutQuad, which results in a linear decrease in
velocity (1st derivative) and a constant deceleration (2nd derivative).
The QSystemTrayIcon class can be used on the following platforms:
\list
- \o All supported versions of Windows.
- \o All window managers for X11 that implement the \l{freedesktop.org} system
+ \li All supported versions of Windows.
+ \li All window managers for X11 that implement the \l{freedesktop.org} system
tray specification, including recent versions of KDE and GNOME.
- \o All supported versions of Mac OS X. Note that the Growl
+ \li All supported versions of Mac OS X. Note that the Growl
notification system must be installed for
QSystemTrayIcon::showMessage() to display messages.
\endlist
While a macro is composed, the stack is disabled. This means that:
\list
- \i indexChanged() and cleanChanged() are not emitted,
- \i canUndo() and canRedo() return false,
- \i calling undo() or redo() has no effect,
- \i the undo/redo actions are disabled.
+ \li indexChanged() and cleanChanged() are not emitted,
+ \li canUndo() and canRedo() return false,
+ \li calling undo() or redo() has no effect,
+ \li the undo/redo actions are disabled.
\endlist
The stack becomes enabled and appropriate signals are emitted when endMacro()
\list
- \o isDown() indicates whether the button is \e pressed down.
+ \li isDown() indicates whether the button is \e pressed down.
- \o isChecked() indicates whether the button is \e checked. Only
+ \li isChecked() indicates whether the button is \e checked. Only
checkable buttons can be checked and unchecked (see below).
- \o isEnabled() indicates whether the button can be pressed by the
+ \li isEnabled() indicates whether the button can be pressed by the
user. \note As opposed to other widgets, buttons derived from
QAbstractButton accepts mouse and context menu events
when disabled.
- \o setAutoRepeat() sets whether the button will auto-repeat if the
+ \li setAutoRepeat() sets whether the button will auto-repeat if the
user holds it down. \l autoRepeatDelay and \l autoRepeatInterval
define how auto-repetition is done.
- \o setCheckable() sets whether the button is a toggle button or not.
+ \li setCheckable() sets whether the button is a toggle button or not.
\endlist
\list 1
- \o pressed() is emitted when the left mouse button is pressed while
+ \li pressed() is emitted when the left mouse button is pressed while
the mouse cursor is inside the button.
- \o released() is emitted when the left mouse button is released.
+ \li released() is emitted when the left mouse button is released.
- \o clicked() is emitted when the button is first pressed and then
+ \li clicked() is emitted when the button is first pressed and then
released, when the shortcut key is typed, or when click() or
animateClick() is called.
- \o toggled() is emitted when the state of a toggle button changes.
+ \li toggled() is emitted when the state of a toggle button changes.
\endlist
following:
\list
- \o Control the scroll bars by setting their
+ \li Control the scroll bars by setting their
range, value, page step, and tracking their
movements.
- \o Draw the contents of the area in the viewport according
+ \li Draw the contents of the area in the viewport according
to the values of the scroll bars.
- \o Handle events received by the viewport in
+ \li Handle events received by the viewport in
viewportEvent() - notably resize events.
- \o Use \c{viewport->update()} to update the contents of the
+ \li Use \c{viewport->update()} to update the contents of the
viewport instead of \l{QWidget::update()}{update()}
as all painting operations take place on the viewport.
\endlist
\list 1
- \i \l value: The bounded integer that QAbstractSlider maintains.
+ \li \l value: The bounded integer that QAbstractSlider maintains.
- \i \l minimum: The lowest possible value.
+ \li \l minimum: The lowest possible value.
- \i \l maximum: The highest possible value.
+ \li \l maximum: The highest possible value.
- \i \l singleStep: The smaller of two natural steps that an
+ \li \l singleStep: The smaller of two natural steps that an
abstract sliders provides and typically corresponds to the user
pressing an arrow key.
- \i \l pageStep: The larger of two natural steps that an abstract
+ \li \l pageStep: The larger of two natural steps that an abstract
slider provides and typically corresponds to the user pressing
PageUp or PageDown.
- \i \l tracking: Whether slider tracking is enabled.
+ \li \l tracking: Whether slider tracking is enabled.
- \i \l sliderPosition: The current position of the slider. If \l
+ \li \l sliderPosition: The current position of the slider. If \l
tracking is enabled (the default), this is identical to \l value.
\endlist
QAbstractSlider emits a comprehensive set of signals:
\table
- \header \i Signal \i Emitted when
- \row \i \l valueChanged()
- \i the value has changed. The \l tracking
+ \header \li Signal \li Emitted when
+ \row \li \l valueChanged()
+ \li the value has changed. The \l tracking
determines whether this signal is emitted during user
interaction.
- \row \i \l sliderPressed()
- \i the user starts to drag the slider.
- \row \i \l sliderMoved()
- \i the user drags the slider.
- \row \i \l sliderReleased()
- \i the user releases the slider.
- \row \i \l actionTriggered()
- \i a slider action was triggerd.
- \row \i \l rangeChanged()
- \i a the range has changed.
+ \row \li \l sliderPressed()
+ \li the user starts to drag the slider.
+ \row \li \l sliderMoved()
+ \li the user drags the slider.
+ \row \li \l sliderReleased()
+ \li the user releases the slider.
+ \row \li \l actionTriggered()
+ \li a slider action was triggerd.
+ \row \li \l rangeChanged()
+ \li a the range has changed.
\endtable
QAbstractSlider provides a virtual sliderChange() function that is
\list 1
- \i \l text: The text that is displayed in the QAbstractSpinBox.
+ \li \l text: The text that is displayed in the QAbstractSpinBox.
- \i \l alignment: The alignment of the text in the QAbstractSpinBox.
+ \li \l alignment: The alignment of the text in the QAbstractSpinBox.
- \i \l wrapping: Whether the QAbstractSpinBox wraps from the
+ \li \l wrapping: Whether the QAbstractSpinBox wraps from the
minimum value to the maximum value and vica versa.
\endlist
\inlineimage qspinbox-plusminus.png
\value UpDownArrows Little arrows in the classic style.
- \value PlusMinus \bold{+} and \bold{-} symbols.
+ \value PlusMinus \b{+} and \b{-} symbols.
\value NoButtons Don't display buttons.
\sa QAbstractSpinBox::buttonSymbols
The following keys are handled specifically:
\table
- \row \i Enter/Return
- \i This will reinterpret the text and emit a signal even if the value has not changed
+ \row \li Enter/Return
+ \li This will reinterpret the text and emit a signal even if the value has not changed
since last time a signal was emitted.
- \row \i Up
- \i This will invoke stepBy(1)
- \row \i Down
- \i This will invoke stepBy(-1)
- \row \i Page up
- \i This will invoke stepBy(10)
- \row \i Page down
- \i This will invoke stepBy(-10)
+ \row \li Up
+ \li This will invoke stepBy(1)
+ \row \li Down
+ \li This will invoke stepBy(-1)
+ \row \li Page up
+ \li This will invoke stepBy(10)
+ \row \li Page down
+ \li This will invoke stepBy(-10)
\endtable
*/
setGridVisible() function:
\table
- \row \o
+ \row \li
\image qcalendarwidget-grid.png
- \row \o
+ \row \li
\snippet doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp 0
\endtable
\table
\row
- \o \image qcalendarwidget-minimum.png
+ \li \image qcalendarwidget-minimum.png
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp 1
\endtable
\table
\row
- \o \image qcalendarwidget-maximum.png
+ \li \image qcalendarwidget-maximum.png
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp 2
\endtable
\table
\row
- \o \inlineimage qcalendarwidget-grid.png
+ \li \inlineimage qcalendarwidget-grid.png
\row
- \o
+ \li
\snippet doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp 5
\endtable
non-exclusive checkboxes.
\table
- \row \o \inlineimage checkboxes-exclusive.png
- \o \inlineimage checkboxes-non-exclusive.png
+ \row \li \inlineimage checkboxes-exclusive.png
+ \li \inlineimage checkboxes-non-exclusive.png
\endtable
Whenever a checkbox is checked or cleared it emits the signal
\table 100%
\row
- \o \inlineimage macintosh-checkbox.png Screenshot of a Macintosh style checkbox
- \o A checkbox shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \li \inlineimage macintosh-checkbox.png Screenshot of a Macintosh style checkbox
+ \li A checkbox shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
\row
- \o \inlineimage windows-checkbox.png Screenshot of a Windows XP style checkbox
- \o A checkbox shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \li \inlineimage windows-checkbox.png Screenshot of a Windows XP style checkbox
+ \li A checkbox shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
\row
- \o \inlineimage plastique-checkbox.png Screenshot of a Plastique style checkbox
- \o A checkbox shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \li \inlineimage plastique-checkbox.png Screenshot of a Plastique style checkbox
+ \li A checkbox shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QAbstractButton, QRadioButton, {fowler}{GUI Design Handbook: Check Box}
calendar widget can be retrieved with calendarWidget().
\table 100%
- \row \o \inlineimage windowsxp-datetimeedit.png Screenshot of a Windows XP style date time editing widget
- \o A date time editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage macintosh-datetimeedit.png Screenshot of a Macintosh style date time editing widget
- \o A date time editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage plastique-datetimeedit.png Screenshot of a Plastique style date time editing widget
- \o A date time editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage windowsxp-datetimeedit.png Screenshot of a Windows XP style date time editing widget
+ \li A date time editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage macintosh-datetimeedit.png Screenshot of a Macintosh style date time editing widget
+ \li A date time editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage plastique-datetimeedit.png Screenshot of a Plastique style date time editing widget
+ \li A date time editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QDateEdit, QTimeEdit, QDate, QTime
Example format strings (assuming that the date is 2nd of July 1969):
\table
- \header \i Format \i Result
- \row \i dd.MM.yyyy \i 02.07.1969
- \row \i MMM d yy \i Jul 2 69
- \row \i MMMM d yy \i July 2 69
+ \header \li Format \li Result
+ \row \li dd.MM.yyyy \li 02.07.1969
+ \row \li MMM d yy \li Jul 2 69
+ \row \li MMMM d yy \li July 2 69
\endtable
Note that if you specify a two digit year, it will be interpreted
class:
\list
- \o \l{QDateTimeEdit::time}{time} holds the date displayed by the widget.
- \o \l{QDateTimeEdit::minimumTime}{minimumTime} defines the minimum (earliest) time
+ \li \l{QDateTimeEdit::time}{time} holds the date displayed by the widget.
+ \li \l{QDateTimeEdit::minimumTime}{minimumTime} defines the minimum (earliest) time
that can be set by the user.
- \o \l{QDateTimeEdit::maximumTime}{maximumTime} defines the maximum (latest) time
+ \li \l{QDateTimeEdit::maximumTime}{maximumTime} defines the maximum (latest) time
that can be set by the user.
- \o \l{QDateTimeEdit::displayFormat}{displayFormat} contains a string that is used
+ \li \l{QDateTimeEdit::displayFormat}{displayFormat} contains a string that is used
to format the time displayed in the widget.
\endlist
\table 100%
- \row \o \inlineimage windowsxp-timeedit.png Screenshot of a Windows XP style time editing widget
- \o A time editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage macintosh-timeedit.png Screenshot of a Macintosh style time editing widget
- \o A time editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage plastique-timeedit.png Screenshot of a Plastique style time editing widget
- \o A time editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage windowsxp-timeedit.png Screenshot of a Windows XP style time editing widget
+ \li A time editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage macintosh-timeedit.png Screenshot of a Macintosh style time editing widget
+ \li A time editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage plastique-timeedit.png Screenshot of a Plastique style time editing widget
+ \li A time editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QDateEdit, QDateTimeEdit
class:
\list
- \o \l{QDateTimeEdit::date}{date} holds the date displayed by the widget.
- \o \l{QDateTimeEdit::minimumDate}{minimumDate} defines the minimum (earliest)
+ \li \l{QDateTimeEdit::date}{date} holds the date displayed by the widget.
+ \li \l{QDateTimeEdit::minimumDate}{minimumDate} defines the minimum (earliest)
date that can be set by the user.
- \o \l{QDateTimeEdit::maximumDate}{maximumDate} defines the maximum (latest) date
+ \li \l{QDateTimeEdit::maximumDate}{maximumDate} defines the maximum (latest) date
that can be set by the user.
- \o \l{QDateTimeEdit::displayFormat}{displayFormat} contains a string that is used
+ \li \l{QDateTimeEdit::displayFormat}{displayFormat} contains a string that is used
to format the date displayed in the widget.
\endlist
\table 100%
- \row \o \inlineimage windowsxp-dateedit.png Screenshot of a Windows XP style date editing widget
- \o A date editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage macintosh-dateedit.png Screenshot of a Macintosh style date editing widget
- \o A date editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage plastique-dateedit.png Screenshot of a Plastique style date editing widget
- \o A date editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage windowsxp-dateedit.png Screenshot of a Windows XP style date editing widget
+ \li A date editing widget shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage macintosh-dateedit.png Screenshot of a Macintosh style date editing widget
+ \li A date editing widget shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage plastique-dateedit.png Screenshot of a Plastique style date editing widget
+ \li A date editing widget shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QTimeEdit, QDateTimeEdit
\l {QAbstractSlider::pageStep} {pageStep}.
\table
- \row \o \inlineimage plastique-dial.png Screenshot of a dial in the Plastique widget style
- \o \inlineimage windowsxp-dial.png Screenshot of a dial in the Windows XP widget style
- \o \inlineimage macintosh-dial.png Screenshot of a dial in the Macintosh widget style
- \row \o {3,1} Dials shown in various widget styles (from left to right):
+ \row \li \inlineimage plastique-dial.png Screenshot of a dial in the Plastique widget style
+ \li \inlineimage windowsxp-dial.png Screenshot of a dial in the Windows XP widget style
+ \li \inlineimage macintosh-dial.png Screenshot of a dial in the Macintosh widget style
+ \row \li {3,1} Dials shown in various widget styles (from left to right):
\l{Plastique Style Widget Gallery}{Plastique},
\l{Windows XP Style Widget Gallery}{Windows XP},
\l{Macintosh Style Widget Gallery}{Macintosh}.
Most buttons for a dialog follow certain roles. Such roles include:
\list
- \o Accepting or rejecting the dialog.
- \o Asking for help.
- \o Performing actions on the dialog itself (such as resetting fields or
+ \li Accepting or rejecting the dialog.
+ \li Asking for help.
+ \li Performing actions on the dialog itself (such as resetting fields or
applying changes).
\endlist
Currently the buttons are laid out in the following way if the button box is horizontal:
\table
- \row \o \inlineimage buttonbox-gnomelayout-horizontal.png GnomeLayout Horizontal
- \o Button box laid out in horizontal GnomeLayout
- \row \o \inlineimage buttonbox-kdelayout-horizontal.png KdeLayout Horizontal
- \o Button box laid out in horizontal KdeLayout
- \row \o \inlineimage buttonbox-maclayout-horizontal.png MacLayout Horizontal
- \o Button box laid out in horizontal MacLayout
- \row \o \inlineimage buttonbox-winlayout-horizontal.png WinLayout Horizontal
- \o Button box laid out in horizontal WinLayout
+ \row \li \inlineimage buttonbox-gnomelayout-horizontal.png GnomeLayout Horizontal
+ \li Button box laid out in horizontal GnomeLayout
+ \row \li \inlineimage buttonbox-kdelayout-horizontal.png KdeLayout Horizontal
+ \li Button box laid out in horizontal KdeLayout
+ \row \li \inlineimage buttonbox-maclayout-horizontal.png MacLayout Horizontal
+ \li Button box laid out in horizontal MacLayout
+ \row \li \inlineimage buttonbox-winlayout-horizontal.png WinLayout Horizontal
+ \li Button box laid out in horizontal WinLayout
\endtable
The buttons are laid out the following way if the button box is vertical:
\table
- \row \o GnomeLayout
- \o KdeLayout
- \o MacLayout
- \o WinLayout
- \row \o \inlineimage buttonbox-gnomelayout-vertical.png GnomeLayout Vertical
- \o \inlineimage buttonbox-kdelayout-vertical.png KdeLayout Vertical
- \o \inlineimage buttonbox-maclayout-vertical.png MacLayout Vertical
- \o \inlineimage buttonbox-winlayout-vertical.png WinLayout Vertical
+ \row \li GnomeLayout
+ \li KdeLayout
+ \li MacLayout
+ \li WinLayout
+ \row \li \inlineimage buttonbox-gnomelayout-vertical.png GnomeLayout Vertical
+ \li \inlineimage buttonbox-kdelayout-vertical.png KdeLayout Vertical
+ \li \inlineimage buttonbox-maclayout-vertical.png MacLayout Vertical
+ \li \inlineimage buttonbox-winlayout-vertical.png WinLayout Vertical
\endtable
Additionally, button boxes that contain only buttons with ActionRole or
HelpRole can be considered modeless and have an alternate look on Mac OS X:
\table
- \row \o modeless horizontal MacLayout
- \o \inlineimage buttonbox-mac-modeless-horizontal.png Screenshot of modeless horizontal MacLayout
+ \row \li modeless horizontal MacLayout
+ \li \inlineimage buttonbox-mac-modeless-horizontal.png Screenshot of modeless horizontal MacLayout
\endtable
When a button is clicked in the button box, the clicked() signal is emitted
Here are some tips for implementing custom title bars:
\list
- \o Mouse events that are not explicitly handled by the title bar widget
+ \li Mouse events that are not explicitly handled by the title bar widget
must be ignored by calling QMouseEvent::ignore(). These events then
propagate to the QDockWidget parent, which handles them in the usual
manner, moving when the title bar is dragged, docking and undocking
when it is double-clicked, etc.
- \o When DockWidgetVerticalTitleBar is set on QDockWidget, the title
+ \li When DockWidgetVerticalTitleBar is set on QDockWidget, the title
bar widget is repositioned accordingly. In resizeEvent(), the title
bar should check what orientation it should assume:
\snippet doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp 0
- \o The title bar widget must have a valid QWidget::sizeHint() and
+ \li The title bar widget must have a valid QWidget::sizeHint() and
QWidget::minimumSizeHint(). These functions should take into account
the current orientation of the title bar.
- \o It is not possible to remove a title bar from a dock widget. However,
+ \li It is not possible to remove a title bar from a dock widget. However,
a similar effect can be achieved by setting a default constructed
QWidget as the title bar widget.
\endlist
border: \l lineWidth, \l midLineWidth, and \l frameWidth.
\list
- \o The line width is the width of the frame border. It can be modified
+ \li The line width is the width of the frame border. It can be modified
to customize the frame's appearance.
- \o The mid-line width specifies the width of an extra line in the
+ \li The mid-line width specifies the width of an extra line in the
middle of the frame, which uses a third color to obtain a special
3D effect. Notice that a mid-line is only drawn for \l Box, \l
HLine and \l VLine frames that are raised or sunken.
- \o The frame width is determined by the frame style, and the frameWidth()
+ \li The frame width is determined by the frame style, and the frameWidth()
function is used to obtain the value defined for the style used.
\endlist
\snippet examples/widgets/groupbox/window.cpp 2
\table 100%
- \row \o \inlineimage windowsxp-groupbox.png Screenshot of a Windows XP style group box
- \o \inlineimage macintosh-groupbox.png Screenshot of a Macintosh style group box
- \o \inlineimage plastique-groupbox.png Screenshot of a Plastique style group box
- \row \o A \l{Windows XP Style Widget Gallery}{Windows XP style} group box.
- \o A \l{Macintosh Style Widget Gallery}{Macintosh style} group box.
- \o A \l{Plastique Style Widget Gallery}{Plastique style} group box.
+ \row \li \inlineimage windowsxp-groupbox.png Screenshot of a Windows XP style group box
+ \li \inlineimage macintosh-groupbox.png Screenshot of a Macintosh style group box
+ \li \inlineimage plastique-groupbox.png Screenshot of a Plastique style group box
+ \row \li A \l{Windows XP Style Widget Gallery}{Windows XP style} group box.
+ \li A \l{Macintosh Style Widget Gallery}{Macintosh style} group box.
+ \li A \l{Plastique Style Widget Gallery}{Plastique style} group box.
\endtable
\sa QButtonGroup, {Group Box Example}
the following list:
\list
- \i Qt::AlignLeft aligns the title text with the left-hand side of the group box.
- \i Qt::AlignRight aligns the title text with the right-hand side of the group box.
- \i Qt::AlignHCenter aligns the title text with the horizontal center of the group box.
+ \li Qt::AlignLeft aligns the title text with the left-hand side of the group box.
+ \li Qt::AlignRight aligns the title text with the right-hand side of the group box.
+ \li Qt::AlignHCenter aligns the title text with the horizontal center of the group box.
\endlist
The default alignment is Qt::AlignLeft.
By default, this property is disabled; i.e. group boxes are not flat unless
explicitly specified.
- \bold{Note:} In some styles, flat and non-flat group boxes have similar
+ \b{Note:} In some styles, flat and non-flat group boxes have similar
representations and may not be as distinguishable as they are in other
styles.
A QLabel can contain any of the following content types:
\table
- \header \o Content \o Setting
- \row \o Plain text
- \o Pass a QString to setText().
- \row \o Rich text
- \o Pass a QString that contains rich text to setText().
- \row \o A pixmap
- \o Pass a QPixmap to setPixmap().
- \row \o A movie
- \o Pass a QMovie to setMovie().
- \row \o A number
- \o Pass an \e int or a \e double to setNum(), which converts
+ \header \li Content \li Setting
+ \row \li Plain text
+ \li Pass a QString to setText().
+ \row \li Rich text
+ \li Pass a QString that contains rich text to setText().
+ \row \li A pixmap
+ \li Pass a QPixmap to setPixmap().
+ \row \li A movie
+ \li Pass a QMovie to setMovie().
+ \row \li A number
+ \li Pass an \e int or a \e double to setNum(), which converts
the number to plain text.
- \row \o Nothing
- \o The same as an empty plain text. This is the default. Set
+ \row \li Nothing
+ \li The same as an empty plain text. This is the default. Set
by clear().
\endtable
\table 100%
\row
- \o \inlineimage macintosh-label.png Screenshot of a Macintosh style label
- \o A label shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \li \inlineimage macintosh-label.png Screenshot of a Macintosh style label
+ \li A label shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
\row
- \o \inlineimage plastique-label.png Screenshot of a Plastique style label
- \o A label shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \li \inlineimage plastique-label.png Screenshot of a Plastique style label
+ \li A label shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\row
- \o \inlineimage windowsxp-label.png Screenshot of a Windows XP style label
- \o A label shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \li \inlineimage windowsxp-label.png Screenshot of a Windows XP style label
+ \li A label shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
\endtable
\sa QLineEdit, QTextEdit, QPixmap, QMovie,
QDesktopServices::openUrl() instead of emitting the
linkActivated() signal.
- \bold{Note:} The textInteractionFlags set on the label need to include
+ \b{Note:} The textInteractionFlags set on the label need to include
either LinksAccessibleByMouse or LinksAccessibleByKeyboard.
The default value is false.
\sa selectedText()
- \bold{Note:} The textInteractionFlags set on the label need to include
+ \b{Note:} The textInteractionFlags set on the label need to include
either TextSelectableByMouse or TextSelectableByKeyboard.
\since 4.7
\sa selectedText()
- \bold{Note:} The textInteractionFlags set on the label need to include
+ \b{Note:} The textInteractionFlags set on the label need to include
either TextSelectableByMouse or TextSelectableByKeyboard.
\since 4.7
\sa hasSelectedText()
- \bold{Note:} The textInteractionFlags set on the label need to include
+ \b{Note:} The textInteractionFlags set on the label need to include
either TextSelectableByMouse or TextSelectableByKeyboard.
\since 4.7
\sa selectedText()
- \bold{Note:} The textInteractionFlags set on the label need to include
+ \b{Note:} The textInteractionFlags set on the label need to include
either TextSelectableByMouse or TextSelectableByKeyboard.
\since 4.7
Sinclair Spectrum\endlink.
\table
- \row \o \inlineimage motif-lcdnumber.png Screenshot of a Motif style LCD number widget
+ \row \li \inlineimage motif-lcdnumber.png Screenshot of a Motif style LCD number widget
\inlineimage cde-lcdnumber.png Screenshot of a CDE style LCD number widget
\inlineimage windows-lcdnumber.png Screenshot of a Windows style LCD number widget
\inlineimage windowsxp-lcdnumber.png Screenshot of a Windows XP style LCD number widget
\inlineimage macintosh-lcdnumber.png Screenshot of a Macintosh style LCD number widget
\inlineimage plastique-lcdnumber.png Screenshot of a Plastique style LCD number widget
- \row \o LCD number widgets shown in various widget styles (from left to right):
+ \row \li LCD number widgets shown in various widget styles (from left to right):
\l{Motif Style Widget Gallery}{Motif}, \l{CDE Style Widget Gallery}{CDE},
\l{Windows Style Widget Gallery}{Windows}, \l{Windows XP Style Widget Gallery}{Windows XP},
\l{Macintosh Style Widget Gallery}{Macintosh}, \l{Plastique Style Widget Gallery}{Plastique}.
\brief the style of the LCDNumber
\table
- \header \i Style \i Result
- \row \i \c Outline
- \i Produces raised segments filled with the background color
- \row \i \c Filled
+ \header \li Style \li Result
+ \row \li \c Outline
+ \li Produces raised segments filled with the background color
+ \row \li \c Filled
(this is the default).
- \i Produces raised segments filled with the foreground color.
- \row \i \c Flat
- \i Produces flat segments filled with the foreground color.
+ \li Produces raised segments filled with the foreground color.
+ \row \li \c Flat
+ \li Produces flat segments filled with the foreground color.
\endtable
\c Outline and \c Filled will additionally use
that presents some of these editing options.
\target desc
\table
- \header \i Keypress \i Action
- \row \i Left Arrow \i Moves the cursor one character to the left.
- \row \i Shift+Left Arrow \i Moves and selects text one character to the left.
- \row \i Right Arrow \i Moves the cursor one character to the right.
- \row \i Shift+Right Arrow \i Moves and selects text one character to the right.
- \row \i Home \i Moves the cursor to the beginning of the line.
- \row \i End \i Moves the cursor to the end of the line.
- \row \i Backspace \i Deletes the character to the left of the cursor.
- \row \i Ctrl+Backspace \i Deletes the word to the left of the cursor.
- \row \i Delete \i Deletes the character to the right of the cursor.
- \row \i Ctrl+Delete \i Deletes the word to the right of the cursor.
- \row \i Ctrl+A \i Select all.
- \row \i Ctrl+C \i Copies the selected text to the clipboard.
- \row \i Ctrl+Insert \i Copies the selected text to the clipboard.
- \row \i Ctrl+K \i Deletes to the end of the line.
- \row \i Ctrl+V \i Pastes the clipboard text into line edit.
- \row \i Shift+Insert \i Pastes the clipboard text into line edit.
- \row \i Ctrl+X \i Deletes the selected text and copies it to the clipboard.
- \row \i Shift+Delete \i Deletes the selected text and copies it to the clipboard.
- \row \i Ctrl+Z \i Undoes the last operation.
- \row \i Ctrl+Y \i Redoes the last undone operation.
+ \header \li Keypress \li Action
+ \row \li Left Arrow \li Moves the cursor one character to the left.
+ \row \li Shift+Left Arrow \li Moves and selects text one character to the left.
+ \row \li Right Arrow \li Moves the cursor one character to the right.
+ \row \li Shift+Right Arrow \li Moves and selects text one character to the right.
+ \row \li Home \li Moves the cursor to the beginning of the line.
+ \row \li End \li Moves the cursor to the end of the line.
+ \row \li Backspace \li Deletes the character to the left of the cursor.
+ \row \li Ctrl+Backspace \li Deletes the word to the left of the cursor.
+ \row \li Delete \li Deletes the character to the right of the cursor.
+ \row \li Ctrl+Delete \li Deletes the word to the right of the cursor.
+ \row \li Ctrl+A \li Select all.
+ \row \li Ctrl+C \li Copies the selected text to the clipboard.
+ \row \li Ctrl+Insert \li Copies the selected text to the clipboard.
+ \row \li Ctrl+K \li Deletes to the end of the line.
+ \row \li Ctrl+V \li Pastes the clipboard text into line edit.
+ \row \li Shift+Insert \li Pastes the clipboard text into line edit.
+ \row \li Ctrl+X \li Deletes the selected text and copies it to the clipboard.
+ \row \li Shift+Delete \li Deletes the selected text and copies it to the clipboard.
+ \row \li Ctrl+Z \li Undoes the last operation.
+ \row \li Ctrl+Y \li Redoes the last undone operation.
\endtable
Any other key sequence that represents a valid character, will
cause the character to be inserted into the line edit.
\table 100%
- \row \o \inlineimage macintosh-lineedit.png Screenshot of a Macintosh style line edit
- \o A line edit shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage windows-lineedit.png Screenshot of a Windows XP style line edit
- \o A line edit shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage plastique-lineedit.png Screenshot of a Plastique style line edit
- \o A line edit shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage macintosh-lineedit.png Screenshot of a Macintosh style line edit
+ \li A line edit shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage windows-lineedit.png Screenshot of a Windows XP style line edit
+ \li A line edit shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage plastique-lineedit.png Screenshot of a Plastique style line edit
+ \li A line edit shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QTextEdit, QLabel, QComboBox, {fowler}{GUI Design Handbook: Field, Entry}, {Line Edits Example}
where a character is \e{permitted but not required}.
\table
- \header \i Character \i Meaning
- \row \i \c A \i ASCII alphabetic character required. A-Z, a-z.
- \row \i \c a \i ASCII alphabetic character permitted but not required.
- \row \i \c N \i ASCII alphanumeric character required. A-Z, a-z, 0-9.
- \row \i \c n \i ASCII alphanumeric character permitted but not required.
- \row \i \c X \i Any character required.
- \row \i \c x \i Any character permitted but not required.
- \row \i \c 9 \i ASCII digit required. 0-9.
- \row \i \c 0 \i ASCII digit permitted but not required.
- \row \i \c D \i ASCII digit required. 1-9.
- \row \i \c d \i ASCII digit permitted but not required (1-9).
- \row \i \c # \i ASCII digit or plus/minus sign permitted but not required.
- \row \i \c H \i Hexadecimal character required. A-F, a-f, 0-9.
- \row \i \c h \i Hexadecimal character permitted but not required.
- \row \i \c B \i Binary character required. 0-1.
- \row \i \c b \i Binary character permitted but not required.
- \row \i \c > \i All following alphabetic characters are uppercased.
- \row \i \c < \i All following alphabetic characters are lowercased.
- \row \i \c ! \i Switch off case conversion.
- \row \i \tt{\\} \i Use \tt{\\} to escape the special
+ \header \li Character \li Meaning
+ \row \li \c A \li ASCII alphabetic character required. A-Z, a-z.
+ \row \li \c a \li ASCII alphabetic character permitted but not required.
+ \row \li \c N \li ASCII alphanumeric character required. A-Z, a-z, 0-9.
+ \row \li \c n \li ASCII alphanumeric character permitted but not required.
+ \row \li \c X \li Any character required.
+ \row \li \c x \li Any character permitted but not required.
+ \row \li \c 9 \li ASCII digit required. 0-9.
+ \row \li \c 0 \li ASCII digit permitted but not required.
+ \row \li \c D \li ASCII digit required. 1-9.
+ \row \li \c d \li ASCII digit permitted but not required (1-9).
+ \row \li \c # \li ASCII digit or plus/minus sign permitted but not required.
+ \row \li \c H \li Hexadecimal character required. A-F, a-f, 0-9.
+ \row \li \c h \li Hexadecimal character permitted but not required.
+ \row \li \c B \li Binary character required. 0-1.
+ \row \li \c b \li Binary character permitted but not required.
+ \row \li \c > \li All following alphabetic characters are uppercased.
+ \row \li \c < \li All following alphabetic characters are lowercased.
+ \row \li \c ! \li Switch off case conversion.
+ \row \li \tt{\\} \li Use \tt{\\} to escape the special
characters listed above to use them as
separators.
\endtable
Examples:
\table
- \header \i Mask \i Notes
- \row \i \c 000.000.000.000;_ \i IP address; blanks are \c{_}.
- \row \i \c HH:HH:HH:HH:HH:HH;_ \i MAC address
- \row \i \c 0000-00-00 \i ISO Date; blanks are \c space
- \row \i \c >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# \i License number;
+ \header \li Mask \li Notes
+ \row \li \c 000.000.000.000;_ \li IP address; blanks are \c{_}.
+ \row \li \c HH:HH:HH:HH:HH:HH;_ \li MAC address
+ \row \li \c 0000-00-00 \li ISO Date; blanks are \c space
+ \row \li \c >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# \li License number;
blanks are \c - and all (alphabetic) characters are converted to
uppercase.
\endtable
moved to that. This means a couple of things.
\list
- \i QToolBars in this toolbar area are not movable and you cannot drag other
+ \li QToolBars in this toolbar area are not movable and you cannot drag other
toolbars to it
- \i Toolbar breaks are not respected or preserved
- \i Any custom widgets in the toolbar will not be shown if the toolbar
+ \li Toolbar breaks are not respected or preserved
+ \li Any custom widgets in the toolbar will not be shown if the toolbar
becomes too small (only actions will be shown)
- \i Before Qt 4.5, if you called showFullScreen() on the main window, the QToolbar would
+ \li Before Qt 4.5, if you called showFullScreen() on the main window, the QToolbar would
disappear since it is considered to be part of the title bar. Qt 4.5 and up will now work around this by pulling
the toolbars out and back into the regular toolbar and vice versa when you swap out.
\endlist
slots and are easily connected to menu entries.
\table
- \row \o \inlineimage mdi-cascade.png
- \o \inlineimage mdi-tile.png
+ \row \li \inlineimage mdi-cascade.png
+ \li \inlineimage mdi-tile.png
\endtable
\note The default scroll bar property for QMdiArea is Qt::ScrollBarAlwaysOff.
\table 100%
\row
- \o \inlineimage plastique-menu.png
- \o \inlineimage windowsxp-menu.png
- \o \inlineimage macintosh-menu.png
+ \li \inlineimage plastique-menu.png
+ \li \inlineimage windowsxp-menu.png
+ \li \inlineimage macintosh-menu.png
\endtable
\caption Fig. A menu shown in \l{Plastique Style Widget Gallery}{Plastique widget style},
\l{Windows XP Style Widget Gallery}{Windows XP widget style},
See the \l{mainwindows/menus}{Menus} example for an example of how
to use QMenuBar and QMenu in your application.
- \bold{Important inherited functions:} addAction(), removeAction(), clear(),
+ \b{Important inherited functions:} addAction(), removeAction(), clear(),
addSeparator(), and addMenu().
\sa QMenuBar, {fowler}{GUI Design Handbook: Menu, Drop-Down and Pop-Up},
\table
- \row \o \inlineimage plastique-menubar.png A menu bar shown in the
+ \row \li \inlineimage plastique-menubar.png A menu bar shown in the
Plastique widget style.
- \o The \l{QPlastiqueStyle}{Plastique widget style}, like most
+ \li The \l{QPlastiqueStyle}{Plastique widget style}, like most
other styles, handles the \gui{Help} menu in the same way as it
handles any other menu.
- \row \o \inlineimage motif-menubar.png A menu bar shown in the
+ \row \li \inlineimage motif-menubar.png A menu bar shown in the
Motif widget style.
- \o The \l{QMotifStyle}{Motif widget style} treats \gui{Help} menus
+ \li The \l{QMotifStyle}{Motif widget style} treats \gui{Help} menus
in a special way, placing them at right-hand end of the menu bar.
\endtable
the strings looked for and where the entry is placed if matched:
\table
- \header \i String matches \i Placement \i Notes
- \row \i about.*
- \i Application Menu | About <application name>
- \i The application name is fetched from the \c {Info.plist} file
+ \header \li String matches \li Placement \li Notes
+ \row \li about.*
+ \li Application Menu | About <application name>
+ \li The application name is fetched from the \c {Info.plist} file
(see note below). If this entry is not found no About item
will appear in the Application Menu.
- \row \i config, options, setup, settings or preferences
- \i Application Menu | Preferences
- \i If this entry is not found the Settings item will be disabled
- \row \i quit or exit
- \i Application Menu | Quit <application name>
- \i If this entry is not found a default Quit item will be
+ \row \li config, options, setup, settings or preferences
+ \li Application Menu | Preferences
+ \li If this entry is not found the Settings item will be disabled
+ \row \li quit or exit
+ \li Application Menu | Quit <application name>
+ \li If this entry is not found a default Quit item will be
created to call QApplication::quit()
\endtable
\snippet doc/src/snippets/code/src_gui_widgets_qmenubar.cpp 1
- \bold{Note:} Do \e{not} call QMainWindow::menuBar() to create the
+ \b{Note:} Do \e{not} call QMainWindow::menuBar() to create the
shared menu bar, because that menu bar will have the QMainWindow
as its parent. That menu bar would only be displayed for the
parent QMainWindow.
- \bold{Note:} The text used for the application name in the menu
+ \b{Note:} The text used for the application name in the menu
bar is obtained from the value set in the \c{Info.plist} file in
the application's bundle. See \l{Deploying an Application on
Mac OS X} for more information.
When QPlainTextEdit is used read-only the key bindings are limited to
navigation, and text may only be selected with the mouse:
\table
- \header \i Keypresses \i Action
- \row \i Qt::UpArrow \i Moves one line up.
- \row \i Qt::DownArrow \i Moves one line down.
- \row \i Qt::LeftArrow \i Moves one character to the left.
- \row \i Qt::RightArrow \i Moves one character to the right.
- \row \i PageUp \i Moves one (viewport) page up.
- \row \i PageDown \i Moves one (viewport) page down.
- \row \i Home \i Moves to the beginning of the text.
- \row \i End \i Moves to the end of the text.
- \row \i Alt+Wheel
- \i Scrolls the page horizontally (the Wheel is the mouse wheel).
- \row \i Ctrl+Wheel \i Zooms the text.
- \row \i Ctrl+A \i Selects all text.
+ \header \li Keypresses \li Action
+ \row \li Qt::UpArrow \li Moves one line up.
+ \row \li Qt::DownArrow \li Moves one line down.
+ \row \li Qt::LeftArrow \li Moves one character to the left.
+ \row \li Qt::RightArrow \li Moves one character to the right.
+ \row \li PageUp \li Moves one (viewport) page up.
+ \row \li PageDown \li Moves one (viewport) page down.
+ \row \li Home \li Moves to the beginning of the text.
+ \row \li End \li Moves to the end of the text.
+ \row \li Alt+Wheel
+ \li Scrolls the page horizontally (the Wheel is the mouse wheel).
+ \row \li Ctrl+Wheel \li Zooms the text.
+ \row \li Ctrl+A \li Selects all text.
\endtable
The list of key bindings which are implemented for editing:
\table
- \header \i Keypresses \i Action
- \row \i Backspace \i Deletes the character to the left of the cursor.
- \row \i Delete \i Deletes the character to the right of the cursor.
- \row \i Ctrl+C \i Copy the selected text to the clipboard.
- \row \i Ctrl+Insert \i Copy the selected text to the clipboard.
- \row \i Ctrl+K \i Deletes to the end of the line.
- \row \i Ctrl+V \i Pastes the clipboard text into text edit.
- \row \i Shift+Insert \i Pastes the clipboard text into text edit.
- \row \i Ctrl+X \i Deletes the selected text and copies it to the clipboard.
- \row \i Shift+Delete \i Deletes the selected text and copies it to the clipboard.
- \row \i Ctrl+Z \i Undoes the last operation.
- \row \i Ctrl+Y \i Redoes the last operation.
- \row \i LeftArrow \i Moves the cursor one character to the left.
- \row \i Ctrl+LeftArrow \i Moves the cursor one word to the left.
- \row \i RightArrow \i Moves the cursor one character to the right.
- \row \i Ctrl+RightArrow \i Moves the cursor one word to the right.
- \row \i UpArrow \i Moves the cursor one line up.
- \row \i Ctrl+UpArrow \i Moves the cursor one word up.
- \row \i DownArrow \i Moves the cursor one line down.
- \row \i Ctrl+Down Arrow \i Moves the cursor one word down.
- \row \i PageUp \i Moves the cursor one page up.
- \row \i PageDown \i Moves the cursor one page down.
- \row \i Home \i Moves the cursor to the beginning of the line.
- \row \i Ctrl+Home \i Moves the cursor to the beginning of the text.
- \row \i End \i Moves the cursor to the end of the line.
- \row \i Ctrl+End \i Moves the cursor to the end of the text.
- \row \i Alt+Wheel \i Scrolls the page horizontally (the Wheel is the mouse wheel).
- \row \i Ctrl+Wheel \i Zooms the text.
+ \header \li Keypresses \li Action
+ \row \li Backspace \li Deletes the character to the left of the cursor.
+ \row \li Delete \li Deletes the character to the right of the cursor.
+ \row \li Ctrl+C \li Copy the selected text to the clipboard.
+ \row \li Ctrl+Insert \li Copy the selected text to the clipboard.
+ \row \li Ctrl+K \li Deletes to the end of the line.
+ \row \li Ctrl+V \li Pastes the clipboard text into text edit.
+ \row \li Shift+Insert \li Pastes the clipboard text into text edit.
+ \row \li Ctrl+X \li Deletes the selected text and copies it to the clipboard.
+ \row \li Shift+Delete \li Deletes the selected text and copies it to the clipboard.
+ \row \li Ctrl+Z \li Undoes the last operation.
+ \row \li Ctrl+Y \li Redoes the last operation.
+ \row \li LeftArrow \li Moves the cursor one character to the left.
+ \row \li Ctrl+LeftArrow \li Moves the cursor one word to the left.
+ \row \li RightArrow \li Moves the cursor one character to the right.
+ \row \li Ctrl+RightArrow \li Moves the cursor one word to the right.
+ \row \li UpArrow \li Moves the cursor one line up.
+ \row \li Ctrl+UpArrow \li Moves the cursor one word up.
+ \row \li DownArrow \li Moves the cursor one line down.
+ \row \li Ctrl+Down Arrow \li Moves the cursor one word down.
+ \row \li PageUp \li Moves the cursor one page up.
+ \row \li PageDown \li Moves the cursor one page down.
+ \row \li Home \li Moves the cursor to the beginning of the line.
+ \row \li Ctrl+Home \li Moves the cursor to the beginning of the text.
+ \row \li End \li Moves the cursor to the end of the line.
+ \row \li Ctrl+End \li Moves the cursor to the end of the text.
+ \row \li Alt+Wheel \li Scrolls the page horizontally (the Wheel is the mouse wheel).
+ \row \li Ctrl+Wheel \li Zooms the text.
\endtable
To select (mark) text hold down the Shift key whilst pressing one
they are unable to determine the size of the item being downloaded.
\table
- \row \o \inlineimage macintosh-progressbar.png Screenshot of a Macintosh style progress bar
- \o A progress bar shown in the Macintosh widget style.
- \row \o \inlineimage windowsxp-progressbar.png Screenshot of a Windows XP style progress bar
- \o A progress bar shown in the Windows XP widget style.
- \row \o \inlineimage plastique-progressbar.png Screenshot of a Plastique style progress bar
- \o A progress bar shown in the Plastique widget style.
+ \row \li \inlineimage macintosh-progressbar.png Screenshot of a Macintosh style progress bar
+ \li A progress bar shown in the Macintosh widget style.
+ \row \li \inlineimage windowsxp-progressbar.png Screenshot of a Windows XP style progress bar
+ \li A progress bar shown in the Windows XP widget style.
+ \row \li \inlineimage plastique-progressbar.png Screenshot of a Plastique style progress bar
+ \li A progress bar shown in the Plastique widget style.
\endtable
\sa QProgressDialog, {fowler}{GUI Design Handbook: Progress Indicator}
The most important modes or states are:
\list
- \i Available or not (grayed out, disabled).
- \i Standard push button, toggling push button or menu button.
- \i On or off (only for toggling push buttons).
- \i Default or normal. The default button in a dialog can generally
+ \li Available or not (grayed out, disabled).
+ \li Standard push button, toggling push button or menu button.
+ \li On or off (only for toggling push buttons).
+ \li Default or normal. The default button in a dialog can generally
be "clicked" using the Enter or Return key.
- \i Auto-repeat or not.
- \i Pressed down or not.
+ \li Auto-repeat or not.
+ \li Pressed down or not.
\endlist
As a general rule, use a push button when the application or
check boxes (see QCheckBox).
\table 100%
- \row \o \inlineimage macintosh-pushbutton.png Screenshot of a Macintosh style push button
- \o A push button shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage macintosh-pushbutton.png Screenshot of a Macintosh style push button
+ \li A push button shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
Note that when a button's width becomes smaller than 50 or
its height becomes smaller than 30, the button's corners are
changed from round to square. Use the setMinimumSize()
function to prevent this behavior.
- \row \o \inlineimage windowsxp-pushbutton.png Screenshot of a Windows XP style push button
- \o A push button shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage plastique-pushbutton.png Screenshot of a Plastique style push button
- \o A push button shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage windowsxp-pushbutton.png Screenshot of a Windows XP style push button
+ \li A push button shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage plastique-pushbutton.png Screenshot of a Plastique style push button
+ \li A push button shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
In Qt, the QAbstractButton base class provides most of the modes
\table 100%
\row
- \o \inlineimage plastique-pushbutton-menu.png Screenshot of a Plastique style push button with popup menu.
- \o \inlineimage cleanlooks-pushbutton-menu.png Screenshot of a Cleanlooks style push button with popup menu.
- \o Push buttons with popup menus shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}
+ \li \inlineimage plastique-pushbutton-menu.png Screenshot of a Plastique style push button with popup menu.
+ \li \inlineimage cleanlooks-pushbutton-menu.png Screenshot of a Cleanlooks style push button with popup menu.
+ \li Push buttons with popup menus shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}
(left) and \l{Cleanlooks Style Widget Gallery}{Cleanlooks widget style} (right).
\endtable
toggle(), pressed(), released(), clicked(), and toggled().
\table 100%
- \row \o \inlineimage plastique-radiobutton.png Screenshot of a Plastique radio button
- \o A radio button shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
- \row \o \inlineimage windows-radiobutton.png Screenshot of a Windows XP radio button
- \o A radio button shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage macintosh-radiobutton.png Screenshot of a Macintosh radio button
- \o A radio button shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage plastique-radiobutton.png Screenshot of a Plastique radio button
+ \li A radio button shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage windows-radiobutton.png Screenshot of a Windows XP radio button
+ \li A radio button shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage macintosh-radiobutton.png Screenshot of a Macintosh radio button
+ \li A radio button shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
\endtable
\sa QPushButton, QToolButton, QCheckBox, {fowler}{GUI Design Handbook: Radio Button},
\table
\row
- \o \inlineimage qscrollarea-noscrollbars.png
- \o \inlineimage qscrollarea-onescrollbar.png
- \o \inlineimage qscrollarea-twoscrollbars.png
+ \li \inlineimage qscrollarea-noscrollbars.png
+ \li \inlineimage qscrollarea-onescrollbar.png
+ \li \inlineimage qscrollarea-twoscrollbars.png
\endtable
The scroll bars appearance depends on the currently set \l
needs.
\table
- \row \o \image qscrollbar-picture.png
- \o Scroll bars typically include four separate controls: a slider,
+ \row \li \image qscrollbar-picture.png
+ \li Scroll bars typically include four separate controls: a slider,
scroll arrows, and a page control.
\list
- \o a. The slider provides a way to quickly go to any part of the
+ \li a. The slider provides a way to quickly go to any part of the
document, but does not support accurate navigation within large
documents.
- \o b. The scroll arrows are push buttons which can be used to accurately
+ \li b. The scroll arrows are push buttons which can be used to accurately
navigate to a particular place in a document. For a vertical scroll bar
connected to a text editor, these typically move the current position one
"line" up or down, and adjust the position of the slider by a small
amount. In editors and list boxes a "line" might mean one line of text;
in an image viewer it might mean 20 pixels.
- \o c. The page control is the area over which the slider is dragged (the
+ \li c. The page control is the area over which the slider is dragged (the
scroll bar's background). Clicking here moves the scroll bar towards
the click by one "page". This value is usually the same as the length of
the slider.
value of 80. This would give us a scroll bar with five "pages".
\table
- \row \o \inlineimage qscrollbar-values.png
- \o The relationship between a document length, the range of values used
+ \row \li \inlineimage qscrollbar-values.png
+ \li The relationship between a document length, the range of values used
in a scroll bar, and the page step is simple in many common situations.
The scroll bar's range of values is determined by subtracting a
chosen page step from some value representing the length of the document.
ScrollBar inherits a comprehensive set of signals from QAbstractSlider:
\list
- \o \l{QAbstractSlider::valueChanged()}{valueChanged()} is emitted when the
+ \li \l{QAbstractSlider::valueChanged()}{valueChanged()} is emitted when the
scroll bar's value has changed. The tracking() determines whether this
signal is emitted during user interaction.
- \o \l{QAbstractSlider::rangeChanged()}{rangeChanged()} is emitted when the
+ \li \l{QAbstractSlider::rangeChanged()}{rangeChanged()} is emitted when the
scroll bar's range of values has changed.
- \o \l{QAbstractSlider::sliderPressed()}{sliderPressed()} is emitted when
+ \li \l{QAbstractSlider::sliderPressed()}{sliderPressed()} is emitted when
the user starts to drag the slider.
- \o \l{QAbstractSlider::sliderMoved()}{sliderMoved()} is emitted when the user
+ \li \l{QAbstractSlider::sliderMoved()}{sliderMoved()} is emitted when the user
drags the slider.
- \o \l{QAbstractSlider::sliderReleased()}{sliderReleased()} is emitted when
+ \li \l{QAbstractSlider::sliderReleased()}{sliderReleased()} is emitted when
the user releases the slider.
- \o \l{QAbstractSlider::actionTriggered()}{actionTriggered()} is emitted
+ \li \l{QAbstractSlider::actionTriggered()}{actionTriggered()} is emitted
when the scroll bar is changed by user interaction or via the
\l{QAbstractSlider::triggerAction()}{triggerAction()} function.
\endlist
default focusPolicy() of Qt::NoFocus. Use setFocusPolicy() to
enable keyboard interaction with the scroll bar:
\list
- \o Left/Right move a horizontal scroll bar by one single step.
- \o Up/Down move a vertical scroll bar by one single step.
- \o PageUp moves up one page.
- \o PageDown moves down one page.
- \o Home moves to the start (mininum).
- \o End moves to the end (maximum).
+ \li Left/Right move a horizontal scroll bar by one single step.
+ \li Up/Down move a vertical scroll bar by one single step.
+ \li PageUp moves up one page.
+ \li PageDown moves down one page.
+ \li Home moves to the start (mininum).
+ \li End moves to the end (maximum).
\endlist
The slider itself can be controlled by using the
slider.
\table 100%
- \row \o \inlineimage macintosh-horizontalscrollbar.png Screenshot of a Macintosh style scroll bar
- \o A scroll bar shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage windowsxp-horizontalscrollbar.png Screenshot of a Windows XP style scroll bar
- \o A scroll bar shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage plastique-horizontalscrollbar.png Screenshot of a Plastique style scroll bar
- \o A scroll bar shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage macintosh-horizontalscrollbar.png Screenshot of a Macintosh style scroll bar
+ \li A scroll bar shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage windowsxp-horizontalscrollbar.png Screenshot of a Windows XP style scroll bar
+ \li A scroll bar shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage plastique-horizontalscrollbar.png Screenshot of a Plastique style scroll bar
+ \li A scroll bar shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QScrollArea, QSlider, QDial, QSpinBox, {fowler}{GUI Design Handbook: Scroll Bar}, {Sliders Example}
window is shown full screen or maximised.
\table 50%
- \row \o \inlineimage plastique-sizegrip.png Screenshot of a Plastique style size grip
- \o A size grip widget at the bottom-right corner of a main window, shown in the
+ \row \li \inlineimage plastique-sizegrip.png Screenshot of a Plastique style size grip
+ \li A size grip widget at the bottom-right corner of a main window, shown in the
\l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
QSlider inherits a comprehensive set of signals:
\table
- \header \o Signal \o Description
- \row \o \l valueChanged()
- \o Emitted when the slider's value has changed. The tracking()
+ \header \li Signal \li Description
+ \row \li \l valueChanged()
+ \li Emitted when the slider's value has changed. The tracking()
determines whether this signal is emitted during user
interaction.
- \row \o \l sliderPressed()
- \o Emitted when the user starts to drag the slider.
- \row \o \l sliderMoved()
- \o Emitted when the user drags the slider.
- \row \o \l sliderReleased()
- \o Emitted when the user releases the slider.
+ \row \li \l sliderPressed()
+ \li Emitted when the user starts to drag the slider.
+ \row \li \l sliderMoved()
+ \li Emitted when the user drags the slider.
+ \row \li \l sliderReleased()
+ \li Emitted when the user releases the slider.
\endtable
QSlider only provides integer ranges. Note that although
keyboard interface. The keyboard interface is the following:
\list
- \o Left/Right move a horizontal slider by one single step.
- \o Up/Down move a vertical slider by one single step.
- \o PageUp moves up one page.
- \o PageDown moves down one page.
- \o Home moves to the start (mininum).
- \o End moves to the end (maximum).
+ \li Left/Right move a horizontal slider by one single step.
+ \li Up/Down move a vertical slider by one single step.
+ \li PageUp moves up one page.
+ \li PageDown moves down one page.
+ \li Home moves to the start (mininum).
+ \li End moves to the end (maximum).
\endlist
\table 100%
- \row \o \inlineimage macintosh-slider.png Screenshot of a Macintosh slider
- \o A slider shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
- \row \o \inlineimage windows-slider.png Screenshot of a Windows XP slider
- \o A slider shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage plastique-slider.png Screenshot of a Plastique slider
- \o A slider shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage macintosh-slider.png Screenshot of a Macintosh slider
+ \li A slider shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage windows-slider.png Screenshot of a Windows XP slider
+ \li A slider shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage plastique-slider.png Screenshot of a Plastique slider
+ \li A slider shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
\endtable
\sa QScrollBar, QSpinBox, QDial, {fowler}{GUI Design Handbook: Slider}, {Sliders Example}
setSpecialValueText() for how to do this with QSpinBox.
\table 100%
- \row \o \inlineimage windowsxp-spinbox.png Screenshot of a Windows XP spin box
- \o A spin box shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
- \row \o \inlineimage plastique-spinbox.png Screenshot of a Plastique spin box
- \o A spin box shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
- \row \o \inlineimage macintosh-spinbox.png Screenshot of a Macintosh spin box
- \o A spin box shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
+ \row \li \inlineimage windowsxp-spinbox.png Screenshot of a Windows XP spin box
+ \li A spin box shown in the \l{Windows XP Style Widget Gallery}{Windows XP widget style}.
+ \row \li \inlineimage plastique-spinbox.png Screenshot of a Plastique spin box
+ \li A spin box shown in the \l{Plastique Style Widget Gallery}{Plastique widget style}.
+ \row \li \inlineimage macintosh-spinbox.png Screenshot of a Macintosh spin box
+ \li A spin box shown in the \l{Macintosh Style Widget Gallery}{Macintosh widget style}.
\endtable
\section1 Subclassing QSpinBox
not deleted but simply removed from the stacked layout, causing it
to be hidden.
- \bold{Note:} Ownership of \a widget reverts to the application.
+ \b{Note:} Ownership of \a widget reverts to the application.
\sa addWidget(), insertWidget(), currentWidget()
*/
Each status indicator falls into one of three categories:
\list
- \o \e Temporary - briefly occupies most of the status bar. Used
+ \li \e Temporary - briefly occupies most of the status bar. Used
to explain tool tip texts or menu entries, for example.
- \o \e Normal - occupies part of the status bar and may be hidden
+ \li \e Normal - occupies part of the status bar and may be hidden
by temporary messages. Used to display the page and line
number in a word processor, for example.
- \o \e Permanent - is never hidden. Used for important mode
+ \li \e Permanent - is never hidden. Used for important mode
indications, for example, some applications put a Caps Lock
indicator in the status bar.
\endlist
tab:
\list
- \i tabSizeHint() calcuates the size of a tab.
- \i tabInserted() notifies that a new tab was added.
- \i tabRemoved() notifies that a tab was removed.
- \i tabLayoutChange() notifies that the tabs have been re-laid out.
- \i paintEvent() paints all tabs.
+ \li tabSizeHint() calcuates the size of a tab.
+ \li tabInserted() notifies that a new tab was added.
+ \li tabRemoved() notifies that a tab was removed.
+ \li tabLayoutChange() notifies that the tabs have been re-laid out.
+ \li paintEvent() paints all tabs.
\endlist
For subclasses, you might also need the tabRect() functions which
returns the visual geometry of a single tab.
\table 100%
- \row \o \inlineimage plastique-tabbar.png Screenshot of a Plastique style tab bar
- \o A tab bar shown in the Plastique widget style.
- \row \o \inlineimage plastique-tabbar-truncated.png Screenshot of a truncated Plastique tab bar
- \o A truncated tab bar shown in the Plastique widget style.
+ \row \li \inlineimage plastique-tabbar.png Screenshot of a Plastique style tab bar
+ \li A tab bar shown in the Plastique widget style.
+ \row \li \inlineimage plastique-tabbar-truncated.png Screenshot of a truncated Plastique tab bar
+ \li A truncated tab bar shown in the Plastique widget style.
\endtable
\sa QTabWidget
The normal way to use QTabWidget is to do the following:
\list 1
- \i Create a QTabWidget.
- \i Create a QWidget for each of the pages in the tab dialog, but
+ \li Create a QTabWidget.
+ \li Create a QWidget for each of the pages in the tab dialog, but
do not specify parent widgets for them.
- \i Insert child widgets into the page widget, using layouts to
+ \li Insert child widgets into the page widget, using layouts to
position them as normal.
- \i Call addTab() or insertTab() to put the page widgets into the
+ \li Call addTab() or insertTab() to put the page widgets into the
tab widget, giving each tab a suitable label with an optional
keyboard shortcut.
\endlist
area, organizing the individual pages).
\table 100%
- \row \o \inlineimage windowsxp-tabwidget.png Screenshot of a Windows XP style tab widget
- \o \inlineimage macintosh-tabwidget.png Screenshot of a Macintosh style tab widget
- \o \inlineimage plastique-tabwidget.png Screenshot of a Plastique style tab widget
- \row \o A Windows XP style tab widget.
- \o A Macintosh style tab widget.
- \o A Plastique style tab widget.
+ \row \li \inlineimage windowsxp-tabwidget.png Screenshot of a Windows XP style tab widget
+ \li \inlineimage macintosh-tabwidget.png Screenshot of a Macintosh style tab widget
+ \li \inlineimage plastique-tabwidget.png Screenshot of a Plastique style tab widget
+ \row \li A Windows XP style tab widget.
+ \li A Macintosh style tab widget.
+ \li A Plastique style tab widget.
\endtable
\sa QTabBar, QStackedWidget, QToolBox, {Tab Dialog Example}
/*!
The event \a ev is used to provide the following keyboard shortcuts:
\table
- \header \i Keypress \i Action
- \row \i Alt+Left Arrow \i \l backward()
- \row \i Alt+Right Arrow \i \l forward()
- \row \i Alt+Up Arrow \i \l home()
+ \header \li Keypress \li Action
+ \row \li Alt+Left Arrow \li \l backward()
+ \row \li Alt+Right Arrow \li \l forward()
+ \row \li Alt+Up Arrow \li \l home()
\endtable
*/
void QTextBrowser::keyPressEvent(QKeyEvent *ev)
depending on the resource type:
\table
- \header \i ResourceType \i QVariant::Type
- \row \i QTextDocument::HtmlResource \i QString or QByteArray
- \row \i QTextDocument::ImageResource \i QImage, QPixmap or QByteArray
- \row \i QTextDocument::StyleSheetResource \i QString or QByteArray
+ \header \li ResourceType \li QVariant::Type
+ \row \li QTextDocument::HtmlResource \li QString or QByteArray
+ \row \li QTextDocument::ImageResource \li QImage, QPixmap or QByteArray
+ \row \li QTextDocument::StyleSheetResource \li QString or QByteArray
\endtable
*/
QVariant QTextBrowser::loadResource(int /*type*/, const QUrl &name)
Returns the url of the HistoryItem.
\table
- \header \i Input \i Return
- \row \i \a{i} < 0 \i \l backward() history
- \row \i\a{i} == 0 \i current, see QTextBrowser::source()
- \row \i \a{i} > 0 \i \l forward() history
+ \header \li Input \li Return
+ \row \li \a{i} < 0 \li \l backward() history
+ \row \li\a{i} == 0 \li current, see QTextBrowser::source()
+ \row \li \a{i} > 0 \li \l forward() history
\endtable
\since 4.4
Returns the documentTitle() of the HistoryItem.
\table
- \header \i Input \i Return
- \row \i \a{i} < 0 \i \l backward() history
- \row \i \a{i} == 0 \i current, see QTextBrowser::source()
- \row \i \a{i} > 0 \i \l forward() history
+ \header \li Input \li Return
+ \row \li \a{i} < 0 \li \l backward() history
+ \row \li \a{i} == 0 \li current, see QTextBrowser::source()
+ \row \li \a{i} > 0 \li \l forward() history
\endtable
\snippet doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp 0
When QTextEdit is used read-only the key bindings are limited to
navigation, and text may only be selected with the mouse:
\table
- \header \i Keypresses \i Action
- \row \i Up \i Moves one line up.
- \row \i Down \i Moves one line down.
- \row \i Left \i Moves one character to the left.
- \row \i Right \i Moves one character to the right.
- \row \i PageUp \i Moves one (viewport) page up.
- \row \i PageDown \i Moves one (viewport) page down.
- \row \i Home \i Moves to the beginning of the text.
- \row \i End \i Moves to the end of the text.
- \row \i Alt+Wheel
- \i Scrolls the page horizontally (the Wheel is the mouse wheel).
- \row \i Ctrl+Wheel \i Zooms the text.
- \row \i Ctrl+A \i Selects all text.
+ \header \li Keypresses \li Action
+ \row \li Up \li Moves one line up.
+ \row \li Down \li Moves one line down.
+ \row \li Left \li Moves one character to the left.
+ \row \li Right \li Moves one character to the right.
+ \row \li PageUp \li Moves one (viewport) page up.
+ \row \li PageDown \li Moves one (viewport) page down.
+ \row \li Home \li Moves to the beginning of the text.
+ \row \li End \li Moves to the end of the text.
+ \row \li Alt+Wheel
+ \li Scrolls the page horizontally (the Wheel is the mouse wheel).
+ \row \li Ctrl+Wheel \li Zooms the text.
+ \row \li Ctrl+A \li Selects all text.
\endtable
The text edit may be able to provide some meta-information. For
The list of key bindings which are implemented for editing:
\table
- \header \i Keypresses \i Action
- \row \i Backspace \i Deletes the character to the left of the cursor.
- \row \i Delete \i Deletes the character to the right of the cursor.
- \row \i Ctrl+C \i Copy the selected text to the clipboard.
- \row \i Ctrl+Insert \i Copy the selected text to the clipboard.
- \row \i Ctrl+K \i Deletes to the end of the line.
- \row \i Ctrl+V \i Pastes the clipboard text into text edit.
- \row \i Shift+Insert \i Pastes the clipboard text into text edit.
- \row \i Ctrl+X \i Deletes the selected text and copies it to the clipboard.
- \row \i Shift+Delete \i Deletes the selected text and copies it to the clipboard.
- \row \i Ctrl+Z \i Undoes the last operation.
- \row \i Ctrl+Y \i Redoes the last operation.
- \row \i Left \i Moves the cursor one character to the left.
- \row \i Ctrl+Left \i Moves the cursor one word to the left.
- \row \i Right \i Moves the cursor one character to the right.
- \row \i Ctrl+Right \i Moves the cursor one word to the right.
- \row \i Up \i Moves the cursor one line up.
- \row \i Down \i Moves the cursor one line down.
- \row \i PageUp \i Moves the cursor one page up.
- \row \i PageDown \i Moves the cursor one page down.
- \row \i Home \i Moves the cursor to the beginning of the line.
- \row \i Ctrl+Home \i Moves the cursor to the beginning of the text.
- \row \i End \i Moves the cursor to the end of the line.
- \row \i Ctrl+End \i Moves the cursor to the end of the text.
- \row \i Alt+Wheel \i Scrolls the page horizontally (the Wheel is the mouse wheel).
+ \header \li Keypresses \li Action
+ \row \li Backspace \li Deletes the character to the left of the cursor.
+ \row \li Delete \li Deletes the character to the right of the cursor.
+ \row \li Ctrl+C \li Copy the selected text to the clipboard.
+ \row \li Ctrl+Insert \li Copy the selected text to the clipboard.
+ \row \li Ctrl+K \li Deletes to the end of the line.
+ \row \li Ctrl+V \li Pastes the clipboard text into text edit.
+ \row \li Shift+Insert \li Pastes the clipboard text into text edit.
+ \row \li Ctrl+X \li Deletes the selected text and copies it to the clipboard.
+ \row \li Shift+Delete \li Deletes the selected text and copies it to the clipboard.
+ \row \li Ctrl+Z \li Undoes the last operation.
+ \row \li Ctrl+Y \li Redoes the last operation.
+ \row \li Left \li Moves the cursor one character to the left.
+ \row \li Ctrl+Left \li Moves the cursor one word to the left.
+ \row \li Right \li Moves the cursor one character to the right.
+ \row \li Ctrl+Right \li Moves the cursor one word to the right.
+ \row \li Up \li Moves the cursor one line up.
+ \row \li Down \li Moves the cursor one line down.
+ \row \li PageUp \li Moves the cursor one page up.
+ \row \li PageDown \li Moves the cursor one page down.
+ \row \li Home \li Moves the cursor to the beginning of the line.
+ \row \li Ctrl+Home \li Moves the cursor to the beginning of the text.
+ \row \li End \li Moves the cursor to the end of the line.
+ \row \li Ctrl+End \li Moves the cursor to the end of the text.
+ \row \li Alt+Wheel \li Scrolls the page horizontally (the Wheel is the mouse wheel).
\endtable
To select (mark) text hold down the Shift key whilst pressing one
adjust it with setPopupDelay().
\table 100%
- \row \o \inlineimage assistant-toolbar.png Qt Assistant's toolbar with tool buttons
- \row \o Qt Assistant's toolbar contains tool buttons that are associated
+ \row \li \inlineimage assistant-toolbar.png Qt Assistant's toolbar with tool buttons
+ \row \li Qt Assistant's toolbar contains tool buttons that are associated
with actions used in other parts of the main window.
\endtable
connect menu entries to them.
\table
- \row \o \inlineimage mdi-cascade.png
- \o \inlineimage mdi-tile.png
+ \row \li \inlineimage mdi-cascade.png
+ \li \inlineimage mdi-tile.png
\endtable
If you want your users to be able to work with child windows
The currently supported features and their versions:
\table
- \header \i Feature \i Version
- \row \i XML \i 1.0
+ \header \li Feature \li Version
+ \row \li XML \li 1.0
\endtable
*/
bool QDomImplementation::hasFeature(const QString& feature, const QString& version) const
The meaning of the name depends on the subclass:
\table
- \header \i Name \i Meaning
- \row \i QDomAttr \i The name of the attribute
- \row \i QDomCDATASection \i The string "#cdata-section"
- \row \i QDomComment \i The string "#comment"
- \row \i QDomDocument \i The string "#document"
- \row \i QDomDocumentFragment \i The string "#document-fragment"
- \row \i QDomDocumentType \i The name of the document type
- \row \i QDomElement \i The tag name
- \row \i QDomEntity \i The name of the entity
- \row \i QDomEntityReference \i The name of the referenced entity
- \row \i QDomNotation \i The name of the notation
- \row \i QDomProcessingInstruction \i The target of the processing instruction
- \row \i QDomText \i The string "#text"
+ \header \li Name \li Meaning
+ \row \li QDomAttr \li The name of the attribute
+ \row \li QDomCDATASection \li The string "#cdata-section"
+ \row \li QDomComment \li The string "#comment"
+ \row \li QDomDocument \li The string "#document"
+ \row \li QDomDocumentFragment \li The string "#document-fragment"
+ \row \li QDomDocumentType \li The name of the document type
+ \row \li QDomElement \li The tag name
+ \row \li QDomEntity \li The name of the entity
+ \row \li QDomEntityReference \li The name of the referenced entity
+ \row \li QDomNotation \li The name of the notation
+ \row \li QDomProcessingInstruction \li The target of the processing instruction
+ \row \li QDomText \li The string "#text"
\endtable
- \bold{Note:} This function does not take the presence of namespaces into account
+ \b{Note:} This function does not take the presence of namespaces into account
when processing the names of element and attribute nodes. As a result, the
returned name can contain any namespace prefix that may be present.
To obtain the node name of an element or attribute, use localName(); to
The meaning of the value depends on the subclass:
\table
- \header \i Name \i Meaning
- \row \i QDomAttr \i The attribute value
- \row \i QDomCDATASection \i The content of the CDATA section
- \row \i QDomComment \i The comment
- \row \i QDomProcessingInstruction \i The data of the processing instruction
- \row \i QDomText \i The text
+ \header \li Name \li Meaning
+ \row \li QDomAttr \li The attribute value
+ \row \li QDomCDATASection \li The content of the CDATA section
+ \row \li QDomComment \li The comment
+ \row \li QDomProcessingInstruction \li The data of the processing instruction
+ \row \li QDomText \li The text
\endtable
All the other subclasses do not have a node value and will return
The QDomNamedNodeMap is used in three places:
\list 1
- \i QDomDocumentType::entities() returns a map of all entities
+ \li QDomDocumentType::entities() returns a map of all entities
described in the DTD.
- \i QDomDocumentType::notations() returns a map of all notations
+ \li QDomDocumentType::notations() returns a map of all notations
described in the DTD.
- \i QDomNode::attributes() returns a map of all attributes of an
+ \li QDomNode::attributes() returns a map of all attributes of an
element.
\endlist
Returns true if the map contains a node called \a name; otherwise
returns false.
- \bold{Note:} This function does not take the presence of namespaces into account.
+ \b{Note:} This function does not take the presence of namespaces into account.
Use namedItemNS() to test whether the map contains a node with a specific namespace
URI and name.
*/
Returns true if this element has an attribute called \a name;
otherwise returns false.
- \bold{Note:} This function does not take the presence of namespaces
+ \b{Note:} This function does not take the presence of namespaces
into account. As a result, the specified name will be tested
against fully-qualified attribute names that include any namespace
prefixes that may be present.
Entity references are handled as follows:
\list
- \o References to internal general entities and character entities occurring in the
+ \li References to internal general entities and character entities occurring in the
content are included. The result is a QDomText node with the references replaced
by their corresponding entity values.
- \o References to parameter entities occurring in the internal subset are included.
+ \li References to parameter entities occurring in the internal subset are included.
The result is a QDomDocumentType node which contains entity and notation declarations
with the references replaced by their corresponding entity values.
- \o Any general parsed entity reference which is not defined in the internal subset and
+ \li Any general parsed entity reference which is not defined in the internal subset and
which occurs in the content is represented as a QDomEntityReference node.
- \o Any parsed entity reference which is not defined in the internal subset and which
+ \li Any parsed entity reference which is not defined in the internal subset and which
occurs outside of the content is replaced with an empty string.
- \o Any unparsed entity reference is replaced with an empty string.
+ \li Any unparsed entity reference is replaced with an empty string.
\endlist
\sa QDomNode::namespaceURI() QDomNode::localName()
The behavior of this function is slightly different depending on
the node types:
\table
- \header \i Node Type \i Behavior
- \row \i QDomAttr
- \i The owner element is set to 0 and the specified flag is
+ \header \li Node Type \li Behavior
+ \row \li QDomAttr
+ \li The owner element is set to 0 and the specified flag is
set to true in the generated attribute. The whole subtree
of \a importedNode is always imported for attribute nodes:
\a deep has no effect.
- \row \i QDomDocument
- \i Document nodes cannot be imported.
- \row \i QDomDocumentFragment
- \i If \a deep is true, this function imports the whole
+ \row \li QDomDocument
+ \li Document nodes cannot be imported.
+ \row \li QDomDocumentFragment
+ \li If \a deep is true, this function imports the whole
document fragment; otherwise it only generates an empty
document fragment.
- \row \i QDomDocumentType
- \i Document type nodes cannot be imported.
- \row \i QDomElement
- \i Attributes for which QDomAttr::specified() is true are
+ \row \li QDomDocumentType
+ \li Document type nodes cannot be imported.
+ \row \li QDomElement
+ \li Attributes for which QDomAttr::specified() is true are
also imported, other attributes are not imported. If \a
deep is true, this function also imports the subtree of \a
importedNode; otherwise it imports only the element node
(and some attributes, see above).
- \row \i QDomEntity
- \i Entity nodes can be imported, but at the moment there is
+ \row \li QDomEntity
+ \li Entity nodes can be imported, but at the moment there is
no way to use them since the document type is read-only in
DOM level 2.
- \row \i QDomEntityReference
- \i Descendants of entity reference nodes are never imported:
+ \row \li QDomEntityReference
+ \li Descendants of entity reference nodes are never imported:
\a deep has no effect.
- \row \i QDomNotation
- \i Notation nodes can be imported, but at the moment there is
+ \row \li QDomNotation
+ \li Notation nodes can be imported, but at the moment there is
no way to use them since the document type is read-only in
DOM level 2.
- \row \i QDomProcessingInstruction
- \i The target and value of the processing instruction is
+ \row \li QDomProcessingInstruction
+ \li The target and value of the processing instruction is
copied to the new node.
- \row \i QDomText
- \i The text is copied to the new node.
- \row \i QDomCDATASection
- \i The text is copied to the new node.
- \row \i QDomComment
- \i The text is copied to the new node.
+ \row \li QDomText
+ \li The text is copied to the new node.
+ \row \li QDomCDATASection
+ \li The text is copied to the new node.
+ \row \li QDomComment
+ \li The text is copied to the new node.
\endtable
\sa QDomElement::setAttribute() QDomNode::insertBefore()
\list
- \o "no error occurred"
- \o "error triggered by consumer"
- \o "unexpected end of file"
- \o "more than one document type definition"
- \o "error occurred while parsing element"
- \o "tag mismatch"
- \o "error occurred while parsing content"
- \o "unexpected character"
- \o "invalid name for processing instruction"
- \o "version expected while reading the XML declaration"
- \o "wrong value for standalone declaration"
- \o "encoding declaration or standalone declaration expected while reading the XML declaration"
- \o "standalone declaration expected while reading the XML declaration"
- \o "error occurred while parsing document type definition"
- \o "letter is expected"
- \o "error occurred while parsing comment"
- \o "error occurred while parsing reference"
- \o "internal general entity reference not allowed in DTD"
- \o "external parsed general entity reference not allowed in attribute value"
- \o "external parsed general entity reference not allowed in DTD"
- \o "unparsed entity reference n wrong context"
- \o "recursive entities"
- \o "error in the text declaration of an external entity"
+ \li "no error occurred"
+ \li "error triggered by consumer"
+ \li "unexpected end of file"
+ \li "more than one document type definition"
+ \li "error occurred while parsing element"
+ \li "tag mismatch"
+ \li "error occurred while parsing content"
+ \li "unexpected character"
+ \li "invalid name for processing instruction"
+ \li "version expected while reading the XML declaration"
+ \li "wrong value for standalone declaration"
+ \li "encoding declaration or standalone declaration expected while reading the XML declaration"
+ \li "standalone declaration expected while reading the XML declaration"
+ \li "error occurred while parsing document type definition"
+ \li "letter is expected"
+ \li "error occurred while parsing comment"
+ \li "error occurred while parsing reference"
+ \li "internal general entity reference not allowed in DTD"
+ \li "external parsed general entity reference not allowed in attribute value"
+ \li "external parsed general entity reference not allowed in DTD"
+ \li "unparsed entity reference n wrong context"
+ \li "recursive entities"
+ \li "error in the text declaration of an external entity"
\endlist
Note that, if you want to display these error messages to your
The \a name parameter must be one of the following strings:
\table
- \header \i Feature \i Default \i Notes
- \row \i \e http://xml.org/sax/features/namespaces
- \i true
- \i If enabled, namespaces are reported to the content handler.
- \row \i \e http://xml.org/sax/features/namespace-prefixes
- \i false
- \i If enabled, the original prefixed names
+ \header \li Feature \li Default \li Notes
+ \row \li \e http://xml.org/sax/features/namespaces
+ \li true
+ \li If enabled, namespaces are reported to the content handler.
+ \row \li \e http://xml.org/sax/features/namespace-prefixes
+ \li false
+ \li If enabled, the original prefixed names
and attributes used for namespace declarations are
reported.
- \row \i \e http://trolltech.com/xml/features/report-whitespace-only-CharData
- \i true
- \i If enabled, CharData that consist of
+ \row \li \e http://trolltech.com/xml/features/report-whitespace-only-CharData
+ \li true
+ \li If enabled, CharData that consist of
only whitespace characters are reported
using QXmlContentHandler::characters(). If disabled, whitespace is silently
discarded.
- \row \i \e http://trolltech.com/xml/features/report-start-end-entity
- \i false
- \i If enabled, the parser reports
+ \row \li \e http://trolltech.com/xml/features/report-start-end-entity
+ \li false
+ \li If enabled, the parser reports
QXmlContentHandler::startEntity() and
QXmlContentHandler::endEntity() events, so character data
might be reported in chunks.