Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > d5e62c01ae8d1e579463c6a871dd44bf > files > 259

qtbase5-doc-5.12.6-2.mga7.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- implicit-sharing.qdoc -->
  <title>Implicit Sharing | Qt Core 5.12.6</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td >Qt 5.12</td><td ><a href="qtcore-index.html">Qt Core</a></td><td >Implicit Sharing</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtcore-index.html">Qt 5.12.6 Reference Documentation</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#overview">Overview</a></li>
<li class="level1"><a href="#implicit-sharing-in-detail">Implicit Sharing in Detail</a></li>
<li class="level1"><a href="#list-of-classes">List of Classes</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">Implicit Sharing</h1>
<span class="subtitle"></span>
<!-- $$$implicit-sharing.html-description -->
<div class="descr"> <a name="details"></a>
<p>Many C++ classes in Qt use implicit data sharing to maximize resource usage and minimize copying. Implicitly shared classes are both safe and efficient when passed as arguments, because only a pointer to the data is passed around, and the data is copied only if and when a function writes to it, i.e&#x2e;, <i>copy-on-write</i>.</p>
<a name="overview"></a>
<h2 id="overview">Overview</h2>
<p>A shared class consists of a pointer to a shared data block that contains a reference count and the data.</p>
<p>When a shared object is created, it sets the reference count to 1. The reference count is incremented whenever a new object references the shared data, and decremented when the object dereferences the shared data. The shared data is deleted when the reference count becomes zero.</p>
<a name="deep-copy"></a><a name="shallow-copy"></a><p>When dealing with shared objects, there are two ways of copying an object. We usually speak about <i>deep</i> and <i>shallow</i> copies. A deep copy implies duplicating an object. A shallow copy is a reference copy, i.e&#x2e; just a pointer to a shared data block. Making a deep copy can be expensive in terms of memory and CPU. Making a shallow copy is very fast, because it only involves setting a pointer and incrementing the reference count.</p>
<p>Object assignment (with operator=()) for implicitly shared objects is implemented using shallow copies.</p>
<p>The benefit of sharing is that a program does not need to duplicate data unnecessarily, which results in lower memory use and less copying of data. Objects can easily be assigned, sent as function arguments, and returned from functions.</p>
<p>Implicit sharing mostly takes place behind the scenes; the programmer rarely needs to worry about it. However, Qt's container iterators have different behavior than those from the STL. Read <a href="containers.html#implicit-sharing-iterator-problem">Implicit sharing iterator problem</a>.</p>
<p>In multithreaded applications, implicit sharing takes place, as explained in Threads and Implicitly Shared Classes.</p>
<p>When implementing your own implicitly shared classes, use the <a href="qshareddata.html">QSharedData</a> and <a href="qshareddatapointer.html">QSharedDataPointer</a> classes.</p>
<a name="implicit-sharing-in-detail"></a>
<h2 id="implicit-sharing-in-detail">Implicit Sharing in Detail</h2>
<p>Implicit sharing automatically detaches the object from a shared block if the object is about to change and the reference count is greater than one. (This is often called <i>copy-on-write</i> or <i>value semantics</i>.)</p>
<p>An implicitly shared class has control of its internal data. In any member functions that modify its data, it automatically detaches before modifying the data. Notice, however, the special case with container iterators; see <a href="containers.html#implicit-sharing-iterator-problem">Implicit sharing iterator problem</a>.</p>
<p>The <a href="../qtgui/qpen.html">QPen</a> class, which uses implicit sharing, detaches from the shared data in all member functions that change the internal data.</p>
<p>Code fragment:</p>
<pre class="cpp">

  <span class="type">void</span> <span class="type"><a href="../qtgui/qpen.html">QPen</a></span><span class="operator">::</span>setStyle(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>PenStyle style)
  {
      detach();           <span class="comment">// detach from common data</span>
      d<span class="operator">-</span><span class="operator">&gt;</span>style <span class="operator">=</span> style;   <span class="comment">// set the style member</span>
  }

  <span class="type">void</span> <span class="type"><a href="../qtgui/qpen.html">QPen</a></span><span class="operator">::</span>detach()
  {
      <span class="keyword">if</span> (d<span class="operator">-</span><span class="operator">&gt;</span>ref <span class="operator">!</span><span class="operator">=</span> <span class="number">1</span>) {
          <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>             <span class="comment">// perform a deep copy</span>
      }
  }

</pre>
<a name="list-of-classes"></a>
<h2 id="list-of-classes">List of Classes</h2>
<p>The classes listed below automatically detach from common data if an object is about to be changed. The programmer will not even notice that the objects are shared. Thus you should treat separate instances of them as separate objects. They will always behave as separate objects but with the added benefit of sharing data whenever possible. For this reason, you can pass instances of these classes as arguments to functions by value without concern for the copying overhead.</p>
<p>Example:</p>
<pre class="cpp">

  <span class="type"><a href="../qtgui/qpixmap.html">QPixmap</a></span> p1<span class="operator">,</span> p2;
  p1<span class="operator">.</span>load(<span class="string">&quot;image.bmp&quot;</span>);
  p2 <span class="operator">=</span> p1;                        <span class="comment">// p1 and p2 share data</span>

  <span class="type"><a href="../qtgui/qpainter.html">QPainter</a></span> paint;
  paint<span class="operator">.</span>begin(<span class="operator">&amp;</span>p2);               <span class="comment">// cuts p2 loose from p1</span>
  paint<span class="operator">.</span>drawText(<span class="number">0</span><span class="operator">,</span><span class="number">50</span><span class="operator">,</span> <span class="string">&quot;Hi&quot;</span>);
  paint<span class="operator">.</span>end();

</pre>
<p>In this example, <code>p1</code> and <code>p2</code> share data until <a href="../qtgui/qpainter.html#begin">QPainter::begin</a>() is called for <code>p2</code>, because painting a pixmap will modify it.</p>
<p><b>Warning:</b> Be careful with copying an implicitly shared container (<a href="qmap.html">QMap</a>, <a href="qvector.html">QVector</a>, etc.) while you use <a href="containers.html#stl-style-iterators">STL-style iterator</a>. See <a href="containers.html#implicit-sharing-iterator-problem">Implicit sharing iterator problem</a>.</p>
<a name="implicitly-shared-classes"></a><div class="table"><table class="annotated">
<tr class="odd topAlign"><td class="tblName"><p><a href="qbitarray.html">QBitArray</a></p></td><td class="tblDescr"><p>Array of bits</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qbitmap.html">QBitmap</a></p></td><td class="tblDescr"><p>Monochrome (1-bit depth) pixmaps</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qbrush.html">QBrush</a></p></td><td class="tblDescr"><p>Defines the fill pattern of shapes drawn by QPainter</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qbytearray.html">QByteArray</a></p></td><td class="tblDescr"><p>Array of bytes</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qbytearraylist.html">QByteArrayList</a></p></td><td class="tblDescr"><p>List of byte arrays</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qcache.html">QCache</a></p></td><td class="tblDescr"><p>Template class that provides a cache</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qcollator.html">QCollator</a></p></td><td class="tblDescr"><p>Compares strings according to a localized collation algorithm</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qcollatorsortkey.html">QCollatorSortKey</a></p></td><td class="tblDescr"><p>Can be used to speed up string collation</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qcommandlineoption.html">QCommandLineOption</a></p></td><td class="tblDescr"><p>Defines a possible command-line option</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qcontiguouscache.html">QContiguousCache</a></p></td><td class="tblDescr"><p>Template class that provides a contiguous cache</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qcursor.html">QCursor</a></p></td><td class="tblDescr"><p>Mouse cursor with an arbitrary shape</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtdbus/qdbuspendingcall.html">QDBusPendingCall</a></p></td><td class="tblDescr"><p>Refers to one pending asynchronous call</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtdbus/qdbusunixfiledescriptor.html">QDBusUnixFileDescriptor</a></p></td><td class="tblDescr"><p>Holds one Unix file descriptor</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qdatetime.html">QDateTime</a></p></td><td class="tblDescr"><p>Date and time functions</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qdebug.html">QDebug</a></p></td><td class="tblDescr"><p>Output stream for debugging information</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qdir.html">QDir</a></p></td><td class="tblDescr"><p>Access to directory structures and their contents</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qdnsdomainnamerecord.html">QDnsDomainNameRecord</a></p></td><td class="tblDescr"><p>Stores information about a domain name record</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qdnshostaddressrecord.html">QDnsHostAddressRecord</a></p></td><td class="tblDescr"><p>Stores information about a host address record</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qdnsmailexchangerecord.html">QDnsMailExchangeRecord</a></p></td><td class="tblDescr"><p>Stores information about a DNS MX record</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qdnsservicerecord.html">QDnsServiceRecord</a></p></td><td class="tblDescr"><p>Stores information about a DNS SRV record</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qdnstextrecord.html">QDnsTextRecord</a></p></td><td class="tblDescr"><p>Stores information about a DNS TXT record</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qfileinfo.html">QFileInfo</a></p></td><td class="tblDescr"><p>System-independent file information</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qfont.html">QFont</a></p></td><td class="tblDescr"><p>Specifies a font used for drawing text</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qfontinfo.html">QFontInfo</a></p></td><td class="tblDescr"><p>General information about fonts</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qfontmetrics.html">QFontMetrics</a></p></td><td class="tblDescr"><p>Font metrics information</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qfontmetricsf.html">QFontMetricsF</a></p></td><td class="tblDescr"><p>Font metrics information</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qglyphrun.html">QGlyphRun</a></p></td><td class="tblDescr"><p>Direct access to the internal glyphs in a font</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qgradient.html">QGradient</a></p></td><td class="tblDescr"><p>Used in combination with QBrush to specify gradient fills</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qhash.html">QHash</a></p></td><td class="tblDescr"><p>Template class that provides a hash-table-based dictionary</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qhostaddress.html">QHostAddress</a></p></td><td class="tblDescr"><p>IP address</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qhttppart.html">QHttpPart</a></p></td><td class="tblDescr"><p>Holds a body part to be used inside a HTTP multipart MIME message</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qicon.html">QIcon</a></p></td><td class="tblDescr"><p>Scalable icons in different modes and states</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qimage.html">QImage</a></p></td><td class="tblDescr"><p>Hardware-independent image representation that allows direct access to the pixel data, and can be used as a paint device</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qjsonarray.html">QJsonArray</a></p></td><td class="tblDescr"><p>Encapsulates a JSON array</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qjsondocument.html">QJsonDocument</a></p></td><td class="tblDescr"><p>Way to read and write JSON documents</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qjsonobject.html">QJsonObject</a></p></td><td class="tblDescr"><p>Encapsulates a JSON object</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qjsonparseerror.html">QJsonParseError</a></p></td><td class="tblDescr"><p>Used to report errors during JSON parsing</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qjsonvalue.html">QJsonValue</a></p></td><td class="tblDescr"><p>Encapsulates a value in JSON</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qkeysequence.html">QKeySequence</a></p></td><td class="tblDescr"><p>Encapsulates a key sequence as used by shortcuts</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qlinkedlist.html">QLinkedList</a></p></td><td class="tblDescr"><p>Template class that provides linked lists</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qlist.html">QList</a></p></td><td class="tblDescr"><p>Template class that provides lists</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qlocale.html">QLocale</a></p></td><td class="tblDescr"><p>Converts between numbers and their string representations in various languages</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qmap.html">QMap</a></p></td><td class="tblDescr"><p>Template class that provides a red-black-tree-based dictionary</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qmimetype.html">QMimeType</a></p></td><td class="tblDescr"><p>Describes types of file or data, represented by a MIME type string</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qmultihash.html">QMultiHash</a></p></td><td class="tblDescr"><p>Convenience QHash subclass that provides multi-valued hashes</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qmultimap.html">QMultiMap</a></p></td><td class="tblDescr"><p>Convenience QMap subclass that provides multi-valued maps</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkaddressentry.html">QNetworkAddressEntry</a></p></td><td class="tblDescr"><p>Stores one IP address supported by a network interface, along with its associated netmask and broadcast address</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkcachemetadata.html">QNetworkCacheMetaData</a></p></td><td class="tblDescr"><p>Cache information</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkconfiguration.html">QNetworkConfiguration</a></p></td><td class="tblDescr"><p>Abstraction of one or more access point configurations</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkcookie.html">QNetworkCookie</a></p></td><td class="tblDescr"><p>Holds one network cookie</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkinterface.html">QNetworkInterface</a></p></td><td class="tblDescr"><p>Listing of the host's IP addresses and network interfaces</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkproxy.html">QNetworkProxy</a></p></td><td class="tblDescr"><p>Network layer proxy</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkproxyquery.html">QNetworkProxyQuery</a></p></td><td class="tblDescr"><p>Used to query the proxy settings for a socket</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qnetworkrequest.html">QNetworkRequest</a></p></td><td class="tblDescr"><p>Holds a request to be sent with QNetworkAccessManager</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qopengldebugmessage.html">QOpenGLDebugMessage</a></p></td><td class="tblDescr"><p>Wraps an OpenGL debug message</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qpainterpath.html">QPainterPath</a></p></td><td class="tblDescr"><p>Container for painting operations, enabling graphical shapes to be constructed and reused</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qpalette.html">QPalette</a></p></td><td class="tblDescr"><p>Contains color groups for each widget state</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qpen.html">QPen</a></p></td><td class="tblDescr"><p>Defines how a QPainter should draw lines and outlines of shapes</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpersistentmodelindex.html">QPersistentModelIndex</a></p></td><td class="tblDescr"><p>Used to locate data in a data model</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qpicture.html">QPicture</a></p></td><td class="tblDescr"><p>Paint device that records and replays QPainter commands</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qpixmap.html">QPixmap</a></p></td><td class="tblDescr"><p>Off-screen image representation that can be used as a paint device</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qpolygon.html">QPolygon</a></p></td><td class="tblDescr"><p>Vector of points using integer precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qpolygonf.html">QPolygonF</a></p></td><td class="tblDescr"><p>Vector of points using floating point precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qprocessenvironment.html">QProcessEnvironment</a></p></td><td class="tblDescr"><p>Holds the environment variables that can be passed to a program</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qqueue.html">QQueue</a></p></td><td class="tblDescr"><p>Generic container that provides a queue</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qrawfont.html">QRawFont</a></p></td><td class="tblDescr"><p>Access to a single physical instance of a font</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qregexp.html">QRegExp</a></p></td><td class="tblDescr"><p>Pattern matching using regular expressions</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qregion.html">QRegion</a></p></td><td class="tblDescr"><p>Specifies a clip region for a painter</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qregularexpression.html">QRegularExpression</a></p></td><td class="tblDescr"><p>Pattern matching using regular expressions</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qregularexpressionmatch.html">QRegularExpressionMatch</a></p></td><td class="tblDescr"><p>The results of a matching a QRegularExpression against a string</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qregularexpressionmatchiterator.html">QRegularExpressionMatchIterator</a></p></td><td class="tblDescr"><p>Iterator on the results of a global match of a QRegularExpression object against a string</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qset.html">QSet</a></p></td><td class="tblDescr"><p>Template class that provides a hash-table-based set</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslcertificate.html">QSslCertificate</a></p></td><td class="tblDescr"><p>Convenient API for an X509 certificate</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslcertificateextension.html">QSslCertificateExtension</a></p></td><td class="tblDescr"><p>API for accessing the extensions of an X509 certificate</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslcipher.html">QSslCipher</a></p></td><td class="tblDescr"><p>Represents an SSL cryptographic cipher</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslconfiguration.html">QSslConfiguration</a></p></td><td class="tblDescr"><p>Holds the configuration and state of an SSL connection</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qssldiffiehellmanparameters.html">QSslDiffieHellmanParameters</a></p></td><td class="tblDescr"><p>Interface for Diffie-Hellman parameters for servers</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslerror.html">QSslError</a></p></td><td class="tblDescr"><p>SSL error</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslkey.html">QSslKey</a></p></td><td class="tblDescr"><p>Interface for private and public keys</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtnetwork/qsslpresharedkeyauthenticator.html">QSslPreSharedKeyAuthenticator</a></p></td><td class="tblDescr"><p>Authentication data for pre shared keys (PSK) ciphersuites</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qstack.html">QStack</a></p></td><td class="tblDescr"><p>Template class that provides a stack</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qstatictext.html">QStaticText</a></p></td><td class="tblDescr"><p>Enables optimized drawing of text when the text and its layout is updated rarely</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qstorageinfo.html">QStorageInfo</a></p></td><td class="tblDescr"><p>Provides information about currently mounted storage and drives</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qstring.html">QString</a></p></td><td class="tblDescr"><p>Unicode character string</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qstringlist.html">QStringList</a></p></td><td class="tblDescr"><p>List of strings</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtextblockformat.html">QTextBlockFormat</a></p></td><td class="tblDescr"><p>Formatting information for blocks of text in a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qtextboundaryfinder.html">QTextBoundaryFinder</a></p></td><td class="tblDescr"><p>Way of finding Unicode text boundaries in a string</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtextcharformat.html">QTextCharFormat</a></p></td><td class="tblDescr"><p>Formatting information for characters in a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qtextcursor.html">QTextCursor</a></p></td><td class="tblDescr"><p>Offers an API to access and modify QTextDocuments</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtextdocumentfragment.html">QTextDocumentFragment</a></p></td><td class="tblDescr"><p>Represents a piece of formatted text from a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qtextformat.html">QTextFormat</a></p></td><td class="tblDescr"><p>Formatting information for a QTextDocument</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></p></td><td class="tblDescr"><p>Formatting information for frames in a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qtextimageformat.html">QTextImageFormat</a></p></td><td class="tblDescr"><p>Formatting information for images in a QTextDocument</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtextlistformat.html">QTextListFormat</a></p></td><td class="tblDescr"><p>Formatting information for lists in a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qtexttablecellformat.html">QTextTableCellFormat</a></p></td><td class="tblDescr"><p>Formatting information for table cells in a QTextDocument</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qtexttableformat.html">QTextTableFormat</a></p></td><td class="tblDescr"><p>Formatting information for tables in a QTextDocument</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qurl.html">QUrl</a></p></td><td class="tblDescr"><p>Convenient interface for working with URLs</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qurlquery.html">QUrlQuery</a></p></td><td class="tblDescr"><p>Way to manipulate a key-value pairs in a URL's query</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qvariant.html">QVariant</a></p></td><td class="tblDescr"><p>Acts like a union for the most common Qt data types</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qvector.html">QVector</a></p></td><td class="tblDescr"><p>Template class that provides a dynamic array</p></td></tr>
</table></div>
</div>
<!-- @@@implicit-sharing.html -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2019 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>