Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > 1dd17e0d683ef79b4bb6872bbf359d7f > files > 6080

qt4-doc-4.8.7-26.2.mga7.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" />
<!-- qnetworksession.cpp -->
  <title>Qt 4.8: QNetworkSession Class Reference</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><a href="modules.html">Modules</a></li>
<li><a href="qtnetwork.html">QtNetwork</a></li>
<li>QNetworkSession</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">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-types">Public Types</a></li>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#public-slots">Public Slots</a></li>
<li class="level1"><a href="#signals">Signals</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
<li class="level2"><a href="#roaming">Roaming</a></li>
</ul>
</div>
<h1 class="title">QNetworkSession Class Reference</h1>
<!-- $$$QNetworkSession-brief -->
<p>The QNetworkSession class provides control over the system's access points and enables session management for cases when multiple clients access the same access point. <a href="#details">More...</a></p>
<!-- @@@QNetworkSession -->
<pre class="cpp"> <span class="preprocessor">#include &lt;QNetworkSession&gt;</span></pre><p><b>Inherits: </b><a href="qobject.html">QObject</a>.</p>
<p>This class was introduced in Qt 4.7.</p>
<ul>
<li><a href="qnetworksession-members.html">List of all members, including inherited members</a></li>
</ul>
<a name="public-types"></a>
<h2>Public Types</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#SessionError-enum">SessionError</a></b> { UnknownSessionError, SessionAbortedError, RoamingError, OperationNotSupportedError, InvalidConfigurationError }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#State-enum">State</a></b> { Invalid, NotAvailable, Connecting, Connected, ..., Roaming }</td></tr>
</table>
<a name="public-functions"></a>
<h2>Public Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#QNetworkSession">QNetworkSession</a></b> ( const QNetworkConfiguration &amp; <i>connectionConfig</i>, QObject * <i>parent</i> = 0 )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#dtor.QNetworkSession">~QNetworkSession</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#activeTime">activeTime</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#bytesReceived">bytesReceived</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#bytesWritten">bytesWritten</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QNetworkConfiguration </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#configuration">configuration</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> SessionError </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#error">error</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#errorString">errorString</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QNetworkInterface </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#interface">interface</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#isOpen">isOpen</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QVariant </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#sessionProperty">sessionProperty</a></b> ( const QString &amp; <i>key</i> ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#setSessionProperty">setSessionProperty</a></b> ( const QString &amp; <i>key</i>, const QVariant &amp; <i>value</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> State </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#state">state</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#waitForOpened">waitForOpened</a></b> ( int <i>msecs</i> = 30000 )</td></tr>
</table>
<ul>
<li class="fn">29 public functions inherited from <a href="qobject.html#public-functions">QObject</a></li>
</ul>
<a name="public-slots"></a>
<h2>Public Slots</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#accept">accept</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#close">close</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#ignore">ignore</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#migrate">migrate</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#open">open</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#reject">reject</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#stop">stop</a></b> ()</td></tr>
</table>
<ul>
<li class="fn">1 public slot inherited from <a href="qobject.html#public-slots">QObject</a></li>
</ul>
<a name="signals"></a>
<h2>Signals</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#closed">closed</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#error-2">error</a></b> ( QNetworkSession::SessionError <i>error</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#newConfigurationActivated">newConfigurationActivated</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#opened">opened</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#preferredConfigurationChanged">preferredConfigurationChanged</a></b> ( const QNetworkConfiguration &amp; <i>config</i>, bool <i>isSeamless</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qnetworksession.html#stateChanged">stateChanged</a></b> ( QNetworkSession::State <i>state</i> )</td></tr>
</table>
<ul>
<li class="fn">1 signal inherited from <a href="qobject.html#signals">QObject</a></li>
</ul>
<h3>Additional Inherited Members</h3>
<ul>
<li class="fn">1 property inherited from <a href="qobject.html#properties">QObject</a></li>
<li class="fn">7 static public members inherited from <a href="qobject.html#static-public-members">QObject</a></li>
<li class="fn">8 protected functions inherited from <a href="qobject.html#protected-functions">QObject</a></li>
</ul>
<a name="details"></a>
<!-- $$$QNetworkSession-description -->
<div class="descr">
<h2>Detailed Description</h2>
<p>The QNetworkSession class provides control over the system's access points and enables session management for cases when multiple clients access the same access point.</p>
<p>A QNetworkSession enables control over the system's network interfaces. The session's configuration parameter are determined via the <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> object to which it is bound. Depending on the type of the session (single access point or service network) a session may be linked to one or more network interfaces. By means of <a href="qnetworksession.html#open">opening</a> and <a href="qnetworksession.html#close">closing</a> of network sessions a developer can start and stop the systems network interfaces. If the configuration represents multiple access points (see <a href="qnetworkconfiguration.html#Type-enum">QNetworkConfiguration::ServiceNetwork</a>) more advanced features such as roaming may be supported.</p>
<p>QNetworkSession supports session management within the same process and depending on the platform's capabilities may support out-of-process sessions. If the same network configuration is used by multiple open sessions the underlying network interface is only terminated once the last session has been closed.</p>
<a name="roaming"></a>
<h3>Roaming</h3>
<p>Applications may connect to the <a href="qnetworksession.html#preferredConfigurationChanged">preferredConfigurationChanged</a>() signal in order to receive notifications when a more suitable access point becomes available. In response to this signal the application must either initiate the roaming via <a href="qnetworksession.html#migrate">migrate</a>() or <a href="qnetworksession.html#ignore">ignore</a>() the new access point. Once the session has roamed the <a href="qnetworksession.html#newConfigurationActivated">newConfigurationActivated</a>() signal is emitted. The application may now test the carrier and must either <a href="qnetworksession.html#accept">accept</a>() or <a href="qnetworksession.html#reject">reject</a>() it. The session will return to the previous access point if the roaming was rejected. The subsequent state diagram depicts the required state transitions.</p>
<p class="centerAlign"><img src="images/roaming-states.png" alt="" /></p><p>Some platforms may distinguish forced roaming and application level roaming (ALR). ALR implies that the application controls (via <a href="qnetworksession.html#migrate">migrate</a>(), <a href="qnetworksession.html#ignore">ignore</a>(), <a href="qnetworksession.html#accept">accept</a>() and <a href="qnetworksession.html#reject">reject</a>()) whether a network session can roam from one access point to the next. Such control is useful if the application maintains stateful socket connections and wants to control the transition from one interface to the next. Forced roaming implies that the system automatically roams to the next network without consulting the application. This has the advantage that the application can make use of roaming features without actually being aware of it. It is expected that the application detects that the underlying socket is broken and automatically reconnects via the new network link.</p>
<p>If the platform supports both modes of roaming, an application indicates its preference by connecting to the <a href="qnetworksession.html#preferredConfigurationChanged">preferredConfigurationChanged</a>() signal. Connecting to this signal means that the application wants to take control over the roaming behavior and therefore implies application level roaming. If the client does not connect to the <a href="qnetworksession.html#preferredConfigurationChanged">preferredConfigurationChanged</a>(), forced roaming is used. If forced roaming is not supported the network session will not roam by default.</p>
<p>Some applications may want to suppress any form of roaming altogether. Possible use cases may be high priority downloads or remote services which cannot handle a roaming enabled client. Clients can suppress roaming by connecting to the <a href="qnetworksession.html#preferredConfigurationChanged">preferredConfigurationChanged</a>() signal and answer each signal emission with <a href="qnetworksession.html#ignore">ignore</a>().</p>
</div>
<p><b>See also </b><a href="qnetworkconfiguration.html">QNetworkConfiguration</a> and <a href="qnetworkconfigurationmanager.html">QNetworkConfigurationManager</a>.</p>
<!-- @@@QNetworkSession -->
<div class="types">
<h2>Member Type Documentation</h2>
<!-- $$$SessionError$$$UnknownSessionError$$$SessionAbortedError$$$RoamingError$$$OperationNotSupportedError$$$InvalidConfigurationError -->
<h3 class="fn"><a name="SessionError-enum"></a>enum QNetworkSession::<span class="name">SessionError</span></h3>
<p>This enum describes the session errors that can occur.</p>
<table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><tt>QNetworkSession::UnknownSessionError</tt></td><td class="topAlign"><tt>0</tt></td><td class="topAlign">An unidentified error occurred.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::SessionAbortedError</tt></td><td class="topAlign"><tt>1</tt></td><td class="topAlign">The session was aborted by the user or system.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::RoamingError</tt></td><td class="topAlign"><tt>2</tt></td><td class="topAlign">The session cannot roam to a new configuration.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::OperationNotSupportedError</tt></td><td class="topAlign"><tt>3</tt></td><td class="topAlign">The operation is not supported for current configuration.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::InvalidConfigurationError</tt></td><td class="topAlign"><tt>4</tt></td><td class="topAlign">The operation cannot currently be performed for the current configuration.</td></tr>
</table>
<!-- @@@SessionError -->
<!-- $$$State$$$Invalid$$$NotAvailable$$$Connecting$$$Connected$$$Closing$$$Disconnected$$$Roaming -->
<h3 class="fn"><a name="State-enum"></a>enum QNetworkSession::<span class="name">State</span></h3>
<p>This enum describes the connectivity state of the session. If the session is based on a single access point configuration the state of the session is the same as the state of the associated network interface.</p>
<table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Invalid</tt></td><td class="topAlign"><tt>0</tt></td><td class="topAlign">The session is invalid due to an invalid configuration. This may happen due to a removed access point or a configuration that was invalid to begin with.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::NotAvailable</tt></td><td class="topAlign"><tt>1</tt></td><td class="topAlign">The session is based on a defined but not yet discovered <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> (see <a href="qnetworkconfiguration.html#StateFlag-enum">QNetworkConfiguration::StateFlag</a>).</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Connecting</tt></td><td class="topAlign"><tt>2</tt></td><td class="topAlign">The network session is being established.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Connected</tt></td><td class="topAlign"><tt>3</tt></td><td class="topAlign">The network session is connected. If the current process wishes to use this session it has to register its interest by calling <a href="qnetworksession.html#open">open</a>(). A network session is considered to be ready for socket operations if it <a href="qnetworksession.html#isOpen">isOpen</a>() and connected.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Closing</tt></td><td class="topAlign"><tt>4</tt></td><td class="topAlign">The network session is in the process of being shut down.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Disconnected</tt></td><td class="topAlign"><tt>5</tt></td><td class="topAlign">The network session is not connected. The associated <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> has the state <a href="qnetworkconfiguration.html#StateFlag-enum">QNetworkConfiguration::Discovered</a>.</td></tr>
<tr><td class="topAlign"><tt>QNetworkSession::Roaming</tt></td><td class="topAlign"><tt>6</tt></td><td class="topAlign">The network session is roaming from one access point to another access point.</td></tr>
</table>
<!-- @@@State -->
</div>
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$QNetworkSession[overload1]$$$QNetworkSessionconstQNetworkConfiguration&QObject* -->
<h3 class="fn"><a name="QNetworkSession"></a>QNetworkSession::<span class="name">QNetworkSession</span> ( const <span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span> &amp; <i>connectionConfig</i>, <span class="type"><a href="qobject.html">QObject</a></span> * <i>parent</i> = 0 )</h3>
<p>Constructs a session based on <i>connectionConfig</i> with the given <i>parent</i>.</p>
<p><b>See also </b><a href="qnetworkconfiguration.html">QNetworkConfiguration</a>.</p>
<!-- @@@QNetworkSession -->
<!-- $$$~QNetworkSession[overload1]$$$~QNetworkSession -->
<h3 class="fn"><a name="dtor.QNetworkSession"></a>QNetworkSession::<span class="name">~QNetworkSession</span> ()<tt> [virtual]</tt></h3>
<p>Frees the resources associated with the <a href="qnetworksession.html">QNetworkSession</a> object.</p>
<!-- @@@~QNetworkSession -->
<!-- $$$accept[overload1]$$$accept -->
<h3 class="fn"><a name="accept"></a><span class="type">void</span> QNetworkSession::<span class="name">accept</span> ()<tt> [slot]</tt></h3>
<p>Instructs the session to permanently accept the new access point. Once this function has been called the session may not return to the old access point.</p>
<p>The old access point may be closed in the process if there are no other network sessions for it. Therefore any open socket that still uses the old access point may become unusable and should be closed before completing the migration.</p>
<!-- @@@accept -->
<!-- $$$activeTime[overload1]$$$activeTime -->
<h3 class="fn"><a name="activeTime"></a><span class="type"><a href="qtglobal.html#quint64-typedef">quint64</a></span> QNetworkSession::<span class="name">activeTime</span> () const</h3>
<p>Returns the number of seconds that the session has been active.</p>
<!-- @@@activeTime -->
<!-- $$$bytesReceived[overload1]$$$bytesReceived -->
<h3 class="fn"><a name="bytesReceived"></a><span class="type"><a href="qtglobal.html#quint64-typedef">quint64</a></span> QNetworkSession::<span class="name">bytesReceived</span> () const</h3>
<p>Returns the amount of data received in bytes; otherwise 0.</p>
<p>This field value includes the usage across all open network sessions which use the same network interface.</p>
<p>If the session is based on a service network configuration the number of sent bytes across all active member configurations are returned.</p>
<p>This function may not always be supported on all platforms and returns 0. The platform capability can be detected via <a href="qnetworkconfigurationmanager.html#Capability-enum">QNetworkConfigurationManager::DataStatistics</a>.</p>
<p><b>Note:</b> On some platforms this function may run the main event loop.</p>
<!-- @@@bytesReceived -->
<!-- $$$bytesWritten[overload1]$$$bytesWritten -->
<h3 class="fn"><a name="bytesWritten"></a><span class="type"><a href="qtglobal.html#quint64-typedef">quint64</a></span> QNetworkSession::<span class="name">bytesWritten</span> () const</h3>
<p>Returns the amount of data sent in bytes; otherwise 0.</p>
<p>This field value includes the usage across all open network sessions which use the same network interface.</p>
<p>If the session is based on a service network configuration the number of sent bytes across all active member configurations are returned.</p>
<p>This function may not always be supported on all platforms and returns 0. The platform capability can be detected via <a href="qnetworkconfigurationmanager.html#Capability-enum">QNetworkConfigurationManager::DataStatistics</a>.</p>
<p><b>Note:</b> On some platforms this function may run the main event loop.</p>
<!-- @@@bytesWritten -->
<!-- $$$close[overload1]$$$close -->
<h3 class="fn"><a name="close"></a><span class="type">void</span> QNetworkSession::<span class="name">close</span> ()<tt> [slot]</tt></h3>
<p>Decreases the session counter on the associated network configuration. If the session counter reaches zero the active network interface is shut down. This also means that <a href="qnetworksession.html#state">state</a>() will only change from <a href="qnetworksession.html#State-enum">Connected</a> to <a href="qnetworksession.html#State-enum">Disconnected</a> if the current session was the last open session.</p>
<p>If the platform does not support out-of-process sessions calling this function does not stop the interface. In this case <a href="qnetworksession.html#stop">stop</a>() has to be used to force a shut down. The platform capabilities can be detected via <a href="qnetworkconfigurationmanager.html#capabilities">QNetworkConfigurationManager::capabilities</a>().</p>
<p>Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired by connecting to the <a href="qnetworksession.html#stateChanged">stateChanged</a>(), <a href="qnetworksession.html#opened">opened</a>() or <a href="qnetworksession.html#error">error</a>() signals.</p>
<p><b>See also </b><a href="qnetworksession.html#open">open</a>(), <a href="qnetworksession.html#stop">stop</a>(), and <a href="qnetworksession.html#isOpen">isOpen</a>().</p>
<!-- @@@close -->
<!-- $$$closed[overload1]$$$closed -->
<h3 class="fn"><a name="closed"></a><span class="type">void</span> QNetworkSession::<span class="name">closed</span> ()<tt> [signal]</tt></h3>
<p>This signal is emitted when the network session has been closed.</p>
<!-- @@@closed -->
<!-- $$$configuration[overload1]$$$configuration -->
<h3 class="fn"><a name="configuration"></a><span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span> QNetworkSession::<span class="name">configuration</span> () const</h3>
<p>Returns the <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> that this network session object is based on.</p>
<p><b>See also </b><a href="qnetworkconfiguration.html">QNetworkConfiguration</a>.</p>
<!-- @@@configuration -->
<!-- $$$error[overload1]$$$error -->
<h3 class="fn"><a name="error"></a><span class="type"><a href="qnetworksession.html#SessionError-enum">SessionError</a></span> QNetworkSession::<span class="name">error</span> () const</h3>
<p>Returns the type of error that last occurred.</p>
<p><b>See also </b><a href="qnetworksession.html#state">state</a>() and <a href="qnetworksession.html#errorString">errorString</a>().</p>
<!-- @@@error -->
<!-- $$$error$$$errorQNetworkSession::SessionError -->
<h3 class="fn"><a name="error-2"></a><span class="type">void</span> QNetworkSession::<span class="name">error</span> ( <span class="type"><a href="qnetworksession.html#SessionError-enum">QNetworkSession::SessionError</a></span> <i>error</i> )<tt> [signal]</tt></h3>
<p>This signal is emitted after an error occurred. The <i>error</i> parameter describes the error that occurred.</p>
<p><b>See also </b><a href="qnetworksession.html#error">error</a>() and <a href="qnetworksession.html#errorString">errorString</a>().</p>
<!-- @@@error -->
<!-- $$$errorString[overload1]$$$errorString -->
<h3 class="fn"><a name="errorString"></a><span class="type"><a href="qstring.html">QString</a></span> QNetworkSession::<span class="name">errorString</span> () const</h3>
<p>Returns a human-readable description of the last device error that occurred.</p>
<p><b>See also </b><a href="qnetworksession.html#error">error</a>().</p>
<!-- @@@errorString -->
<!-- $$$ignore[overload1]$$$ignore -->
<h3 class="fn"><a name="ignore"></a><span class="type">void</span> QNetworkSession::<span class="name">ignore</span> ()<tt> [slot]</tt></h3>
<p>This function indicates that the application does not wish to roam the session.</p>
<p><b>See also </b><a href="qnetworksession.html#migrate">migrate</a>().</p>
<!-- @@@ignore -->
<!-- $$$interface[overload1]$$$interface -->
<h3 class="fn"><a name="interface"></a><span class="type"><a href="qnetworkinterface.html">QNetworkInterface</a></span> QNetworkSession::<span class="name">interface</span> () const</h3>
<p>Returns the network interface that is used by this session.</p>
<p>This function only returns a valid <a href="qnetworkinterface.html">QNetworkInterface</a> when this session is <a href="qnetworksession.html#State-enum">Connected</a>.</p>
<p>The returned interface may change as a result of a roaming process.</p>
<p>Note: this function does not work in Symbian emulator due to the way the connectivity is emulated on Windows.</p>
<p><b>See also </b><a href="qnetworksession.html#state">state</a>().</p>
<!-- @@@interface -->
<!-- $$$isOpen[overload1]$$$isOpen -->
<h3 class="fn"><a name="isOpen"></a><span class="type">bool</span> QNetworkSession::<span class="name">isOpen</span> () const</h3>
<p>Returns true if this session is open. If the number of all open sessions is greater than zero the underlying network interface will remain connected/up.</p>
<p>The session can be controlled via <a href="qnetworksession.html#open">open</a>() and <a href="qnetworksession.html#close">close</a>().</p>
<!-- @@@isOpen -->
<!-- $$$migrate[overload1]$$$migrate -->
<h3 class="fn"><a name="migrate"></a><span class="type">void</span> QNetworkSession::<span class="name">migrate</span> ()<tt> [slot]</tt></h3>
<p>Instructs the session to roam to the new access point. The old access point remains active until the application calls <a href="qnetworksession.html#accept">accept</a>().</p>
<p>The <a href="qnetworksession.html#newConfigurationActivated">newConfigurationActivated</a>() signal is emitted once roaming has been completed.</p>
<p><b>See also </b><a href="qnetworksession.html#accept">accept</a>().</p>
<!-- @@@migrate -->
<!-- $$$newConfigurationActivated[overload1]$$$newConfigurationActivated -->
<h3 class="fn"><a name="newConfigurationActivated"></a><span class="type">void</span> QNetworkSession::<span class="name">newConfigurationActivated</span> ()<tt> [signal]</tt></h3>
<p>This signal is emitted once the session has roamed to the new access point. The application may reopen its socket and test the suitability of the new network link. Subsequently it must either <a href="qnetworksession.html#accept">accept</a>() or <a href="qnetworksession.html#reject">reject</a>() the new access point.</p>
<p><b>See also </b><a href="qnetworksession.html#accept">accept</a>() and <a href="qnetworksession.html#reject">reject</a>().</p>
<!-- @@@newConfigurationActivated -->
<!-- $$$open[overload1]$$$open -->
<h3 class="fn"><a name="open"></a><span class="type">void</span> QNetworkSession::<span class="name">open</span> ()<tt> [slot]</tt></h3>
<p>Creates an open session which increases the session counter on the underlying network interface. The system will not terminate a network interface until the session reference counter reaches zero. Therefore an open session allows an application to register its use of the interface.</p>
<p>As a result of calling open() the interface will be started if it is not connected/up yet. Some platforms may not provide support for out-of-process sessions. On such platforms the session counter ignores any sessions held by another process. The platform capabilities can be detected via <a href="qnetworkconfigurationmanager.html#capabilities">QNetworkConfigurationManager::capabilities</a>().</p>
<p>Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired by connecting to the <a href="qnetworksession.html#stateChanged">stateChanged</a>(), <a href="qnetworksession.html#opened">opened</a>() or <a href="qnetworksession.html#error">error</a>() signals.</p>
<p>It is not a requirement to open a session in order to monitor the underlying network interface.</p>
<p><b>See also </b><a href="qnetworksession.html#close">close</a>(), <a href="qnetworksession.html#stop">stop</a>(), and <a href="qnetworksession.html#isOpen">isOpen</a>().</p>
<!-- @@@open -->
<!-- $$$opened[overload1]$$$opened -->
<h3 class="fn"><a name="opened"></a><span class="type">void</span> QNetworkSession::<span class="name">opened</span> ()<tt> [signal]</tt></h3>
<p>This signal is emitted when the network session has been opened.</p>
<p>The underlying network interface will not be shut down as long as the session remains open. Note that this feature is dependent on <a href="qnetworkconfigurationmanager.html#Capability-enum">system wide session support</a>.</p>
<!-- @@@opened -->
<!-- $$$preferredConfigurationChanged[overload1]$$$preferredConfigurationChangedconstQNetworkConfiguration&bool -->
<h3 class="fn"><a name="preferredConfigurationChanged"></a><span class="type">void</span> QNetworkSession::<span class="name">preferredConfigurationChanged</span> ( const <span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span> &amp; <i>config</i>, <span class="type">bool</span> <i>isSeamless</i> )<tt> [signal]</tt></h3>
<p>This signal is emitted when the preferred configuration/access point for the session changes. Only sessions which are based on service network configurations may emit this signal. <i>config</i> can be used to determine access point specific details such as proxy settings and <i>isSeamless</i> indicates whether roaming will break the sessions IP address.</p>
<p>As a consequence to this signal the application must either start the roaming process by calling <a href="qnetworksession.html#migrate">migrate</a>() or choose to <a href="qnetworksession.html#ignore">ignore</a>() the new access point.</p>
<p>If the roaming process is non-seamless the IP address will change which means that a socket becomes invalid. However seamless mobility can ensure that the local IP address does not change. This is achieved by using a virtual IP address which is bound to the actual link address. During the roaming process the virtual address is attached to the new link address.</p>
<p>Some platforms may support the concept of Forced Roaming and Application Level Roaming (ALR). Forced roaming implies that the platform may simply roam to a new configuration without consulting applications. It is up to the application to detect the link layer loss and reestablish its sockets. In contrast ALR provides the opportunity to prevent the system from roaming. If this session is based on a configuration that supports roaming the application can choose whether it wants to be consulted (ALR use case) by connecting to this signal. For as long as this signal connection remains the session remains registered as a roaming stakeholder; otherwise roaming will be enforced by the platform.</p>
<p><b>See also </b><a href="qnetworksession.html#migrate">migrate</a>(), <a href="qnetworksession.html#ignore">ignore</a>(), and <a href="qnetworkconfiguration.html#isRoamingAvailable">QNetworkConfiguration::isRoamingAvailable</a>().</p>
<!-- @@@preferredConfigurationChanged -->
<!-- $$$reject[overload1]$$$reject -->
<h3 class="fn"><a name="reject"></a><span class="type">void</span> QNetworkSession::<span class="name">reject</span> ()<tt> [slot]</tt></h3>
<p>The new access point is not suitable for the application. By calling this function the session returns to the previous access point/configuration. This action may invalidate any socket that has been created via the not desired access point.</p>
<p><b>See also </b><a href="qnetworksession.html#accept">accept</a>().</p>
<!-- @@@reject -->
<!-- $$$sessionProperty[overload1]$$$sessionPropertyconstQString& -->
<h3 class="fn"><a name="sessionProperty"></a><span class="type"><a href="qvariant.html">QVariant</a></span> QNetworkSession::<span class="name">sessionProperty</span> ( const <span class="type"><a href="qstring.html">QString</a></span> &amp; <i>key</i> ) const</h3>
<p>Returns the value for property <i>key</i>.</p>
<p>A network session can have properties attached which may describe the session in more details. This function can be used to gain access to those properties.</p>
<p>The following property keys are guaranteed to be specified on all platforms:</p>
<table class="generic">
<thead><tr class="qt-style"><th >Key</th><th >Description</th></tr></thead>
<tr valign="top" class="odd"><td >ActiveConfiguration</td><td >If the session <a href="qnetworksession.html#isOpen">isOpen</a>() this property returns the identifier of the <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> that is used by this session; otherwise an empty string.<p>The main purpose of this key is to determine which Internet access point is used if the session is based on a <a href="qnetworkconfiguration.html#Type-enum">ServiceNetwork</a>. The following code snippet highlights the difference:</p>
<pre class="cpp"> <span class="type"><a href="qnetworkconfigurationmanager.html">QNetworkConfigurationManager</a></span> mgr;
 <span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span> ap <span class="operator">=</span> mgr<span class="operator">.</span>defaultConfiguration();
 <span class="type"><a href="qnetworksession.html">QNetworkSession</a></span> <span class="operator">*</span>session <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qnetworksession.html">QNetworkSession</a></span>(ap);
 <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span> <span class="comment">//code activates session</span>

 <span class="type"><a href="qstring.html">QString</a></span> ident <span class="operator">=</span> session<span class="operator">-</span><span class="operator">&gt;</span>sessionProperty(<span class="string">&quot;ActiveConfiguration&quot;</span>)<span class="operator">.</span>toString();
 <span class="keyword">if</span> ( ap<span class="operator">.</span>type() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span><span class="operator">::</span>ServiceNetwork ) {
     Q_ASSERT( ap<span class="operator">.</span>identifier() <span class="operator">!</span><span class="operator">=</span> ident );
     Q_ASSERT( ap<span class="operator">.</span>children()<span class="operator">.</span>contains( mgr<span class="operator">.</span>configurationFromIdentifier(ident) ) );
 } <span class="keyword">else</span> <span class="keyword">if</span> ( ap<span class="operator">.</span>type() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qnetworkconfiguration.html">QNetworkConfiguration</a></span><span class="operator">::</span>InternetAccessPoint ) {
     Q_ASSERT( ap<span class="operator">.</span>identifier() <span class="operator">=</span><span class="operator">=</span> ident );
 }</pre>
</td></tr>
<tr valign="top" class="even"><td >UserChoiceConfiguration</td><td >If the session <a href="qnetworksession.html#isOpen">isOpen</a>() and is bound to a <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> of type UserChoice, this property returns the identifier of the <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> that the configuration resolved to when <a href="qnetworksession.html#open">open</a>() was called; otherwise an empty string.<p>The purpose of this key is to determine the real <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> that the session is using. This key is different from <i>ActiveConfiguration</i> in that this key may return an identifier for either a <a href="qnetworkconfiguration.html#Type-enum">service network</a> or a <a href="qnetworkconfiguration.html#Type-enum">Internet access points</a> configurations, whereas <i>ActiveConfiguration</i> always returns identifiers to <a href="qnetworkconfiguration.html#Type-enum">Internet access points</a> configurations.</p>
</td></tr>
<tr valign="top" class="odd"><td >ConnectInBackground</td><td >Setting this property to <i>true</i> before calling <a href="qnetworksession.html#open">open</a>() 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.</td></tr>
<tr valign="top" class="even"><td >AutoCloseSessionTimeout</td><td >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.<p>The purpose of this property is to minimize resource use on platforms that use polling to update the state of the session. Applications can set the value of this property to the desired timeout before the session is closed. In response to the <a href="qnetworksession.html#closed">closed</a>() signal the network session should be deleted to ensure that all polling is stopped. The session can then be recreated once it is required again. This property has no effect for sessions that do not require polling.</p>
</td></tr>
</table>
<p><b>See also </b><a href="qnetworksession.html#setSessionProperty">setSessionProperty</a>().</p>
<!-- @@@sessionProperty -->
<!-- $$$setSessionProperty[overload1]$$$setSessionPropertyconstQString&constQVariant& -->
<h3 class="fn"><a name="setSessionProperty"></a><span class="type">void</span> QNetworkSession::<span class="name">setSessionProperty</span> ( const <span class="type"><a href="qstring.html">QString</a></span> &amp; <i>key</i>, const <span class="type"><a href="qvariant.html">QVariant</a></span> &amp; <i>value</i> )</h3>
<p>Sets the property <i>value</i> on the session. The property is identified using <i>key</i>. Removing an already set property can be achieved by passing an invalid <a href="qvariant.html">QVariant</a>.</p>
<p>Note that the <i>UserChoiceConfiguration</i> and <i>ActiveConfiguration</i> properties are read only and cannot be changed using this method.</p>
<p><b>See also </b><a href="qnetworksession.html#sessionProperty">sessionProperty</a>().</p>
<!-- @@@setSessionProperty -->
<!-- $$$state[overload1]$$$state -->
<h3 class="fn"><a name="state"></a><span class="type"><a href="qnetworksession.html#State-enum">State</a></span> QNetworkSession::<span class="name">state</span> () const</h3>
<p>Returns the state of the session.</p>
<p>If the session is based on a single access point configuration the state of the session is the same as the state of the associated network interface. Therefore a network session object can be used to monitor network interfaces.</p>
<p>A <a href="qnetworkconfiguration.html#Type-enum">QNetworkConfiguration::ServiceNetwork</a> based session summarizes the state of all its children and therefore returns the <a href="qnetworksession.html#State-enum">Connected</a> state if at least one of the service network's <a href="qnetworkconfiguration.html#children">children()</a> configurations is active.</p>
<p>Note that it is not required to hold an open session in order to obtain the network interface state. A connected but closed session may be used to monitor network interfaces whereas an open and connected session object may prevent the network interface from being shut down.</p>
<p><b>See also </b><a href="qnetworksession.html#error">error</a>() and <a href="qnetworksession.html#stateChanged">stateChanged</a>().</p>
<!-- @@@state -->
<!-- $$$stateChanged[overload1]$$$stateChangedQNetworkSession::State -->
<h3 class="fn"><a name="stateChanged"></a><span class="type">void</span> QNetworkSession::<span class="name">stateChanged</span> ( <span class="type"><a href="qnetworksession.html#State-enum">QNetworkSession::State</a></span> <i>state</i> )<tt> [signal]</tt></h3>
<p>This signal is emitted whenever the state of the network session changes. The <i>state</i> parameter is the new state.</p>
<p><b>See also </b><a href="qnetworksession.html#state">state</a>().</p>
<!-- @@@stateChanged -->
<!-- $$$stop[overload1]$$$stop -->
<h3 class="fn"><a name="stop"></a><span class="type">void</span> QNetworkSession::<span class="name">stop</span> ()<tt> [slot]</tt></h3>
<p>Invalidates all open sessions against the network interface and therefore stops the underlying network interface. This function always changes the session's <a href="qnetworksession.html#state">state</a>() flag to <a href="qnetworksession.html#State-enum">Disconnected</a>.</p>
<p>On Symbian platform, a 'NetworkControl' capability is required for full interface-level stop (without the capability, only the current session is stopped).</p>
<p><b>See also </b><a href="qnetworksession.html#open">open</a>() and <a href="qnetworksession.html#close">close</a>().</p>
<!-- @@@stop -->
<!-- $$$waitForOpened[overload1]$$$waitForOpenedint -->
<h3 class="fn"><a name="waitForOpened"></a><span class="type">bool</span> QNetworkSession::<span class="name">waitForOpened</span> ( <span class="type">int</span> <i>msecs</i> = 30000 )</h3>
<p>Waits until the session has been opened, up to <i>msecs</i> milliseconds. If the session has been opened, this function returns true; otherwise it returns false. In the case where it returns false, you can call <a href="qnetworksession.html#error">error</a>() to determine the cause of the error.</p>
<p>The following example waits up to one second for the session to be opened:</p>
<pre class="cpp"> session<span class="operator">-</span><span class="operator">&gt;</span><a href="qnetworksession.html#open">open</a>();
 <span class="keyword">if</span> (session<span class="operator">-</span><span class="operator">&gt;</span>waitForOpened(<span class="number">1000</span>))
     <a href="qtglobal.html#qDebug">qDebug</a>(<span class="string">&quot;Open!&quot;</span>);</pre>
<p>If <i>msecs</i> is -1, this function will not time out.</p>
<p><b>See also </b><a href="qnetworksession.html#open">open</a>() and <a href="qnetworksession.html#error">error</a>().</p>
<!-- @@@waitForOpened -->
</div>
      </div>
    </div>
    </div> 
    <div class="ft">
      <span></span>
    </div>
  </div> 
  <div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2015 The Qt Company Ltd.
      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>
      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. <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>