Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > ff187cb994c94c614ecc64c5a8528b1b > files > 6665

qt-doc-4.8.5-10.fc18.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qt4-tulip.qdoc -->
  <title>Qt 4.8: The Tulip Container Classes</title>
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <script src="scripts/jquery.js" type="text/javascript"></script>
  <script src="scripts/functions.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="style/superfish.css" />
  <link rel="stylesheet" type="text/css" href="style/narrow.css" />
  <!--[if IE]>
<meta name="MSSmartTagsPreventParsing" content="true">
<meta http-equiv="imagetoolbar" content="no">
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie6.css">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie7.css">
<![endif]-->
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="style/style_ie8.css">
<![endif]-->

<script src="scripts/superfish.js" type="text/javascript"></script>
<script src="scripts/narrow.js" type="text/javascript"></script>

</head>
<body class="" onload="CheckEmptyAndLoadList();">
 <div class="header" id="qtdocheader">
    <div class="content"> 
    <div id="nav-logo">
      <a href="index.html">Home</a></div>
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
    <div id="narrowsearch"></div>
    <div id="nav-topright">
      <ul>
        <li class="nav-topright-home"><a href="http://qt.digia.com/">Qt HOME</a></li>
        <li class="nav-topright-dev"><a href="http://qt-project.org/">DEV</a></li>
        <li class="nav-topright-doc nav-topright-doc-active"><a href="http://qt-project.org/doc/">
          DOC</a></li>
        <li class="nav-topright-blog"><a href="http://blog.qt.digia.com/">BLOG</a></li>
      </ul>
    </div>
    <div id="shortCut">
      <ul>
        <li class="shortCut-topleft-inactive"><span><a href="index.html">Qt 4.8</a></span></li>
        <li class="shortCut-topleft-active"><a href="http://qt-project.org/doc/">ALL VERSIONS        </a></li>
      </ul>
     </div>
 <ul class="sf-menu" id="narrowmenu"> 
             <li><a href="#">API Lookup</a> 
                 <ul> 
                     <li><a href="classes.html">Class index</a></li> 
           <li><a href="functions.html">Function index</a></li> 
           <li><a href="modules.html">Modules</a></li> 
           <li><a href="namespaces.html">Namespaces</a></li> 
           <li><a href="qtglobal.html">Global Declarations</a></li> 
           <li><a href="qdeclarativeelements.html">QML elements</a></li> 
             </ul> 
             </li> 
             <li><a href="#">Qt Topics</a> 
                 <ul> 
                        <li><a href="qt-basic-concepts.html">Programming with Qt</a></li>  
                        <li><a href="qtquick.html">Device UIs &amp; Qt Quick</a></li>  
                        <li><a href="qt-gui-concepts.html">UI Design with Qt</a></li>  
                        <li><a href="supported-platforms.html">Supported Platforms</a></li>  
                        <li><a href="technology-apis.html">Qt and Key Technologies</a></li>  
                        <li><a href="best-practices.html">How-To's and Best Practices</a></li>  
              </ul> 
                 </li> 
                 <li><a href="#">Examples</a> 
                     <ul> 
                       <li><a href="all-examples.html">Examples</a></li> 
                       <li><a href="tutorials.html">Tutorials</a></li> 
                       <li><a href="demos.html">Demos</a></li> 
                       <li><a href="qdeclarativeexamples.html">QML Examples</a></li> 
                </ul> 
                     </li> 
                 </ul> 
    </div>
  </div>
  <div class="wrapper">
    <div class="hd">
      <span></span>
    </div>
    <div class="bd group">
      <div class="sidebar">
        <div class="searchlabel">
          Search index:</div>
        <div class="search" id="sidebarsearch">
          <form id="qtdocsearch" action="" onsubmit="return false;">
            <fieldset>
              <input type="text" name="searchstring" id="pageType" value="" />
 <div id="resultdialog"> 
 <a href="#" id="resultclose">Close</a> 
 <p id="resultlinks" class="all"><a href="#" id="showallresults">All</a> | <a href="#" id="showapiresults">API</a> | <a href="#" id="showarticleresults">Articles</a> | <a href="#" id="showexampleresults">Examples</a></p> 
 <p id="searchcount" class="all"><span id="resultcount"></span><span id="apicount"></span><span id="articlecount"></span><span id="examplecount"></span>&nbsp;results:</p> 
 <ul id="resultlist" class="all"> 
 </ul> 
 </div> 
            </fieldset>
          </form>
        </div>
        <div class="box first bottombar" id="lookup">
          <h2 title="API Lookup"><span></span>
            API Lookup</h2>
          <div  id="list001" class="list">
          <ul id="ul001" >
              <li class="defaultLink"><a href="classes.html">Class index</a></li>
              <li class="defaultLink"><a href="functions.html">Function index</a></li>
              <li class="defaultLink"><a href="modules.html">Modules</a></li>
              <li class="defaultLink"><a href="namespaces.html">Namespaces</a></li>
              <li class="defaultLink"><a href="qtglobal.html">Global Declarations</a></li>
              <li class="defaultLink"><a href="qdeclarativeelements.html">QML elements</a></li>
            </ul> 
          </div>
        </div>
        <div class="box bottombar" id="topics">
          <h2 title="Qt Topics"><span></span>
            Qt Topics</h2>
          <div id="list002" class="list">
            <ul id="ul002" >
               <li class="defaultLink"><a href="qt-basic-concepts.html">Programming with Qt</a></li> 
               <li class="defaultLink"><a href="qtquick.html">Device UIs &amp; Qt Quick</a></li> 
               <li class="defaultLink"><a href="qt-gui-concepts.html">UI Design with Qt</a></li> 
               <li class="defaultLink"><a href="supported-platforms.html">Supported Platforms</a></li>  
               <li class="defaultLink"><a href="technology-apis.html">Qt and Key Technologies</a></li> 
               <li class="defaultLink"><a href="best-practices.html">How-To's and Best Practices</a></li> 
            </ul>  
          </div>
        </div>
        <div class="box" id="examples">
          <h2 title="Examples"><span></span>
            Examples</h2>
          <div id="list003" class="list">
        <ul id="ul003">
              <li class="defaultLink"><a href="all-examples.html">Examples</a></li>
              <li class="defaultLink"><a href="tutorials.html">Tutorials</a></li>
              <li class="defaultLink"><a href="demos.html">Demos</a></li>
              <li class="defaultLink"><a href="qdeclarativeexamples.html">QML Examples</a></li>
            </ul> 
          </div>
        </div>
      </div>
      <div class="wrap">
        <div class="toolbar">
          <div class="breadcrumb toolblock">
            <ul>
              <li class="first"><a href="index.html">Home</a></li>
              <!--  Breadcrumbs go here -->
<li>The Tulip Container Classes</li>
            </ul>
          </div>
          <div class="toolbuttons toolblock">
            <ul>
              <li id="smallA" class="t_button">A</li>
              <li id="medA" class="t_button active">A</li>
              <li id="bigA" class="t_button">A</li>
              <li id="print" class="t_button"><a href="javascript:this.print();">
                <span>Print</span></a></li>
            </ul>
        </div>
        </div>
        <div class="content mainContent">
  <link rel="prev" href="qt4-intro.html" />
  <link rel="next" href="qt4-interview.html" />
<p class="naviNextPrevious headerNavi">
<a class="prevPage" href="qt4-intro.html">What's New in Qt 4</a>
<a class="nextPage" href="qt4-interview.html">The Interview Framework</a>
</p><p/>
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#general-overview">General Overview</a></li>
<li class="level1"><a href="#examples">Examples</a></li>
<li class="level1"><a href="#comparison-with-qt-3">Comparison with Qt 3</a></li>
</ul>
</div>
<h1 class="title">The Tulip Container Classes</h1>
<span class="subtitle"></span>
<!-- $$$qt4-tulip.html-description -->
<div class="descr"> <a name="details"></a>
<p>Qt 4 introduces a new set of containers that supersede both the old QCollection pointer-based containers and the newer QTL value-based containers.</p>
<a name="general-overview"></a>
<h2>General Overview</h2>
<p>The Tulip containers are similar to Qt 3's QTL containers (QValueList, QValueVector, <a href="qmap.html">QMap</a>), but have the following advantages:</p>
<ul>
<li>The containers provide new iterators with a nicer, less error-prone syntax than STL, inspired by Java's iterators. (The STL-style iterators are still available as a lightweight, STL-compatible alternative.)</li>
<li>The containers have been optimized for minimal code expansion.</li>
<li>An empty container performs no memory allocation, and only requires the same space as a pointer.</li>
<li>Even though they are implicitly shared, they can safely be copied across different threads without formality. There's no need to use <tt>QDeepCopy</tt>.</li>
</ul>
<p>Tulip provides the following sequential containers: <a href="qlist.html">QList</a>, <a href="qlinkedlist.html">QLinkedList</a>, <a href="qvector.html">QVector</a>, <a href="qstack.html">QStack</a>, and <a href="qqueue.html">QQueue</a>. For most applications, <a href="qlist.html">QList</a> is the best type to use. Although it is implemented as an array-list, it provides very fast prepends and appends. If you really need a linked-list, use <a href="qlinkedlist.html">QLinkedList</a>; if you want your items to occupy consecutive memory locations, use <a href="qvector.html">QVector</a>. <a href="qstack.html">QStack</a> and <a href="qqueue.html">QQueue</a> are convenience classes that provide LIFO and FIFO semantics.</p>
<p>Tulip also provides these associative containers: <a href="qmap.html">QMap</a>, <a href="qmultimap.html">QMultiMap</a>, <a href="qhash.html">QHash</a>, <a href="qmultihash.html">QMultiHash</a>, and <a href="qset.html">QSet</a>. The &quot;Multi&quot; containers conveniently support multiple values associated with a single key. The &quot;Hash&quot; containers provide faster lookup by using a hash function instead of a binary search on a sorted set.</p>
<p>The Tulip containers support the <a href="containers.html#foreach">foreach</a> keyword, a Qt-specific addition to the C++ language that is implemented using the standard C++ preprocessor. The syntax is:</p>
<pre class="cpp"> <a href="qtglobal.html#foreach">foreach</a> (variable<span class="operator">,</span> container)
     statement;</pre>
<p>Example:</p>
<pre class="cpp"> <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">&gt;</span> list;
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
 <a href="qtglobal.html#foreach">foreach</a> (<span class="keyword">const</span> <span class="type"><a href="qstring.html">QString</a></span> <span class="operator">&amp;</span>str<span class="operator">,</span> list)
     cout <span class="operator">&lt;</span><span class="operator">&lt;</span> str<span class="operator">.</span>ascii() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;</pre>
<p>The iterator variable can also be defined outside the loop. For example:</p>
<pre class="cpp"> <span class="type"><a href="qstring.html">QString</a></span> str;
 <a href="qtglobal.html#foreach">foreach</a> (str<span class="operator">,</span> list)
     cout <span class="operator">&lt;</span><span class="operator">&lt;</span> str<span class="operator">.</span>ascii() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;</pre>
<p>Just like standard <tt>for</tt> loops, foreach supports braces, <tt>break</tt>, <tt>continue</tt>, and nested loops. Qt makes a copy of the container when it enters the loop. If you modify the container as you are iterating, that won't affect the loop.</p>
<p>For details about the new containers, see the <a href="containers.html">Container Classes</a> and <a href="qtalgorithms.html">Generic Algorithms</a> overview documents.</p>
<p>In addition to the new containers, considerable work has also gone into <a href="qbytearray.html">QByteArray</a> and <a href="qstring.html">QString</a>. The Qt 3 <a href="porting4.html#qcstring">QCString</a> class has been merged with <a href="qbytearray.html">QByteArray</a>. The new <a href="qbytearray.html">QByteArray</a> automatically provides a '\0' terminator after the last character. For example, the byte array of size 5 containing &quot;abcde&quot; has a null byte at position 5 (one past the end). This solves all the typical problems that occurred in Qt 3 with conversions between <a href="qbytearray.html">QByteArray</a> and <a href="porting4.html#qcstring">QCString</a>.</p>
<p>To avoid crashes, <a href="qbytearray.html#data">QByteArray::data</a>() never returns a null pointer. Furthermore, the distinction between null and empty strings has been watered down so that <tt>QByteArray() == QByteArray(&quot;&quot;)</tt> and <tt>QString() == QString(&quot;&quot;)</tt>.</p>
<a name="examples"></a>
<h2>Examples</h2>
<p>The first group of examples show how to use the new Java-style iterators. The main difference between the Java-style iterators and the STL-style iterators is that the Java-style ones point between items (or before the first item, or after the last item), whereas the STL ones point at an item (or past the last item). One advantage of the Java-style iterators is that iterating forward and backward are symmetric operations.</p>
<p>Traversing a container using a Java-style iterator:</p>
<pre class="cpp"> <span class="comment">// forward                                  // backward</span>
 <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">&gt;</span> list;                        <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">&gt;</span> list;
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>                                         <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
 <span class="type"><a href="qlistiterator.html">QListIterator</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">&gt;</span> i(list);             <span class="type"><a href="qlistiterator.html">QListIterator</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">&gt;</span> i(list);
 <span class="keyword">while</span> (i<span class="operator">.</span>hasNext())                         i<span class="operator">.</span>toBack();
     cout <span class="operator">&lt;</span><span class="operator">&lt;</span> i<span class="operator">.</span>next()<span class="operator">.</span>ascii() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;       <span class="keyword">while</span> (i<span class="operator">.</span>hasPrev())
                                                 cout <span class="operator">&lt;</span><span class="operator">&lt;</span> i<span class="operator">.</span>prev()<span class="operator">.</span>ascii() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;</pre>
<p>Modifying items using a Java-style iterator:</p>
<pre class="cpp"> <span class="comment">// forward                                  // backward</span>
 <span class="type"><a href="qmutablelistiterator.html">QMutableListIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> i(list);          <span class="type"><a href="qmutablelistiterator.html">QMutableListIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> i(list);
 <span class="keyword">while</span> (i<span class="operator">.</span>hasNext())                         i<span class="operator">.</span>toBack();
     <span class="keyword">if</span> (i<span class="operator">.</span>next() <span class="operator">&gt;</span> <span class="number">128</span>)                     <span class="keyword">while</span> (i<span class="operator">.</span>hasPrev())
         i<span class="operator">.</span>setValue(<span class="number">128</span>);                        <span class="keyword">if</span> (i<span class="operator">.</span>prev() <span class="operator">&gt;</span> <span class="number">128</span>)
                                                     i<span class="operator">.</span>setValue(<span class="number">128</span>);</pre>
<p>Removing items using a Java-style iterator:</p>
<pre class="cpp"> <span class="comment">// forward                                  // backward</span>
 <span class="type"><a href="qmutablelistiterator.html">QMutableListIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> i(list);          <span class="type"><a href="qmutablelistiterator.html">QMutableListIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> i(list);
 <span class="keyword">while</span> (i<span class="operator">.</span>hasNext())                         i<span class="operator">.</span>toBack();
     <span class="keyword">if</span> (i<span class="operator">.</span>next() <span class="operator">%</span> <span class="number">2</span> <span class="operator">!</span><span class="operator">=</span> <span class="number">0</span>)                  <span class="keyword">while</span> (i<span class="operator">.</span>hasPrev())
         i<span class="operator">.</span>remove();                             <span class="keyword">if</span> (i<span class="operator">.</span>prev() <span class="operator">%</span> <span class="number">2</span> <span class="operator">!</span><span class="operator">=</span> <span class="number">0</span>)
                                                     i<span class="operator">.</span>remove();</pre>
<p>Iterating over items with a particular value using STL-style vs. Java-style iterators:</p>
<pre class="cpp"> <span class="comment">// STL-style                                // Java-style</span>
 <span class="type"><a href="qmap.html">QMap</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">,</span> <span class="type"><a href="qwidget.html">QWidget</a></span> <span class="operator">*</span><span class="operator">&gt;</span><span class="operator">::</span>const_iterator i;     <span class="type"><a href="qmapiterator.html">QMapIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">,</span> <span class="type"><a href="qwidget.html">QWidget</a></span> <span class="operator">*</span><span class="operator">&gt;</span> i(map);
 <span class="keyword">for</span> (i <span class="operator">=</span> map<span class="operator">.</span>begin(); i <span class="operator">!</span><span class="operator">=</span> map<span class="operator">.</span>end(); <span class="operator">+</span><span class="operator">+</span>i)  <span class="keyword">while</span> (i<span class="operator">.</span>findNext(widget))
     <span class="keyword">if</span> (i<span class="operator">.</span>value() <span class="operator">=</span><span class="operator">=</span> widget)                    cout <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Found widget &quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> widget
         cout <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Found widget &quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> widget            <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot; under key &quot;</span>
              <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot; under key &quot;</span>                        <span class="operator">&lt;</span><span class="operator">&lt;</span> i<span class="operator">.</span>key() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;
              <span class="operator">&lt;</span><span class="operator">&lt;</span> i<span class="operator">.</span>key() <span class="operator">&lt;</span><span class="operator">&lt;</span> endl;</pre>
<p>Modifying and removing items using STL-style vs. Java-style iterators:</p>
<pre class="cpp"> <span class="comment">// STL-style                                // Java-style</span>
 <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span><span class="operator">::</span>iterator i <span class="operator">=</span> list<span class="operator">.</span>begin();      <span class="type"><a href="qmutablelistiterator.html">QMutableListIterator</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> i(list);
 <span class="keyword">while</span> (i <span class="operator">!</span><span class="operator">=</span> list<span class="operator">.</span>end()) {                   <span class="keyword">while</span> (i<span class="operator">.</span>hasNext()) {
     <span class="keyword">if</span> (<span class="operator">*</span>i <span class="operator">=</span><span class="operator">=</span> <span class="number">0</span>) {                              <span class="type">int</span> val <span class="operator">=</span> i<span class="operator">.</span>next();
         i <span class="operator">=</span> list<span class="operator">.</span>erase(i);                      <span class="keyword">if</span> (val <span class="operator">&lt;</span> <span class="number">0</span>)
     } <span class="keyword">else</span> {                                        i<span class="operator">.</span>setValue(<span class="operator">-</span>val);
         <span class="keyword">if</span> (<span class="operator">*</span>i <span class="operator">&lt;</span> <span class="number">0</span>)                             <span class="keyword">else</span> <span class="keyword">if</span> (val <span class="operator">=</span><span class="operator">=</span> <span class="number">0</span>)
             <span class="operator">*</span>i <span class="operator">=</span> <span class="operator">-</span><span class="operator">*</span>i;                               i<span class="operator">.</span>remove();
         <span class="operator">+</span><span class="operator">+</span>i;                                }
     }
 }</pre>
<p>The next group of examples show the API of the container classes themselves. The API is similar to the QTL classes of Qt 3, but is nicer in many respects.</p>
<p>Iterating over a <a href="qlist.html">QList</a> using an index (which is fast even for large lists, because <a href="qlist.html">QList</a> is implemented as an array-list):</p>
<pre class="cpp"> <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type">double</span><span class="operator">&gt;</span> list;
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
 <span class="keyword">for</span> (<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator">&lt;</span> list<span class="operator">.</span>size(); <span class="operator">+</span><span class="operator">+</span>i) {
     <span class="keyword">if</span> (list<span class="operator">[</span>i<span class="operator">]</span> <span class="operator">&lt;</span> <span class="number">0.0</span>)
         list<span class="operator">[</span>i<span class="operator">]</span> <span class="operator">=</span> <span class="number">0.0</span>;
 }</pre>
<p>Retrieving a value from a map, using a default value if the key doesn't exist:</p>
<pre class="cpp"> <span class="type"><a href="qmap.html">QMap</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">,</span> <span class="type">int</span><span class="operator">&gt;</span> map;
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
 map<span class="operator">.</span>value(<span class="string">&quot;TIMEOUT&quot;</span><span class="operator">,</span> <span class="number">30</span>);  <span class="comment">// returns 30 if &quot;TIMEOUT&quot; isn't in the map</span></pre>
<p>Getting all the values for a particular key in a <a href="qmultimap.html">QMultiMap</a> or <a href="qmultihash.html">QMultiHash</a>:</p>
<pre class="cpp"> <span class="type"><a href="qmultimap.html">QMultiMap</a></span><span class="operator">&lt;</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">,</span> <span class="type">int</span><span class="operator">&gt;</span> map;
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
 <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type">int</span><span class="operator">&gt;</span> values <span class="operator">=</span> map<span class="operator">.</span>values(<span class="string">&quot;TIMEOUT&quot;</span>);</pre>
<a name="comparison-with-qt-3"></a>
<h2>Comparison with Qt 3</h2>
<p>Tulip containers are value based. If you want to store a list where each item is a <a href="qwidget.html">QWidget</a> *, use <a href="qlist.html">QList</a>&lt;<a href="qwidget.html">QWidget</a> *&gt;.</p>
<p>The new containers do not support auto-delete. In practice, we discovered that the only case where auto-delete proved worthwhile was when the data really should be stored as a value rather than as a pointer (e.g&#x2e;, <a href="qlist.html">QList</a>&lt;int&gt; rather than <a href="qlist.html">QList</a>&lt;int *&gt;). If you need to delete all the items in a container, use <a href="qtalgorithms.html#qDeleteAll">qDeleteAll</a>().</p>
<p>If you use QValueList in Qt 3, you can replace it with either <a href="qlist.html">QList</a> or <a href="qlinkedlist.html">QLinkedList</a> in Qt 4. In most cases, <a href="qlist.html">QList</a> is the best choice: It is typically faster, results in less code in your executable, and requires less memory. However, <a href="qlinkedlist.html">QLinkedList</a>'s iterators provide stronger guarantees, and only <a href="qlinkedlist.html">QLinkedList</a> provides constant-time insertions in the middle, which can make a difference for lists with thousands of items.</p>
<p>If you use QValueVector or <a href="qmap.html">QMap</a> in Qt 3, the corresponding Qt 4 classes (<a href="qvector.html">QVector</a>, <a href="qmap.html">QMap</a>) are very similar to use.</p>
</div>
<!-- @@@qt4-tulip.html -->
<p class="naviNextPrevious footerNavi">
<a class="prevPage" href="qt4-intro.html">What's New in Qt 4</a>
<a class="nextPage" href="qt4-interview.html">The Interview Framework</a>
</p>
      </div>
    </div>
    </div> 
    <div class="ft">
      <span></span>
    </div>
  </div> 
  <div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2013 Digia Plc and/or its
      subsidiaries. Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      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.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Digia, Qt and their respective logos are trademarks of Digia Plc 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
  </div>

  <script src="scripts/functions.js" type="text/javascript"></script>
</body>
</html>