<?xml version="1.0" encoding="utf-8"?>	
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>Qt Wiki</title>
    <link>http://qt-project.org/wiki</link>
    <description>Qt Wiki</description>
    <dc:language>en</dc:language>
    <dc:creator>devnet@qt-project.org</dc:creator>
    <dc:rights>Copyright 2013 Qt Project</dc:rights>
    <dc:date>2013-05-19T06:54:26+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>clang bugs at wip clang branch</title>
      <link>http://qt&#45;project.org/wiki/clang&#45;bugs&#45;at&#45;wip&#45;clang&#45;branch</link>
      <guid>http://qt&#45;project.org/wiki/clang&#45;bugs&#45;at&#45;wip&#45;clang&#45;branch</guid>
      <description><![CDATA[<a name="611114a3a55940e855fb96b973f897fc"></a>	<h2>See also</h2>

	<ul>
		<li>ClangCodeModel plugin has class CXPrettyPrinter that prints clang-c types in <span class="caps">JSON</span>-like format. Use it to debug and feel free to improve this class.</li>
		<li><a href="http://qt-project.org/wiki/clang-hacking-notes-for-wip-clang-branch">Clang hacking notes</a></li>
	</ul>

	<a name="8f16d0cab7bc2fb8d61246e315284c5c"></a>	<h2>Clang bugs with known workarounds</h2>

	<ul>
		<li>Sometimes diagnostic message have one empty SourceRange, which breaks SourceLocation-based euristic. Example:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;vector&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; std<span class="sy0">::</span><span class="me2">vector</span><span class="sy0">&lt;&gt;</span> a<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div><br />
CXPrettyPrinter reports:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">CXDiagnostic<span class="sy0">:</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'error: too few template arguments for class template '</span>vector<span class="st0">''</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; severity<span class="sy0">:</span> Error</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; location<span class="sy0">:</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; file<span class="sy0">:</span> <span class="st0">'/home/sergey/Документы/wip-clang/test_projects/objc_test/main.cpp'</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; line<span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; column<span class="sy0">:</span> <span class="nu0">10</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; category<span class="sy0">:</span> <span class="st0">'Semantic Issue'</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; ranges<span class="sy0">:</span> <span class="br0">&#91;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file<span class="sy0">:</span> <span class="st0">''</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; from<span class="sy0">:</span> <span class="br0">&#123;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#125;</span><span class="sy0">,</span>to<span class="sy0">:</span> <span class="br0">&#123;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; children<span class="sy0">:</span> <span class="br0">&#91;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">'note: template is declared here'</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; severity<span class="sy0">:</span> Note</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; location<span class="sy0">:</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file<span class="sy0">:</span> <span class="st0">'/usr/include/c++/4.6/bits/stl_vector.h'</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line<span class="sy0">:</span> <span class="nu0">180</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; column<span class="sy0">:</span> <span class="nu0">11</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; category<span class="sy0">:</span> <span class="st0">'Semantic Issue'</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ranges<span class="sy0">:</span> <span class="br0">&#91;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file<span class="sy0">:</span> <span class="st0">'/usr/include/c++/4.6/bits/stl_vector.h'</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; from<span class="sy0">:</span> <span class="br0">&#123;</span><span class="nu0">179</span><span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#125;</span><span class="sy0">,</span>to<span class="sy0">:</span> <span class="br0">&#123;</span><span class="nu0">179</span><span class="sy0">,</span> <span class="nu0">65</span><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></li>
	</ul>

	<a name="d1d0e961075b7a2fffb4961828fc9279"></a>	<h2>Clang bugs</h2>

	<p>Links to reported bugs will be attached in future</p>

	<ul>
		<li>inside lambda, clang doesn&#8217;t include mutable (non-const) methods of current class even if &#8216;this&#8217; was captured by lambda<br />
Bug: <a href="http://llvm.org/bugs/show_bug.cgi?id=15085">http://llvm.org/bugs/show_bug.cgi?id=15085</a><br />
See example, completion requested in point marked with &#8216;#&#8217; sign</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw4">void</span> UnitConsumer<span class="sy0">::</span><span class="me2">visitChildren</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; visitChildren<span class="br0">&#40;</span>cursor<span class="sy0">,</span> <span class="br0">&#91;</span><span class="kw1">this</span><span class="br0">&#93;</span><span class="br0">&#40;</span><span class="kw4">const</span> CXCursor <span class="sy0">&amp;</span>cursor<span class="sy0">,</span> <span class="kw4">const</span> CXCursor <span class="sy0">&amp;</span> <span class="coMULTI">/*parent*/</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>cursor.<span class="me1">kind</span> <span class="sy0">==</span> CXCursor_FieldDecl<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></p>

	<ul>
		<li>Clang does not add virtual functions to proposals list<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> Base</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">public</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">virtual</span> <span class="kw4">void</span> overrideMe<span class="br0">&#40;</span><span class="kw4">int</span> a<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">class</span> Derived <span class="sy0">:</span> <span class="kw2">public</span> Base</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">public</span><span class="sy0">:</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw4">void</span> <span class="co2">#</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>no way to differ method definition and call with qualifier: completion strings and contexts are the same in both cases: <a href="http://llvm.org/bugs/show_bug.cgi?id=15745">http://llvm.org/bugs/show_bug.cgi?id=15745</a><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> Foo</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">public</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">void</span> declarable<span class="br0">&#40;</span><span class="kw4">int</span> a<span class="sy0">,</span> <span class="kw4">float</span> b<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> Foo<span class="sy0">::</span><span class="me2">declarable</span><span class="br0">&#40;</span><span class="kw4">int</span> a<span class="sy0">,</span> <span class="kw4">float</span> b<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>a <span class="sy0">!=</span> <span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; Foo<span class="sy0">::</span><span class="me2">declarable</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="sy0">,</span> <span class="nu16">2.0</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></li>
	</ul>

	<p>Poor diagnostic for such code if C++11 disabled<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">enum</span> <span class="kw2">class</span> EnumScoped</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<ul>
		<li>clang does not add classes to completion proposals when completing &#8216;foreach&#8217;</li>
	</ul>

	<ul>
		<li>when declaring variable, variable itself proposed with highest priority. It&#8217;s error.</li>
	</ul>

	<ul>
		<li>Macro completions not added after class keyword<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> CLANG_EXPORT CodeCompletionResult</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Wrong completions inside function-try-block in constructor: <a href="http://llvm.org/bugs/show_bug.cgi?id=15660">http://llvm.org/bugs/show_bug.cgi?id=15660</a><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> Class</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">int</span> a<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">int</span> <span class="sy0">*</span>c<span class="sy0">;</span></div></li>
<li class="li2"><div class="de2"><span class="kw2">public</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; Class<span class="br0">&#40;</span><span class="kw4">int</span> b<span class="br0">&#41;</span> <span class="kw2">try</span> <span class="sy0">:</span> a<span class="br0">&#40;</span>b<span class="br0">&#41;</span><span class="sy0">,</span> c<span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw4">int</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">catch</span> <span class="br0">&#40;</span>...<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// no &quot;delete&quot; proposed</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Completion with nested names lookup not performed for comparison with enum value<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>lexer.<span class="me1">tokenKind</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> Token<span class="sy0">::</span><span class="me2">LeftBrace</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Value types completions added where thay shouldn&#8217;t be<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QStringList.html"><span class="kw5">QStringList</span></a> createClangOptions<span class="br0">&#40;</span>CPlusPlus<span class="sy0">::</span><span class="me2">ProjectFile</span><span class="sy0">::</span><span class="me2">Kind</span> language<span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CPlusPlus<span class="sy0">::</span><span class="me2">ProjectPart</span><span class="sy0">::</span><span class="me2">CXXExtensions</span> extensions<span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CPlusPlus<span class="sy0">::</span><span class="me2">ProjectPart</span><span class="sy0">::,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CPlusPlus<span class="sy0">::</span><span class="me2">ProjectPart</span><span class="sy0">::</span><span class="me2">QtVersion</span> qtVersion<span class="sy0">,</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">const</span> <a href="http://qt-project.org/doc/QList.html"><span class="kw5">QList</span></a><span class="sy0">&lt;</span><a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a><span class="sy0">&gt;</span> <span class="sy0">&amp;</span>defines<span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">const</span> <a href="http://qt-project.org/doc/QStringList.html"><span class="kw5">QStringList</span></a> <span class="sy0">&amp;</span>includePaths<span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">const</span> <a href="http://qt-project.org/doc/QStringList.html"><span class="kw5">QStringList</span></a> <span class="sy0">&amp;</span>frameworkPaths<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>C++11 &#8216;override&#8217; pseudo-keyword breaks clang_annotateTokens()<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw4">bool</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span> override<span class="sy0">;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Poor completion context recognition in template params<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">std<span class="sy0">::</span><span class="me2">vector</span><span class="sy0">&lt;</span><span class="co2">#&gt; myVector;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Clang doesn&#8217;t add Informative completion chunk to macro. It better to add macro definition text to informative.<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#define MACRO std::min(left, right)</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co1">// Completion proposal &quot;MACRO&quot; doesn't have chunk of kind Informative with text &quot;std::min(left, right)&quot;</span></div></li>
</ol></div></li>
	</ul>

	<ul>
		<li>Macro trick used in <span class="caps">GLEW</span> library not handled by completion: <a href="http://llvm.org/bugs/show_bug.cgi?id=15631">http://llvm.org/bugs/show_bug.cgi?id=15631</a></li>
	</ul>

	<ul>
		<li>Completion results for function with optional arguments does not have default argument value: <a href="http://llvm.org/bugs/show_bug.cgi?id=14477">http://llvm.org/bugs/show_bug.cgi?id=14477</a></li>
	</ul>]]></description>
      <dc:subject>clang bugs at wip clang branch</dc:subject>
      <dc:date>2013-05-19T06:54:26+00:00</dc:date>
    </item>

    <item>
      <title>Qt_Localization</title>
      <link>http://qt&#45;project.org/wiki/Qt_Localization</link>
      <guid>http://qt&#45;project.org/wiki/Qt_Localization</guid>
      <description><![CDATA[<p>See <a href="http://qt-project.org/wiki/Qt-Localization">Qt Localization</a></p>]]></description>
      <dc:subject>Qt_Localization</dc:subject>
      <dc:date>2013-05-19T03:10:54+00:00</dc:date>
    </item>

    <item>
      <title>Qt Essentials Modules</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;Essentials&#45;Modules</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;Essentials&#45;Modules</guid>
      <description><![CDATA[<a name="f45a97bdf4d9393f779bfc8e511ffbc9"></a>	<h1>Qt Essentials Modules</h1>

	<p>The Qt Essentials modules are mandatory in all platforms. This list is now part of the official Qt documentation. See the <a href="http://qt-project.org/doc/qt-5.0/qtdoc/modules.html">All Modules</a> <em>[qt-project.org]</em> page for the list of released  Qt Essentials modules.</p>

 You can find the maintainers of each module <a href="http://wiki.qt-project.org/Maintainers">here</a> <em>[wiki.qt-project.org]</em>.

	<p>See also <a href="http://qt-project.org/wiki/Qt-Add-ons-Modules">Qt Add ons Modules</a>.</p>]]></description>
      <dc:subject>Qt Essentials Modules</dc:subject>
      <dc:date>2013-05-19T02:21:59+00:00</dc:date>
    </item>

    <item>
      <title>Qt for Tizen Roadmap</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;for&#45;Tizen&#45;Roadmap</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;for&#45;Tizen&#45;Roadmap</guid>
      <description><![CDATA[<a name="7883bbb69c1fc31b0bddf2288b336e91"></a>	<h1><a href="http://qt-project.org/wiki/Tizen">Qt for Tizen</a>: Roadmap</h1>

	<p>Introduction:
	<ul>
		<li><strong>Qt 5 for Tizen</strong> releases contain:
	<ul>
		<li>repository qtbase-tizen</li>
	</ul></li>
		<li><strong>Qt Tizen Integration</strong> releases will contain:
	<ul>
		<li>repository tizenbuildtools</li>
		<li>repository qtquickcontrols-tizen</li>
		<li>repository qtsensors-tizen</li>
		<li>repository qtcreator-tizen</li>
		<li>repository qtwebkit-tizen</li>
	</ul></li>
	</ul></p>

	<ul>
		<li>The focus is for Tizen smartphone profile.</li>
	</ul>

	<ul>
		<li>May 20, 2013
	<ul>
		<li>Qt 5.1 Beta for Tizen
	<ul>
		<li>Done: Qt 5.1 Alpha working in Tizen 2.1 Emulator</li>
	</ul></li>
		<li>Qt Tizen Integration 0.1 Alpha
	<ul>
		<li>Done: major Qt Quick Controls for Tizen</li>
		<li>Done: support for Tizen 2.1 Emulator</li>
	</ul></li>
	</ul></li>
	</ul>

	<ul>
		<li>June ??, 2013
	<ul>
		<li>Qt 5.1 ??? for Tizen
	<ul>
		<li>Planned: Preliminary support for RD-PQ developer device with Tizen 2.1</li>
		<li>Planned: bug fixes</li>
	</ul></li>
		<li>Qt Tizen Integration 0.1 Beta
	<ul>
		<li>Planned: Preliminary support for RD-PQ developer device with Tizen 2.1</li>
		<li>Planned: more Qt Quick Controls for Tizen</li>
		<li>Planned: Support for screen rotation when device orientation changes (emulator and RD-PQ device)</li>
		<li>Planned: Support for sensors (emulator and RD-PQ device)</li>
		<li>Planned: Qt Creator integration: Tizen Kit, installation</li>
		<li>Planned: bug fixes</li>
	</ul></li>
	</ul></li>
	</ul>

	<ul>
		<li>??, 2013
	<ul>
		<li>Qt 5.1 RC for Tizen
	<ul>
		<li>Planned: bug fixes</li>
	</ul></li>
		<li>Qt Tizen Integration 0.1 RC
	<ul>
		<li>Planned: bug fixes</li>
	</ul></li>
	</ul></li>
	</ul>

	<ul>
		<li>??, 2013
	<ul>
		<li>Qt 5.1 for Tizen
	<ul>
		<li>Planned: bug fixes</li>
	</ul></li>
		<li>Qt Tizen Integration 0.1
	<ul>
		<li>Planned: bug fixes</li>
	</ul></li>
	</ul></li>
	</ul>]]></description>
      <dc:subject>Qt for Tizen Roadmap</dc:subject>
      <dc:date>2013-05-18T21:44:06+00:00</dc:date>
    </item>

    <item>
      <title>Tizen</title>
      <link>http://qt&#45;project.org/wiki/Tizen</link>
      <guid>http://qt&#45;project.org/wiki/Tizen</guid>
      <description><![CDATA[<a name="e573db51c37ecd1ff7cdadb479a107a3"></a>	<h1>Qt for Tizen</h1>

<table class="infotable line"><tr style="background:yellow;"><td><strong>Contributors welcome!</strong> Just <a href="http://lists.qt-project.org/mailman/listinfo/development">subscribe to development@qt-project.org mailing list</a> <em>[lists.qt-project.org]</em> and request to join by email.</td></tr></table>

	<p><div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#e573db51c37ecd1ff7cdadb479a107a3">Qt for Tizen</a><ul>
<li><a href="#453aceb005ceaf54a47da15fee8b2a26">Pages</a></li>
<li><a href="#ddcf50c29294d4414f3f7c1bbc892cb5">Resources</a></li>
<li><a href="#f20388fa811e6891bf921753d5747c1a">External links</a></li></ul>
</li></ul>
</div><strong>Qt for Tizen</strong> is a purely community-driven port of Qt 5 to the <a href="http://en.wikipedia.org/wiki/Tizen">Tizen</a> <em>[en.wikipedia.org]</em> mobile profile. <a href="https://wiki.tizen.org/wiki/IVI">Tizen <span class="caps">IVI</span></a> <em>[wiki.tizen.org]</em> profile as well as unofficial Netbook/Notebook profiles would benefit too.</p>

	<a name="453aceb005ceaf54a47da15fee8b2a26"></a>	<h2>Pages</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Qt-for-Tizen-Introduction">Introduction</a> | <a href="http://qt-project.org/wiki/Qt-for-Tizen-Roadmap">Roadmap</a></li>
		<li>Development: <a href="http://qt-project.org/wiki/Qt-Creator-for-Tizen-Analysis">Qt Creator for Tizen Analysis</a> | <a href="http://qt-project.org/wiki/Qt-Quick-Controls-for-Tizen">Qt Quick Controls for Tizen</a></li>
		<li>Build: <a href="http://qt-project.org/wiki/Build-Qt-5-for-Tizen-Emulator">Qt 5 for Tizen Emulator</a></li>
		<li>Related: <a href="http://qt-project.org/wiki/Build_Qt_for_Tizen_Developer_Device">Build Qt 4.8.1 for Tizen 1.0 Larkspur on Ref.Device 210</a></li>
	</ul>

	<a name="ddcf50c29294d4414f3f7c1bbc892cb5"></a>	<h2>Resources</h2>

	<ul>
		<li>Source code:
	<ul>
		<li><a href="https://gitorious.org/tizenbuildtools">Tizen build tools repository</a> <em>[gitorious.org]</em></li>
		<li><a href="https://gitorious.org/qt-quick-controls-for-tizen">Qt Quick Controls for Tizen repository</a> <em>[gitorious.org]</em></li>
	</ul></li>
		<li><a href="http://qtfortizen.blogspot.com">Blog</a> <em>[qtfortizen.blogspot.com]</em>, <a href="https://twitter.com/QtForTizen">Twitter</a> <em>[twitter.com]</em>, <a href="https://www.facebook.com/QtForTizen">Facebook</a> <em>[facebook.com]</em></li>
		<li><a href="https://plus.google.com/u/0/communities/114736286462304330281">Google+</a> <em>[plus.google.com]</em>, <a href="http://www.youtube.com/user/qtfortizen">Videos</a> <em>[youtube.com]</em></li>
		<li>Ticket (bugs, features) system: <span class="caps">TODO</span></li>
		<li>Development mailing list: development@qt-project.org (<a href="http://lists.qt-project.org/mailman/listinfo/development">subscribe</a> <em>[lists.qt-project.org]</em>)</li>
		<li>Users mailing list: interest@qt-project.org (<a href="http://lists.qt-project.org/mailman/listinfo/interest">subscribe</a> <em>[lists.qt-project.org]</em>)</li>
		<li><span class="caps">IRC</span>: #qt-tizen @ irc.freenode.org
	<ul>
		<li>You can also connect via <a href="http://webchat.freenode.net/?randomnick=1&amp;channels=qt-tizen&amp;prompt=1">web browser</a> <em>[webchat.freenode.net]</em></li>
		<li>For a full list of <span class="caps">IRC</span> channels of interest to Qt developers, see <a href="http://qt-project.org/wiki/OnlineCommunities">OnlineCommunities</a>.</li>
	</ul></li>
	</ul>

	<a name="f20388fa811e6891bf921753d5747c1a"></a>	<h2>External links</h2>

	<ul>
		<li><a href="https://www.tizen.org">https://www.tizen.org</a></li>
		<li><a href="http://en.wikipedia.org/wiki/Tizen">http://en.wikipedia.org/wiki/Tizen</a> &#8211; introduction with history</li>
	</ul>

	<p><img onload='imgFitOnLoad(this)'  src="https://si0.twimg.com/profile_images/3637640695/05853a802a45c80ed25f1109e9f72bc0_bigger.png" alt="" /></p>

	<p><em>Tizen is a Linux Foundation Project. Tizen is a registered trademark of The Linux Foundation.  Other names and brands may be claimed as the property of others.</em></p>]]></description>
      <dc:subject>Tizen</dc:subject>
      <dc:date>2013-05-18T18:16:59+00:00</dc:date>
    </item>

    <item>
      <title>Berlins_Carnival_of_Cultures</title>
      <link>http://qt&#45;project.org/wiki/Berlins_Carnival_of_Cultures</link>
      <guid>http://qt&#45;project.org/wiki/Berlins_Carnival_of_Cultures</guid>
      <description><![CDATA[<p>&lt;p&gt;       </p>

	<p>It was back in 1996 that Berlin held its first Karneval der Kulturen (Carnival of Cultures). Inspired by London’s and Rio de Janeiro’s famous annual parties, the festival took place over the Whitsun weekend and has been bringing the city’s streets to life in a four-day blaze of colour and music every year since.</p>

	<p>These days, more than a million residents and visitors celebrate the free street festival and parade, which features around 5,000 professional and amateur performers of all ages and ethnicities, as well as bands and DJs.</p>

	<p>Taking place from 17 to 20 May in the Kreuzberg neighbourhood’s Blücherplatz, the festival consists of four stages, each featuring music from a different part of the world. Head to Latinauta for samba, salsa, Caribbean beats and Latin rock; Bazaár features neo-genres like turkpop and dönerrock; Eurasia covers everything from Balkan to Indian ragas (melodic forms); and Farafina is Afro-focused with bands from Ghana and Senegal. About 400 stands around the square will sell edible treats and handmade art.</p>

	<p>The festival peaks on Whitsunday (19 May) with a street parade, which features colourful dance groups from Korea and Japan, trucks blaring music from Brazil and Angola, plus Irish folk, Jamaican dancehall, Caribbean soca and more. The parade starts at Hermannplatz at noon (get there around 11 am to grab a decent spot) and snakes 4km towards Yorkstraße where it ends in the late afternoon.</p>

	<p>Of course for many, this is when the real fun begins. As dusk descends on the city, the techno sound systems are wheeled out and the whole district parties on until the early hours.</p>

	<p><span class="caps">SOURCE</span>:  <span class="caps">BBC</span></p>

 Thanks for your reading. This is Source site. &lt;a href=&#8216;<a href="http://www.bbc.com/travel/blog/20130514-berlins-carnival-of-cultures&#8217;&gt;">http://www.bbc.com/travel/blog/20130514-berlins-carnival-of-cultures&#8217;&gt;</a><span class="caps">BBC</span>&lt;/a&gt;&lt;/p&gt;]]></description>
      <dc:subject>Berlins_Carnival_of_Cultures</dc:subject>
      <dc:date>2013-05-18T02:03:11+00:00</dc:date>
    </item>

    <item>
      <title>Download_Data_from_URL</title>
      <link>http://qt&#45;project.org/wiki/Download_Data_from_URL</link>
      <guid>http://qt&#45;project.org/wiki/Download_Data_from_URL</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#4b87f52e522745c4d539910eed4a0ec2">Download Data from URL</a><ul>
<li><a href="#08e5afaf5d71adeb46b228704a3693ae">Important Classes</a></li>
<li><a href="#112e29ed04b69fc9781daa5dd052594d">.pro File</a></li>
<li><a href="#7a5086ff1bcdc4d5a924b4b99d9a53aa">filedownloader.h</a></li>
<li><a href="#b05df94917d5b0855c6815f702564418">filedownloader.cpp</a></li></ul>
</li>
<li><a href="#c64518704ce0c0d5501a45763f464276">Usage</a><ul>
<li><a href="#21da3901379df11f534b38328bf67e83">Load Pixmap from URL</a></li></ul>
</li></ul>
</div>

	<p><strong>English</strong> <a href="http://qt-project.org/wiki/Download_Data_from_URL_Bulgarian">Български</a> <a href="http://qt-project.org/wiki/Download_Data_from_URL_Korean">한국어</a><a href="http://qt-project.org/wiki/Download_Data_from_URL_Persian">فارسی</a> </p>

	<a name="4b87f52e522745c4d539910eed4a0ec2"></a>	<h1>Download Data from <span class="caps">URL</span></h1>

	<p>The following code snippet demonstrates how to download data as <a href="http://qt-project.org/doc/qt-5.0/qtcore/qbytearray.html">QByteArray</a> <em>[qt-project.org]</em> from <span class="caps">URL</span>. The downloaded data can be saved as a file or converted to appropriate object. For example if an image is downloaded it can be converted to <a href="http://qt-project.org/doc/qt-5.0/qtgui/qpixmap.html">QPixmap</a> <em>[qt-project.org]</em> or <a href="http://qt-project.org/doc/qt-5.0/qtgui/qimage.html">QImage</a> <em>[qt-project.org]</em> using method <a href="http://qt-project.org/doc/qt-5.0/qtgui/qimage.html#loadFromData-2">loadFromData()</a> <em>[qt-project.org]</em></p>

	<p>Please note that although the name of the class is FileDownloader the downloaded data is not saved on the disk as file!</p>

	<a name="08e5afaf5d71adeb46b228704a3693ae"></a>	<h2>Important Classes</h2>

	<ul>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtnetwork/qnetworkaccessmanager.html">QNetworkAccessManager</a> <em>[qt-project.org]</em></li>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtnetwork/qnetworkrequest.html">QNetworkRequest</a> <em>[qt-project.org]</em></li>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtnetwork/qnetworkreply.html">QNetworkReply</a> <em>[qt-project.org]</em></li>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtcore/qurl.html">QUrl</a> <em>[qt-project.org]</em></li>
	</ul>

	<a name="112e29ed04b69fc9781daa5dd052594d"></a>	<h2>.pro File</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> network</div></li>
</ol></div></p>

	<p>If you are targeting Symbian devices remember to add the capability for network services.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">symbian<span class="sy0">:</span>TARGET.<span class="me1">CAPABILITY</span> <span class="sy0">+=</span> NetworkServices</div></li>
</ol></div></p>

	<a name="7a5086ff1bcdc4d5a924b4b99d9a53aa"></a>	<h2>filedownloader.h</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#ifndef FILEDOWNLOADER_H</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#define FILEDOWNLOADER_H</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QObject&gt;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">#include &lt;QByteArray&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QNetworkAccessManager&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QNetworkRequest&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QNetworkReply&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="kw2">class</span> FileDownloader <span class="sy0">:</span> <span class="kw2">public</span> <a href="http://qt-project.org/doc/QObject.html"><span class="kw5">QObject</span></a></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">Q_OBJECT</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">public</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">explicit</span> FileDownloader<span class="br0">&#40;</span><a href="http://qt-project.org/doc/QUrl.html"><span class="kw5">QUrl</span></a> imageUrl<span class="sy0">,</span> <a href="http://qt-project.org/doc/QObject.html"><span class="kw5">QObject</span></a> <span class="sy0">*</span>parent <span class="sy0">=</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">virtual</span> ~FileDownloader<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a> downloadedData<span class="br0">&#40;</span><span class="br0">&#41;</span> const<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="kw2">signals</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">void</span> downloaded<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">private</span> <span class="kw2">slots</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw4">void</span> fileDownloaded<span class="br0">&#40;</span><a href="http://qt-project.org/doc/QNetworkReply.html"><span class="kw5">QNetworkReply</span></a><span class="sy0">*</span> pReply<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">private</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QNetworkAccessManager.html"><span class="kw5">QNetworkAccessManager</span></a> m_WebCtrl<span class="sy0">;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a> m_DownloadedData<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="co2">#endif // FILEDOWNLOADER_H</span></div></li>
</ol></div></p>

	<a name="b05df94917d5b0855c6815f702564418"></a>	<h2>filedownloader.cpp</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &quot;filedownloader.h&quot;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">FileDownloader<span class="sy0">::</span><span class="me2">FileDownloader</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QUrl.html"><span class="kw5">QUrl</span></a> imageUrl<span class="sy0">,</span> <a href="http://qt-project.org/doc/QObject.html"><span class="kw5">QObject</span></a> <span class="sy0">*</span>parent<span class="br0">&#41;</span> <span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QObject.html"><span class="kw5">QObject</span></a><span class="br0">&#40;</span>parent<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">connect</span><span class="br0">&#40;</span><span class="sy0">&amp;</span>m_WebCtrl<span class="sy0">,</span> SIGNAL<span class="br0">&#40;</span>finished<span class="br0">&#40;</span><a href="http://qt-project.org/doc/QNetworkReply.html"><span class="kw5">QNetworkReply</span></a><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SLOT<span class="br0">&#40;</span>fileDownloaded<span class="br0">&#40;</span><a href="http://qt-project.org/doc/QNetworkReply.html"><span class="kw5">QNetworkReply</span></a><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QNetworkRequest.html"><span class="kw5">QNetworkRequest</span></a> request<span class="br0">&#40;</span>imageUrl<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; m_WebCtrl.<span class="me1">get</span><span class="br0">&#40;</span>request<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">FileDownloader<span class="sy0">::</span><span class="me2">~FileDownloader</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> FileDownloader<span class="sy0">::</span><span class="me2">fileDownloaded</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QNetworkReply.html"><span class="kw5">QNetworkReply</span></a><span class="sy0">*</span> pReply<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; m_DownloadedData <span class="sy0">=</span> pReply<span class="sy0">-&gt;</span><span class="me3">readAll</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//emit a signal</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; pReply<span class="sy0">-&gt;</span><span class="me3">deleteLater</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; emit downloaded<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a> FileDownloader<span class="sy0">::</span><span class="me2">downloadedData</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> m_DownloadedData<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></p>

	<a name="c64518704ce0c0d5501a45763f464276"></a>	<h1>Usage</h1>

	<a name="21da3901379df11f534b38328bf67e83"></a>	<h2>Load Pixmap from <span class="caps">URL</span></h2>

	<ul>
		<li>Declare slot</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw2">private</span> <span class="kw2">slots</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">void</span> loadImage<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<ul>
		<li>Connect signal <strong>downloaded()</strong> to the slot</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QUrl.html"><span class="kw5">QUrl</span></a> imageUrl<span class="br0">&#40;</span><span class="st0">&quot;http://qt.nokia.com/logo.png&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">m_pImgCtrl <span class="sy0">=</span> <span class="kw1">new</span> FileDownloader<span class="br0">&#40;</span>imageUrl<span class="sy0">,</span> <span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">connect</span><span class="br0">&#40;</span>m_pImgCtrl<span class="sy0">,</span> SIGNAL<span class="br0">&#40;</span>downloaded<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">,</span> SLOT<span class="br0">&#40;</span>loadImage<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<ul>
		<li>Load QPixmap from the downloaded data</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="kw4">void</span> MainWindow<span class="sy0">::</span><span class="me2">loadImage</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QPixmap.html"><span class="kw5">QPixmap</span></a> buttonImage<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; buttonImage.<span class="me1">loadFromData</span><span class="br0">&#40;</span>m_pImgCtrl<span class="sy0">-&gt;</span><span class="me3">downloadedData</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
</ol></div></p>]]></description>
      <dc:subject>Download_Data_from_URL</dc:subject>
      <dc:date>2013-05-18T01:27:35+00:00</dc:date>
    </item>

    <item>
      <title>Qt 5 on Windows ANGLE and OpenGL</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;5&#45;on&#45;Windows&#45;ANGLE&#45;and&#45;OpenGL</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;5&#45;on&#45;Windows&#45;ANGLE&#45;and&#45;OpenGL</guid>
      <description><![CDATA[<p><em>This article is a draft. Its content as well as recommendations may change rapidly.</em></p>

	<p><span class="caps">TODO</span>: WebKit? Qt Multimedia?</p>

	<a name="687716a6b69c525766c14e170f4ad2ed"></a>	<h3>tl;dr;</h3>

	<p>Qt 5 on Windows can be configured to use either OpenGL drivers, or DirectX drivers through the <span class="caps">ANGLE</span> library. What you want depends on your use case. The Qt project offers binary installers for both variants. </p>

	<a name="760716b590ee7c0adc25f434f577d8be"></a>	<h3>OpenGL</h3>

	<p>OpenGL (Open Graphics Library) is a wide spread industry <a href="http://www.opengl.org/">standard</a> <em>[opengl.org]</em> for rendering 2D and 3D computer graphics. It&#8217;s the de-facto standard for hardware-accelerated graphics operations on Mac OS X, Linux, and most embedded platforms.</p>

	<p>OpenGL ES 2.0 (Open Graphics Library for Embedded Systems) is a stripped-down version of OpenGL for use on embedded systems, which is missing some functions.</p>

	<p>The Qt Quick 2 stack in Qt 5 is based on OpenGL, and requires OpenGL 3.0 (alternatively OpenGL 2.x with the framebuffer_object extension) or higher or OpenGL ES 2.0. The <a href="http://qt-project.org/doc/qt-5.0/qtopengl/qtopengl-index.html">Qt OpenGL module</a> <em>[qt-project.org]</em> requires OpenGL 1.3 or later.</p>

	<a name="6b1c2c9900a3f5dfbb57cc6dbac6bfe5"></a>	<h3>OpenGL on Windows</h3>

	<p>Although Microsoft Windows has native support for OpenGL since quite some time, the supported standard version (version 1 without any drivers installed) is too limited for Qt . Newer versions are generally available through custom graphics drivers, but require users to install them. Also, the quality of the OpenGL support by some drivers is lacking.</p>

	<a name="d0f3e8e239f6f6f68b27e0c9bbbb02e6"></a>	<h3><span class="caps">ANGLE</span> Project</h3>

	<p><span class="caps">ANGLE</span> (Almost Native Graphics Layer Engine) is an <a href="http://code.google.com/p/angleproject/">open source project</a> <em>[code.google.com]</em> by Google. Its aim is to map OpenGL ES 2.0 <span class="caps">API</span> calls to DirectX 9 <span class="caps">API</span>. A regularly updated version of it is <a href="https://qt.gitorious.org/qt/qtbase/trees/stable/src/3rdparty/angle">part of qtbase</a> <em>[qt.gitorious.org]</em>  .</p>

	<p>To compile Qt with <span class="caps">ANGLE</span> you have to have a  <a href="http://msdn.microsoft.com/en-us/directx/default.aspx">Direct X <span class="caps">SDK</span></a> <em>[msdn.microsoft.com]</em> installed. Starting from Windows Kit 8, this is included in the Windows <span class="caps">SDK</span>. </p>

	<p>If <span class="caps">ANGLE</span> is used in your application, you should ship d3dcompiler_XX.dll along with the Qt libraries. The version string of the D3D shader compiler is pulled from the DirectX <span class="caps">SDK</span> header, so make sure to get the same version that <span class="caps">ANGLE</span> was built with (e.g. _43 or _46). This becomes especially important if you configure Qt with -angle-d3d11.</p>

	<a name="5259ae4afb5996ff48788b2fa720114c"></a>	<h3>Recommendations</h3>

	<ul>
		<li>Use Desktop OpenGL if
	<ul>
		<li>Your application uses OpenGL calls not part of OpenGL ES 2.0</li>
		<li>Your application does not use OpenGL at all (since <span class="caps">ANGLE</span> implies additional deployment dependencies which are then not needed).</li>
		<li>Your application needs to run on Windows XP. Although it is tempting to use <span class="caps">ANGLE</span> as a replacement for missing graphics drivers on this platform, it does not fully work and may lead to crashes, for example, when the security dialog is opened.</li>
	</ul></li>
	</ul>

	<ul>
		<li>Use <span class="caps">ANGLE</span> if
	<ul>
		<li>You only need OpenGL ES features</li>
		<li>You have a heterogeneous user base with different Windows versions &amp; graphics cards</li>
		<li>You do not want your user to have to install a recent graphics card driver</li>
	</ul></li>
	</ul>

	<a name="4dc66bc568b2cb9bcd58e7a2d13c424a"></a>	<h3>Further Reading</h3>

	<p><a href="http://qt-project.org/doc/qt-5.0/qtdoc/requirements-win.html">http://qt-project.org/doc/qt-5.0/qtdoc/requirements-win.html</a><br />
<a href="http://qt-project.org/doc/qt-5.0/qtopengl/qtopengl-index.html">http://qt-project.org/doc/qt-5.0/qtopengl/qtopengl-index.html</a><br />
<a href="http://blog.qt.digia.com/blog/2012/10/24/graphics-on-windows-from-a-different-angle/">http://blog.qt.digia.com/blog/2012/10/24/graphics-on-windows-from-a-different-angle/</a><br />
<a href="http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx">http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx</a></p>]]></description>
      <dc:subject>Qt 5 on Windows ANGLE and OpenGL</dc:subject>
      <dc:date>2013-05-17T11:53:35+00:00</dc:date>
    </item>

    <item>
      <title>LinuxTag 2013</title>
      <link>http://qt&#45;project.org/wiki/LinuxTag&#45;2013</link>
      <guid>http://qt&#45;project.org/wiki/LinuxTag&#45;2013</guid>
      <description><![CDATA[<a name="0c4af28bf16b5d3a611fc3f0ce0daf88"></a>	<h1>LinuxTag 2013</h1>

	<p><strong>Where?</strong> Messe Berlin (Berlin Fairground)<br />
<strong>When?</strong> 22-25.05.2013</p>

	<a name="4e653f6d72f24b97fb8f67d25a03c909"></a>	<h2>The Plan</h2>

	<ul>
		<li>no plan</li>
	</ul>

	<a name="0115211ddc7a63aa5e95a1231460a315"></a>	<h2>Booth</h2>

	<p>We will have a table inside the <span class="caps">KDE</span> project booth in Hall 7.1c at booth 150.</p>

	<p><strong>Location:</strong> <a href="http://www.openstreetmap.org/?lat=52.50243&amp;lon=13.27418&amp;zoom=16&amp;mlat=52.50243&amp;mlon=13.27418"><span class="caps">OSM</span></a> <em>[openstreetmap.org]</em>, <a href="http://here.com/52.5031412,13.2773628,16,0,0,hybrid.day">Nokia</a> <em>[here.com]</em></p>

	<a name="0e843c4c6a0fb8f4dc56db6aec069abd"></a>	<h2>Wanted!!</h2>

	<ul>
		<li><strong>Showcases:</strong> If you have an interesting show case that you want to show, please add it to the showcases section.</li>
		<li><strong>Booth staffers:</strong> If you want to man the booth, please enter your name in the below schedule table. We should have at least two people there at all times.</li>
		<li><strong>Lightning talks:</strong> This is <strong>your</strong> chance to present an interesting topic to the audience on the booth. If you want to give a lightning talk (5-10 minutes), please add yourself. We will scatter the talks throughout the entire time. You can give time preferences. We might even record the talks. Suggested topics:
	<ul>
		<li>New features in Qt 5.1</li>
		<li>Playground projects</li>
		<li>Qt tools (Creator, etc.)</li>
		<li>Community</li>
	</ul></li>
	</ul>

	<a name="522082bbe794026117389f3a80a4adb4"></a>	<h2>Talks</h2>

	<ul>
		<li>none</li>
	</ul>

	<a name="a9513e6e5650556a93e514dab9657fb9"></a>	<h2>Booth staff</h2>

	<a name="c9e3a47209d8b71429080ef109af8d95"></a>	<h3>Available persons</h3>

	<ul>
		<li>Niels Weber</li>
		<li>Oswald Buddenhagen</li>
		<li>Tobias Hunger</li>
		<li>Aurindam Jana</li>
		<li>Robert Löhning</li>
	</ul>

	<a name="1aed67ae853c531f677593f7911a3936"></a>	<h3>Booth duty</h3>

<table class="infotable line"><tr><td> <strong>Time</strong> </td><td> <strong>Wednesday, 22.05</strong> </td><td> <strong>Thursday, 23.05</strong> </td><td> <strong>Friday, 24.05</strong> </td><td> <strong>Saturday, 25.05</strong> </td></tr><tr><td>  <strong>9-12</strong> </td><td> Niels, Tobias </td><td> Niels </td><td> Robert </td><td>  </td></tr><tr><td> <strong>12-15</strong></td><td>  Niels, Auri </td><td> Niels, Tobias </td><td> Robert </td><td> Auri </td></tr><tr><td> <strong>15-18</strong></td><td> Ossi, Auri </td><td> Ossi, Tobias </td><td> Ossi, Robert </td><td> Ossi, Auri </td></tr></table>

	<ul>
		<li>Delivery+Booth setup (Tue, 17h): Ossi?</li>
		<li>Setup (Wed, 8h): People who volunteer for the first shift on Wednesday should help with setup. Additional people please add your name here:</li>
		<li>Teardown (Sat, 16h): People who volunteer for the last shift on Saturday should help with the tear down. Additional people please add your names here:</li>
	</ul>

	<a name="ca112d7bb6010167a65549e221f4d7b4"></a>	<h2>Check List for booth equipment</h2>

	<p><span class="caps">NOTE</span>: this may be outdated in parts</p>

	<ul>
		<li>Two high chairs (see <a href="http://wiki.linuxtag.org/w/fp:Furniture2013">Furniture Request</a> <em>[wiki.linuxtag.org]</em>)</li>
		<li>Laptops (1)</li>
		<li>Roll ups</li>
		<li>Actual Leaflets</li>
		<li>Plasma/LCD-TV (long <span class="caps">HDMI</span> cable!)</li>
		<li>5 port switch, (Router?)</li>
		<li>Cables (1&#215;10m, 3&#215;5m, 10&#215;2m) (<span class="caps">KDE</span>?)</li>
		<li>2 Power Distributors, Power Chords (one 5m) (<span class="caps">KDE</span>?)</li>
		<li>2-3x <span class="caps">USB</span> A -&gt; Micro B cables</li>
		<li>Raspberry Pi</li>
		<li>Micro-SD Cards</li>
		<li>Monitor with SD-Card-Reader or SD-Card <span class="caps">USB</span> Adapters</li>
		<li>Duct-Tape (white, black, grey)</li>
		<li>Scissors, Knife, Screwdrivers</li>
		<li>Snacks &amp; Drinks for staffers</li>
	</ul>

	<a name="bc97e12414b8ea00107c66aa552029ae"></a>	<h2>Todo</h2>

	<ul>
		<li>Organize more show cases</li>
		<li>Organize Demo Image for R-Pi</li>
		<li>Create &amp; Print leaflets</li>
		<li>Create T-Shirts for staffers?</li>
		<li>Create &amp; sell Qt T-Shirts for visitors? Ask Claudia for past experiences.</li>
		<li>Sync with <span class="caps">KDE</span> about sharing of power cables/distributors and networking cables.</li>
	</ul>]]></description>
      <dc:subject>LinuxTag 2013</dc:subject>
      <dc:date>2013-05-17T10:55:55+00:00</dc:date>
    </item>

    <item>
      <title>Compiling ICU with MinGW</title>
      <link>http://qt&#45;project.org/wiki/Compiling&#45;ICU&#45;with&#45;MinGW</link>
      <guid>http://qt&#45;project.org/wiki/Compiling&#45;ICU&#45;with&#45;MinGW</guid>
      <description><![CDATA[<a name="2a8049cbf53b0b087f35000966648b0d"></a>	<h2>Compiling <span class="caps">ICU</span> with MinGW</h2>

	<p>Qt 5 / QtWebkit requires <span class="caps">ICU</span>, which MinGW distributions do not ship.</p>

	<a name="223f68852e1a8f509732351a605cae61"></a>	<h2>Pre-built packages</h2>

	<p>The <a href="http://site.icu-project.org/download"><span class="caps">ICU</span> Project site</a> <em>[site.icu-project.org]</em> provides pre-compiled libraries for both 32 and 64 bit. However, these depend on the Microsoft Visual C++ 2010 runtime being installed.</p>

	<a name="9c3784462ea074f6c1a314ef84a9d6ee"></a>	<h2>Compiling on your own</h2>

	<a name="5a2ebfb8baa378cfcfcba58bbb1380c2"></a>	<h3>Requirements</h3>

	<ul>
		<li><span class="caps">MSYS</span> command prompt (an sh shell + some <span class="caps">UNIX</span> tools, get it from <a href="http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/MSYS-1.0.11.exe/download?use_mirror=garr.">http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/MSYS-1.0.11.exe/download?use_mirror=garr.</a> It&#8217;s also an (optional) part of mingw.org installer.)</li>
		<li>Working MinGW, or MinGW-w64 toolchain</li>
	</ul>

	<a name="312d3257dc34e5ac4269d086dd193616"></a>	<h3>How to build</h3>

	<ul>
		<li>Download latest ICU4C source code from <a href="http://site.icu-project.org/download">http://site.icu-project.org/download</a> (e.g. icu4c-51_1-src.zip), unzip</li>
		<li>Start a <span class="caps">MSYS</span> command prompt (C:\msys\1.0\msys.bat)</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd icu<span class="sy0">/</span>source</div></li>
</ol></div></p>

	<p>Check that gcc is in <span class="caps">PATH</span>, otherwise add it, e.g.<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ export PATH<span class="sy0">=/</span>c<span class="sy0">/</span>Mingw<span class="sy0">/</span>bin<span class="sy0">:</span>$PATH</div></li>
</ol></div></p>

	<p>Run configure &amp;&amp; build:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ .<span class="sy0">/</span>runConfigureICU MinGW <span class="sy0">--</span>prefix<span class="sy0">=</span>$PWD<span class="sy0">/</span>..<span class="sy0">/</span>dist</div></li>
</ol></div></p>

	<p>Finally, run make &amp;&amp; make install<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="0c6af7f4b8a48626676c25816af70783"></a>	<h3><span class="caps">ICU</span> 4.9 patch for 64 bit</h3>

	<p>	<ul>
		<li>For <span class="caps">ICU</span> 4.9 / MinGW-w64, you might have to add a patch from trunk: Download <a href="http://www.icu-project.org/trac/changeset/31770/icu/trunk/source/tools/toolutil/pkg_genc.c?format=diff&amp;new=31770">http://www.icu-project.org/trac/changeset/31770/icu/trunk/source/tools/toolutil/pkg_genc.c?format=diff&amp;new=31770</a></li>
	</ul></li></p>

	<p>Apply  with:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ patch <span class="sy0">-</span>Np3 <span class="sy0">-</span>i ..<span class="sy0">/</span>changeset_icu_trunk_source_tools_toolutil_pkg_genc.<span class="me1">c_31770</span>.<span class="me1">diff</span></div></li>
</ol></div></p>

	<a name="94ac065c88f34ecf9e22bc842877d194"></a>	<h2>Using it</h2>

	<p>Add the include, lib folders to your compilation environment, e.g. for cmd.exe :</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\<span class="sy0">&gt;</span> set PATH<span class="sy0">=%</span>PATH<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\lib</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\<span class="sy0">&gt;</span> set INCLUDE<span class="sy0">=%</span>INCLUDE<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\include</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\<span class="sy0">&gt;</span> set LIB<span class="sy0">=%</span>LIB<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\lib</div></li>
</ol></div></p>

	<p>When you now run Qt’s configure.exe <span class="caps">ICU</span> should be detected, and Qt links against the libraries.</p>]]></description>
      <dc:subject>Compiling ICU with MinGW</dc:subject>
      <dc:date>2013-05-17T10:24:00+00:00</dc:date>
    </item>

    <item>
      <title>Compiling ICU with MSVC</title>
      <link>http://qt&#45;project.org/wiki/Compiling&#45;ICU&#45;with&#45;MSVC</link>
      <guid>http://qt&#45;project.org/wiki/Compiling&#45;ICU&#45;with&#45;MSVC</guid>
      <description><![CDATA[<a name="b634b380b831ccd4ec3cdeb859b249fc"></a>	<h2>Compiling <span class="caps">ICU</span> with <span class="caps">MSVC</span> (Microsoft Visual Studio)</h2>

	<p>Qt 5 / QtWebkit requires <span class="caps">ICU</span>. </p>

	<a name="223f68852e1a8f509732351a605cae61"></a>	<h2>Pre-built packages</h2>

	<p>The <a href="http://site.icu-project.org/download"><span class="caps">ICU</span> Project site</a> <em>[site.icu-project.org]</em> provides pre-built packages for <span class="caps">MSVC</span> 2010 , but you have to compile your own version if you&#8217;re using another Visual Studio version, or want to taylor the <span class="caps">ICU</span> configuration.</p>

	<a name="9c3784462ea074f6c1a314ef84a9d6ee"></a>	<h2>Compiling on your own</h2>

	<a name="5a2ebfb8baa378cfcfcba58bbb1380c2"></a>	<h3>Requirements</h3>

	<ul>
		<li><span class="caps">MSVC</span> toolchain</li>
		<li>Cygwin</li>
	</ul>

	<a name="312d3257dc34e5ac4269d086dd193616"></a>	<h3>How to build</h3>

	<ul>
		<li>Download latest ICU4C source code from <a href="http://site.icu-project.org/download">http://site.icu-project.org/download</a> (e.g. icu4c-51_1-src.zip), unzip</li>
	</ul>

	<ul>
		<li>Put Cygwin in <span class="caps">PATH</span>, convert line endings<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> set PATH<span class="sy0">=</span>C<span class="sy0">:</span>\cygwin\bin<span class="sy0">;%</span>PATH<span class="sy0">%</span></div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> dos2unix <span class="sy0">*</span></div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> dos2unix <span class="sy0">-</span>f configure</div></li>
</ol></div></li>
	</ul>

	<p>Check whether you have e.g. the <span class="caps">MSVC</span> compiler (cl.exe) in <span class="caps">PATH</span>. If not, set it up by calling e.g.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> <span class="st0">&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0<span class="es1">\V</span>C<span class="es1">\v</span>cvarsall.bat&quot;</span> x86</div></li>
</ol></div></p>

	<p>Run configure &amp;&amp; build:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> bash runConfigureICU Cygwin<span class="sy0">/</span>MSVC <span class="sy0">--</span>prefix<span class="sy0">=/</span>cygdrive<span class="sy0">/</span>c<span class="sy0">/</span>icu<span class="sy0">/</span>dist</div></li>
</ol></div></p>

	<p>Finally, run make &amp;&amp; make install<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="c64518704ce0c0d5501a45763f464276"></a>	<h2>Usage</h2>

	<p>Add the include, lib folders to your compilation environment, e.g. for cmd.exe :</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> set PATH<span class="sy0">=%</span>PATH<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\lib</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> set INCLUDE<span class="sy0">=%</span>INCLUDE<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\include</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\icu\source<span class="sy0">&gt;</span> set LIB<span class="sy0">=%</span>LIB<span class="sy0">%;</span>C<span class="sy0">:</span>\icu\dist\lib</div></li>
</ol></div></p>

	<p>When you now run Qt’s configure.exe <span class="caps">ICU</span> should be detected, and Qt links against the libraries.</p>]]></description>
      <dc:subject>Compiling ICU with MSVC</dc:subject>
      <dc:date>2013-05-17T10:23:30+00:00</dc:date>
    </item>

    <item>
      <title>Setting up Qt on Ubuntu in VirtualBox</title>
      <link>http://qt&#45;project.org/wiki/Setting&#45;up&#45;Qt&#45;on&#45;Ubuntu&#45;in&#45;VirtualBox</link>
      <guid>http://qt&#45;project.org/wiki/Setting&#45;up&#45;Qt&#45;on&#45;Ubuntu&#45;in&#45;VirtualBox</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#1dc6656e10ce4f4edc3c52505da0d7ea">How to setup Qt5 for Ubuntu using Virtual Box</a><ul>
<li><a href="#0b79795d3efc95b9976c7c5b933afce2">Introduction</a></li>
<li><a href="#9e69db6d28a0ec32d28e2c9e327fd40a">Versions</a></li>
<li><a href="#852efa58d3e227b71b551de2e3e5c76f">1. Setting Up VirtualBox with Ubuntu</a></li>
<li><a href="#287f40fdd226e85aac46b4b36a20c4dd">2. Installing Qt 5.0.2 on Ubuntu</a></li>
<li><a href="#1e503194ed22cf9ab150d7ae15da141c">3. RabbitVCS (a TortoiseSVN substitute for Ubuntu)</a></li>
<li><a href="#62bc32c8c8b8858e85ec1402c91dea00">4. Trouble Shooting</a></li>
<li><a href="#2e770032a63e104eab435ddec36dd8fa">5. Final Note</a></li>
<li><a href="#2031982961a45499fd2a5a25ed97ae6e">6. Related Articles</a></li></ul>
</li></ul>
</div>

	<a name="1dc6656e10ce4f4edc3c52505da0d7ea"></a>	<h1>How to setup Qt5 for Ubuntu using Virtual Box</h1>

	<a name="0b79795d3efc95b9976c7c5b933afce2"></a>	<h2>Introduction</h2>

	<p>Having struggled for a few days getting the correct sequence of events to occur to allow me to run Qt on a Ubuntu virtual machine  on my window PC I feel I should share what I have found incase others want to do the same.</p>

	<p><strong>Why would you want to even do that?</strong> &#8211; well, in my case, I can now run my Qt project on Windows and Linux very easily and very quickly test it works for both. This provides quicker multi-platform testing. You can also test multiple versions of Ubuntu (or windows) and with different compiler versions as well, you just add more virtual machines.</p>

	<p>Finally to be able to work / sync to the same code-base you can install/use <strong>rabbitVCS on Ubuntu</strong> so that it works in the same way as tortoise <span class="caps">SVN</span> in windows, and then all of your virtual machines are &#8220;talking&#8221; to the same <span class="caps">SVN</span> repo&#8230; nice <span class="smiley">:)</span></p>

	<a name="9e69db6d28a0ec32d28e2c9e327fd40a"></a>	<h2>Versions</h2>

	<p>These are the versions that I have used / tested this all with<br />
<strong>Windows:</strong> XP SP3 (as my host operating system)<br />
<strong>Ubuntu:</strong> 10.04, 12.04 and 12.10<br />
<strong>VirtualBox:</strong> v4.2.12</p>

	<a name="852efa58d3e227b71b551de2e3e5c76f"></a>	<h2>1. Setting Up VirtualBox with Ubuntu</h2>

	<p>In the purpose of this wiki I will use the example of Ubuntu 12.04 and make notes where other versions may differ.</p>

	<p>Install and setup a virtual machine for Ubuntu:</p>

	<ul>
		<li>Download and install VirtualBox latest version</li>
		<li>Run virtual box and cklick &#8220;new&#8221;</li>
		<li>Enter name and ensure &#8220;version&#8221; is Ubuntu. Go through the screens and select the following options:</li>
		<li>at least 512MB (more if you can, allow about 1/4 of your memory).</li>
		<li>Create virtual <span class="caps">HDD</span></li>
		<li><span class="caps">VDI</span></li>
		<li>Dynamic or Fixed (I chose fixed because I heard there can be issues with running out of disk space with dynamic, but I am sure dynamic is probably ok!)</li>
		<li>Allow at Enough space, the default is ok (8GB)&#8230;</li>
	</ul>

	<p>Now your Virtual Machine is created. Do the following to install Ubuntu:
	<ul>
		<li>Download Linux .iso image from <a href="http://releases.ubuntu.com/precise/">http://releases.ubuntu.com/precise/</a> (I put it on a <span class="caps">USB</span> stick)</li>
		<li>Double click your fresh virtual machine called &lt;name&gt; (whatever you called it)</li>
		<li>It will ask you to select a Startup disk. Click the browse button and select your .iso image. Now your ubuntu will boot from this image</li>
		<li>Ubuntu will run, you will have two options: &#8220;Use Ubuntu&#8221; or &#8220;Install&#8221;, click install and follow the installation process, I just used all the defaults (except for username, passwords, etc&#8230;).</li>
		<li>Once this is completed you will reboot Ubuntu. If your virtual machine does not automatically restart, close it (shutdown) and re-start it in VirtualBox.</li>
		<li>At this point your Ubuntu may boot and tell you that you are in  &#8220;low graphics mode&#8221;. Don&#8217;t panic, just press ctrl+alt+f1 (left ctrl button) to go to the command line and continue with the following steps, otherwise you are done for this part <span class="smiley">:)</span></li>
		<li>Login by entering your user name followed by your password.</li>
		<li>Once you are logged in enter: &#8220;sudo apt-get update&#8221;</li>
		<li>For &#8220;sudo&#8221; it will ask you for your password again, enter it.</li>
		<li>Enter &#8220;sudo apt-get upgrade&#8221; to perform the upgrades.</li>
		<li>Now enter &#8220;sudo reboot&#8221; to reboot, this should sort it.</li>
	</ul></p>

	<p>Once you are in to ubuntu, you may want to install further updates from the update manager&#8230; or go into a terminal and run the previous 4 steps (except for the reboot part <span class="smiley">:o</span> )</p>

	<p>Now to make your Virtual Ubuntu experience even better (otherwise you are limited to a tiny window and have no copy/paste buffer or other shared resources, etc&#8230;
	<ul>
		<li>You need to install Guest Additions in your Virtual Machine. For Ubuntu there is a handy &#8220;install guest addtions&#8221; under the devices menu when you are running Ubuntu. Click this.</li>
		<li>This copies some files to: /media/VBOXADDITIONS&#8230;.</li>
		<li>cd to this location</li>
		<li>now run the linux additions: &#8220;./VBoxLinuxAdditions.run&#8221;</li>
		<li>Once this is finished, restart your VMachine.</li>
	</ul></p>

	<a name="287f40fdd226e85aac46b4b36a20c4dd"></a>	<h2>2. Installing Qt 5.0.2 on Ubuntu</h2>

	<p><strong>Note:</strong> For the latest <span class="caps">GNU</span> compiler its probably worth getting the latest Ubuntu release (i.e. &gt;= 12.10 for gcc/g++ 4.7 or higher for the c++11 features) rather then trying to upgrade the compiler and all the links/libraries yourself! I recommend Ubuntu 12.10 for the moment which give gnu 4.7.2, but this is all your choice&#8230;
	<ul>
		<li>download the latest (or whichever version you want) Qt sdk from qt-project.org/downloads (5.0.2 was used at the time of writing)</li>
		<li>cd to the download directory and enter the following commands:</li>
		<li>sudo chmod +x qt-linux-opensource-5.0.2-x86-offline.run (where this is the file you downloaded, this makes it eXecutable)</li>
		<li>sudo ./qt-linux-opensource-5.0.2-x86-offline.run (to run it)</li>
		<li>Follow the install instructions.</li>
	</ul></p>

	<p>Now you have Qt 5.0.2, with Qt creator and all the tools to run and build your project. But since I documented RabbitVCS I may as well add that next&#8230;</p>

	<a name="1e503194ed22cf9ab150d7ae15da141c"></a>	<h2>3. RabbitVCS (a TortoiseSVN substitute for Ubuntu)</h2>

	<ul>
		<li>Enter the following in a terminal (enter password for first &#8220;sudo&#8221; command</li>
		<li>sudo add-apt-repository ppa:rabbitvcs/ppa</li>
		<li>sudo apt-get update</li>
		<li>For Ubuntu &gt;= 11.10: &#8220;sudo apt-get install rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli rabbitvcs-nautilus3&#8221;</li>
		<li>For Ubuntu &lt; 11.10: &#8220;sudo apt-get install rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli rabbitvcs-nautilus&#8221;</li>
		<li>Now log out of Ubuntu and log back in for changes to take effect.</li>
	</ul>

	<p><strong>Note:</strong> To use, right click in any folder and do <span class="caps">SVN</span> &#8212;&gt; Checkout&#8230;. the rest is pretty much the same as tortoiseSVN <span class="smiley">:)</span><br />
Or, you can use the command line <span class="smiley">:(</span></p>

	<a name="62bc32c8c8b8858e85ec1402c91dea00"></a>	<h2>4. Trouble Shooting</h2>

	<p>This is a list of issues that I faced and how they where resolved, I will add to this list if I find more&#8230;</p>

	<a name="8f1faed5d301fa403b4c501d7c4e32a3"></a>	<h3>Ubuntu 12.04 has experienced an internal error with /usr/bin/Xorg</h3>

	<p>Do the following:</p>

	<ul>
		<li>sudo service lightdm stop</li>
		<li>sudo dpkg-reconfigure xorg xserver-xorg xserver-xorg-core</li>
		<li>sudo service lightdm start</li>
	</ul>

	<a name="af05fe901a48373bbfb75f7fa2f70a2e"></a>	<h3>&#8220;/usr/bin/ld: cannot find -lgcc_s&#8221; when building your Qt project</h3>

	<p>In some later versions of Ubuntu some files seem to have moved or been renamed and we need to make a sym link to fix this (well, this is the easiest way to do it). Do this with the following line in a terminal:</p>

	<ul>
		<li>sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so</li>
	</ul>

	<a name="2e770032a63e104eab435ddec36dd8fa"></a>	<h2>5. Final Note</h2>

	<p>Feel free to comment, add-to or correct this page <span class="smiley">:)</span> &#8230; or even just laugh and say &#8220;look at this idiot there&#8221; <span class="smiley">:o</span></p>

	<a name="2031982961a45499fd2a5a25ed97ae6e"></a>	<h2>6. Related Articles</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Install_Qt_5_on_Ubuntu">Install Qt 5 on Ubuntu</a> <em>[qt-project.org]</em></li>
	</ul>]]></description>
      <dc:subject>Setting up Qt on Ubuntu in VirtualBox</dc:subject>
      <dc:date>2013-05-17T08:32:14+00:00</dc:date>
    </item>

    <item>
      <title>Scripting</title>
      <link>http://qt&#45;project.org/wiki/Scripting</link>
      <guid>http://qt&#45;project.org/wiki/Scripting</guid>
      <description><![CDATA[<p>The Scripting plugin allow developers to create re-usable scripts for Qt Creator or only for their project. Scripts can easily be called using the locator or by assigning shortcuts to them.</p>

	<ul>
		<li>Maintainer: Nicolas Arnaud-Cormos (narnaud)</li>
		<li>Developer: Jesper K. Pedersen (blackie)</li>
		<li>Repository: [<a href="https://codereview.qt-project.org/#q,status:open+project:playground/qt-creator/plugin-scripting,n,z]">https://codereview.qt-project.org/#q,status:open+project:playground/qt-creator/plugin-scripting,n,z]</a></li>
	</ul>

	<a name="10aadd60ed96e545a8de0eee4b2004db"></a>	<h2> Installation  </h2>

	<p>The plugin is currently in playground/qt-creator/plugin-scripting on qt-project. To get a copy of the sources:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone ssh<span class="sy0">:</span><span class="co1">//&lt;Gerrit/Jira username&gt;@codereview.qt-project.org:29418/playground/qt-creator/plugin-scripting.git</span></div></li>
<li class="li1"><div class="de1">or</div></li>
<li class="li1"><div class="de1">git clone https<span class="sy0">:</span><span class="co1">//codereview.qt-project.org/p/playground/qt-creator/plugin-scripting</span></div></li>
</ol></div></p>

	<p>To compile the plugin, you need to setup 2 environment variables: <code><span class="caps">QTC</span>_SOURCE</code> and <code><span class="caps">QTC</span>_BUILD</code> (source and build directory of Qt Creator).<br />
The plugin will be compiled in the local data directory of Qt Creator.</p>

	<p>You are free to contribute to this plugin, contribution follow the same workflow as Qt and Qt Creator.</p>

	<a name="63d69caed72ccaea4e821a209b88cbbd"></a>	<h2> Usage    </h2>

	<a name="efecb25ae1cef3605f5da4ae93e581dd"></a>	<h3> Global/Local scripts </h3>

	<p>The plugin supports 2 type of scripts:
	<ul>
		<li>global scripts are available in all projects, and stored in the local data for Qt Creator</li>
		<li>local scripts are only for one project, and stored in the qtc-scripts directory at the root directory of your project.</li>
	</ul></p>

	<a name="8f9cfb180c7b2b6bb078d7086b1aded4"></a>	<h3> Scripts </h3>

	<p>The scripts are stored in one of the directory, the extension is <code>.qs</code>.</p>

	<p>To do anything, you need to use the exported objects in javascript, for example:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">console.<span class="kw3">log</span><span class="br0">&#40;</span><span class="st0">&quot;Adding some text&quot;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">editors.<span class="me1">current</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">insertText</span><span class="br0">&#40;</span><span class="st0">&quot;hello World!&quot;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">console.<span class="kw3">log</span><span class="br0">&#40;</span><span class="st0">&quot;Text added&quot;</span><span class="br0">&#41;</span></div></li>
</ol></div></p>

	<a name="015ec1967b951652f46bc9c358ca5ad6"></a>	<h2> Status   </h2>

	<p>Scripting plugin itself:
	<ul>
		<li>Locator: done</li>
		<li>Shortcuts: done</li>
		<li>Global/local scripts: done</li>
		<li>Create new script wizard: todo</li>
		<li>Script completion: todo</li>
		<li>Script debugger: todo</li>
	</ul></p>

	<p>Script interfaces:
	<ul>
		<li>logging (debug, error): done</li>
		<li>current editor: done</li>
		<li>text editor support (search, replace, edit): 75%</li>
		<li>C++ editor support: in progress</li>
		<li><span class="caps">QML</span> editor support: todo</li>
		<li>project list: todo</li>
		<li>files in project list: todo</li>
		<li>actions support: todo</li>
		<li>build issues pane: todo</li>
	</ul></p>

	<ul>
		<li>refactoring: todo</li>
		<li><span class="caps">AST</span> access an manipulation: todo</li>
		<li>add/remove files to project: todo</li>
	</ul>]]></description>
      <dc:subject>Scripting</dc:subject>
      <dc:date>2013-05-17T08:18:32+00:00</dc:date>
    </item>

    <item>
      <title>Gerrit Introduction</title>
      <link>http://qt&#45;project.org/wiki/Gerrit&#45;Introduction</link>
      <guid>http://qt&#45;project.org/wiki/Gerrit&#45;Introduction</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#ae649ad03b48272cdff0b3c4114e41b2">Introduction to Gerrit</a><ul>
<li><a href="#b337a692b0d2870897211ccad92cae9a"> Overview  </a></li>
<li><a href="#392c991242b19a7bff02f4001278e5a3"> Contribution creation and uploading  </a></li>
<li><a href="#35584fc6462d3d2171b795208c180ac5"> Requesting and receiving contribution feedback </a></li></ul>
</li></ul>
</div>

	<a name="ae649ad03b48272cdff0b3c4114e41b2"></a>	<h1>Introduction to Gerrit</h1>

	<a name="b337a692b0d2870897211ccad92cae9a"></a>	<h2> Overview  </h2>

	<a name="c3b3de95afcf4a0f2e2bc9d32dd723b8"></a>	<h3> Main features  </h3>

	<p>Gerrit is a web-based tool that is used for code review. Its main features are the side-by-side difference viewing and inline commenting which makes code reviews quick and simple task. It is used together with Git version control system. Gerrit allows authorized contributors to submit changes to Git repository, after reviews are done. Contributors can get their code reviewed with a little effort, and get their changes quickly through the system.</p>

	<a name="42721b6babcad2e16155724cbcf4c2d7"></a>	<h3> Gerrit usage  </h3>

	<p>There are two purposes Gerrit usage. First, the contributor can upload changes to Gerrit, and second, approvers and peer reviewers can complete a review process with the web browser. Changes are uploaded with git push command. Any Git client can be used to access Gerrit. The review process includes the following steps:</p>

	<ul>
		<li>Review changes</li>
		<li>Publish comments</li>
		<li>Approve or abandon changes</li>
	</ul>

	<p>Gerrit can manage multiple repositories (projects). Branches are fully supported by Gerrit, each repository can have any number of branches.</p>

	<p><img onload='imgFitOnLoad(this)'  src="http://developer.qt.nokia.com/uploads/gerrit/1_2_Infra.png" alt="" /></p>

	<p>Gerrit stores changes, which are normal commits, as references in path refs/changes. When contributor pushes changes, a special reference in path refs/for/ is used. For example, when contributor uploads a commit to &#8216;stable&#8217; branch the target ref will be refs/for/stable.</p>

	<p>Git repositories that Gerrit operates on are accessed through Gerrit instead of git-daemon. Any other Git-related service can be used with Gerrit. However, it is recommended that all Git commands are run through Gerrit.</p>

	<a name="f052e6d7e865c1fbeafaeef97694289e"></a>	<h3> Terminology for Gerrit  </h3>

	<p>Common terms used in Gerrit:</p>

<table class="infotable line"><tr><th>Term </th><th>Description </th></tr><tr><td> <strong>Change</strong> </td><td> A single commit and unit of a review. Changes are reviewed and submitted to Git repository. </td></tr><tr><td> <strong>Patch Set</strong> </td><td> A version of a change. After each time a change is modified, it will receive a new patch set. </td></tr><tr><td> <strong>Score</strong> </td><td> A value for approval category. Indicates if change is approved and can be submitted to the Git repository. </td></tr><tr><td> <strong>Approval Category</strong> </td><td> Name for a scope that is checked during review process. Qt is using categories Code Review and Sanity Review. </td></tr><tr><td> <strong>Submit</strong> </td><td> An action that allows Gerrit to merge a change to Git repository. </td></tr><tr><td> <strong>Abandon</strong> </td><td> Action that archives a change. An abandoned change can be restored later. </td></tr><tr><td> <strong>Project</strong> </td><td> Git repository. </td></tr></table>

	<a name="392c991242b19a7bff02f4001278e5a3"></a>	<h2> Contribution creation and uploading  </h2>

	<a name="61c67372ec6214193273f353b268b7f5"></a>	<h3> Git and Gerrit commands </h3>

	<p>All Gerrit commands are using <span class="caps">SSH</span> protocol and the host port is 29418. A user can access Gerrit&#8217;s Git repositories with <span class="caps">SSH</span> or <span class="caps">HTTP</span> protocols. The user must have registered in Gerrit and a public <span class="caps">SSH</span> key before any command line commands can be used.<br />
Before proceeding user needs to have a <span class="caps">SSH</span> public key configured in Gerrit.</p>

	<a name="f39685807848db585ad9a6d0251419ce"></a>	<h3> Creating a new contribution </h3>

	<p>All contributions will be uploaded with regular Git command, like before. Gerrit handles reviews in commit level. A single contribution can easily result in several reviewable changes in Gerrit. User, typically a contributor, prepares a contribution by following these steps: </p>

	<ol>
		<li>Cloning from the repository</li>
		<li>Setting up a commit message hook</li>
		<li>Creating a topic branch</li>
		<li>Doing changes</li>
		<li>Updating repository</li>
		<li>Pushing changes</li>
	</ol>

	<p>See the step-by-step introductions below on how to complete a commit upload. Note that Gerrit <span class="caps">SSH</span> service is running in port 29418. There is no need to write this port number every time, just add the following lines to ~/.ssh/config file:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;Host codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;Port <span class="nu0">29418</span></div></li>
</ol></div></p>

	<a name="de2b1a9d985d2e09deb54caf7c7dde6e"></a>	<h4>Cloning from repository </h4>

	<p>The Qt Base Git repository can be cloned from Gerrit over <span class="caps">SSH</span> with the following commands:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git clone ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org/qt/qtbase.git</span></div></li>
<li class="li1"><div class="de1">Cloning into qtbase...</div></li>
<li class="li1"><div class="de1"><span class="me1">remote</span><span class="sy0">:</span> Counting objects<span class="sy0">:</span> <span class="nu0">33523</span><span class="sy0">,</span> done</div></li>
<li class="li1"><div class="de1">remote<span class="sy0">:</span> Finding sources<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">33523</span><span class="sy0">/</span><span class="nu0">33523</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">Receiving objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">33523</span><span class="sy0">/</span><span class="nu0">33523</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu16">69.45</span> MiB <span class="sy0">|</span> <span class="nu0">901</span> KiB<span class="sy0">/</span>s<span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">remote</span><span class="sy0">:</span> Total <span class="nu0">33523</span> <span class="br0">&#40;</span>delta <span class="nu0">16501</span><span class="br0">&#41;</span><span class="sy0">,</span> reused <span class="nu0">33523</span> <span class="br0">&#40;</span>delta <span class="nu0">16501</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">Resolving deltas<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">16501</span><span class="sy0">/</span><span class="nu0">16501</span><span class="br0">&#41;</span><span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1">$</div></li>
</ol></div></p>

	<p>Note that the Qt Base repository only contains a limited part of Qt, including e.g. Qt Core, Qt <span class="caps">GUI</span>, Qt Network, but not Qt Webkit, Qt Script and others. If you want to clone everything, e.g. for building Qt Creator later, use</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git clone ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org/qt/qt5.git</span></div></li>
<li class="li1"><div class="de1">$ cd qt5</div></li>
<li class="li1"><div class="de1">$ .<span class="sy0">/</span>init<span class="sy0">-</span>repository</div></li>
<li class="li1"><div class="de1">$ .<span class="sy0">/</span>configure <span class="sy0">-</span>developer<span class="sy0">-</span>build &nbsp;<span class="co2"># or your favourite setup</span></div></li>
</ol></div></p>

	<a name="3915615a8d99babbf36c1811d6fd6032"></a>	<h4>Setting up commit message hook </h4>

	<p>To add a Change-Id footer to your commit messages, download a message hook from Gerrit with the following command.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd qtbase</div></li>
<li class="li1"><div class="de1">$ scp <span class="sy0">-</span>P <span class="nu0">29418</span> <span class="sy0">&lt;</span>username<span class="sy0">&gt;</span>@codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span><span class="sy0">:</span>hooks<span class="sy0">/</span>commit<span class="sy0">-</span>msg .<span class="me1">git</span><span class="sy0">/</span>hooks</div></li>
</ol></div></p>

	<p>or (if you’re behind a firewall and want to use the https protocol):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd qtbase</div></li>
<li class="li1"><div class="de1">$ scp <span class="sy0">-</span>P <span class="nu0">443</span> <span class="sy0">&lt;</span>username<span class="sy0">&gt;</span>@codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span><span class="sy0">:</span>hooks<span class="sy0">/</span>commit<span class="sy0">-</span>msg .<span class="me1">git</span><span class="sy0">/</span>hooks</div></li>
</ol></div></p>

	<a name="05326be23817819678d1f81b6581e277"></a>	<h4>Creating a topic branch</h4>

	<p>Keep code organized in <a href="http://git-scm.com/book/en/Git-Branching-Branching-Workflows">topic branches.</a> <em>[git-scm.com]</em> This is what Git excels in. &#8220;next-big-thing&#8221;  is used as an example topic branch below:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git checkout <span class="sy0">-</span>b next<span class="sy0">-</span>big<span class="sy0">-</span>thing</div></li>
<li class="li1"><div class="de1">Switched to a <span class="kw1">new</span> branch <span class="st0">'next-big-thing'</span></div></li>
<li class="li1"><div class="de1">$</div></li>
</ol></div></p>

	<a name="e2a65ca2e68aa1790bb687e5ed585de3"></a>	<h4>Doing changes </h4>

	<p>Use your favorite editor to complete a coding task. </p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ edit src<span class="sy0">/</span>foo.<span class="me1">cc</span></div></li>
<li class="li1"><div class="de1">$</div></li>
</ol></div></p>

	<a name="6e53f5ed6db12f7e73f70215c0885f25"></a>	<h4>Updating repository </h4>

	<p>Call git add to all files that should be included in the commit that is created, and finally call git commit to create a new commit as follows:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git add src<span class="sy0">/</span>foo.<span class="me1">cc</span></div></li>
<li class="li1"><div class="de1">$ git commit</div></li>
</ol></div></p>

	<p>At this point you will enter your commit message into the editor.  The <strong>first line</strong> should be short and to the point, beginning with a verb like &#8220;Fix&#8221;, &#8220;Optimize&#8221;, &#8220;Add&#8221;, etc.  The <strong>second line</strong> must be blank.  Following that should be a longer explanation of the change, yet still kept to the point.</p>

	<p>A line in the form: &#8220;Task-number: <span class="caps">QTBUG</span>-01234&#8221; may be added to associate the commit with a bug report.</p>

	<p>Save and quit the editor.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="br0">&#91;</span>next<span class="sy0">-</span>big<span class="sy0">-</span>thing c82710a<span class="br0">&#93;</span> My Feature</div></li>
<li class="li1"><div class="de1">&nbsp;<span class="nu0">1</span> files changed<span class="sy0">,</span> <span class="nu0">1</span> insertions<span class="br0">&#40;</span><span class="sy0">+</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">0</span> deletions<span class="br0">&#40;</span><span class="sy0">-</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;create mode <span class="nu0">100644</span> src<span class="sy0">/</span>foo.<span class="me1">cc</span></div></li>
<li class="li1"><div class="de1">$</div></li>
</ol></div></p>

	<p>After the first commit has been performed, if the commit-msg hook is set up properly, then an additional line in the form of &#8220;Change-Id: &#8230;&#8221; should have been added.</p>

	<p>To revise the latest commit message use &#8220;git commit &#8212;amend&#8221;.</p>

	<a name="c1607fc8e9b65c8416033851b051f734"></a>	<h4>Pushing changes </h4>

	<p>Changes are pushed to Gerrit with Git push. Note that special target ref is used.<br />
Gerrit reports how many changes were created and provides links to these changes.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git push ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org:29418/qt/qtbase HEAD:refs/for/stable</span></div></li>
<li class="li1"><div class="de1">Counting objects<span class="sy0">:</span> <span class="nu0">6</span><span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Delta</span> compression <span class="kw2">using</span> up to <span class="nu0">2</span> threads.</div></li>
<li class="li1"><div class="de1"><span class="me1">Compressing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">3</span><span class="sy0">/</span><span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">,</span> done.</div></li>
<li class="li2"><div class="de2"><span class="me1">Writing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">407</span> bytes<span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Total</span> <span class="nu0">4</span> <span class="br0">&#40;</span>delta <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">,</span> reused <span class="nu0">0</span> <span class="br0">&#40;</span>delta <span class="nu0">0</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">remote<span class="sy0">:</span> Resolving deltas<span class="sy0">:</span> &nbsp; <span class="nu0">0</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">/</span><span class="nu0">2</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">To ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org:29418/qt/qtbase</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">*</span> <span class="br0">&#91;</span><span class="kw1">new</span> branch<span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp;HEAD <span class="sy0">-&gt;</span> <span class="me3">refs</span><span class="sy0">/</span><span class="kw1">for</span><span class="sy0">/</span>stable</div></li>
<li class="li2"><div class="de2">$</div></li>
</ol></div></p>

	<p>When pushing to Gerrit, <a href="http://git-scm.com/book/en/Git-Internals-The-Refspec">a typical refspec</a> <em>[git-scm.com]</em> uses <span class="caps">HEAD</span> as source ref and special Gerrit ref for target branch. Target ref is in format <code>refs/for/&lt;branch name&gt;</code>. Pushes to this target ref causes Gerrit to create new changes for all commits pushed in this way. To group your changes push to a <a href="http://qt-project.org/wiki/Gerrit_IntroductionTopics_in_Gerrit">topic</a> by using the format <code>refs/for/&lt;branch name&gt;/&lt;topic name&gt;</code>.<br />
Note, that it is possible to use any other ref as source ref instead of <span class="caps">HEAD</span> when necessary.</p>

	<a name="35584fc6462d3d2171b795208c180ac5"></a>	<h2> Requesting and receiving contribution feedback </h2>

	<a name="ce516dc39825c917af075695d5ad78b9"></a>	<h3> Requesting contribution feedback  </h3>

	<p>Contributor requests feedback by adding reviewers to the change. Typically this is done through web browser. Approver or another contributor who is doing peer-review can review any change without being added as a reviewer when having review access right to the project.</p>

	<p>Access the change with web browser and use &#8220;Add Reviewer&#8221; button to add any other registered user to the review like in the picture below:</p>

	<p><img onload='imgFitOnLoad(this)'  src="http://developer.qt.nokia.com/uploads/gerrit/3_1_Gerrit_Change.png" alt="" /></p>

	<p>Alternatively, reviewers can be added already when uploading a contribution. When pushing a change, reviewers can be identified using receive-pack option. See example below and refer Gerrit user&#8217;s guide for <a href="http://gerrit.googlecode.com/svn/documentation/2.1.6/user-upload.html#push_create">more detailed instructions.</a> <em>[gerrit.googlecode.com]</em> Using cc option for receive-pack sends an e-mail notification to that user. Gerrit will avoid sending duplicate emails to the same user.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git push <span class="sy0">--</span>receive<span class="sy0">-</span>pack<span class="sy0">=</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="st0">'git receive-pack --reviewer=approver@qt-project.org --cc qtcontributor@private.com'</span></div></li>
<li class="li1"><div class="de1">&nbsp; ssh<span class="sy0">:</span><span class="co1">//qtcontributor@codereview.qt-project.org/qt/qtbase HEAD:refs/for/stable</span></div></li>
<li class="li1"><div class="de1">Counting objects<span class="sy0">:</span> <span class="nu0">7</span><span class="sy0">,</span> done.</div></li>
<li class="li2"><div class="de2"><span class="me1">Delta</span> compression <span class="kw2">using</span> up to <span class="nu0">2</span> threads.</div></li>
<li class="li1"><div class="de1"><span class="me1">Compressing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">3</span><span class="sy0">/</span><span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Writing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">404</span> bytes<span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Total</span> <span class="nu0">4</span> <span class="br0">&#40;</span>delta <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">,</span> reused <span class="nu0">0</span> <span class="br0">&#40;</span>delta <span class="nu0">0</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">remote<span class="sy0">:</span> Resolving deltas<span class="sy0">:</span> &nbsp; <span class="nu0">0</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">/</span><span class="nu0">2</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">To ssh<span class="sy0">:</span><span class="co1">//qtcontributor@codereview.qt-project.org/qt/qtbase</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">*</span> <span class="br0">&#91;</span><span class="kw1">new</span> branch<span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp;HEAD <span class="sy0">-&gt;</span> <span class="me3">refs</span><span class="sy0">/</span><span class="kw1">for</span><span class="sy0">/</span>stable</div></li>
<li class="li1"><div class="de1">$</div></li>
</ol></div></p>

	<a name="125f83a8e6460b4f720de0d812c19049"></a>	<h3> Reading contribution feedback </h3>

	<p>It is easy to have an overview of contributions in My Changes page. Contributor can view feedback on his or her contributions by accessing the change page and reading comments file-by-file. It is possible to reply on comments and have discussion about the code review in-line. Each time in-line comments or a review scor</p>]]></description>
      <dc:subject>Gerrit Introduction</dc:subject>
      <dc:date>2013-05-17T01:15:28+00:00</dc:date>
    </item>

    <item>
      <title>Qt5ForAndroidBuilding</title>
      <link>http://qt&#45;project.org/wiki/Qt5ForAndroidBuilding</link>
      <guid>http://qt&#45;project.org/wiki/Qt5ForAndroidBuilding</guid>
      <description><![CDATA[<p>Note: These are build instructions for building Qt for Android on Linux or Mac OS X. For cross-compiling on Windows, this is currently <a href="http://qt-project.org/wiki/building_qt-android_on_windows">possible under cmd.exe</a>.</p>

	<p>For general information about Qt 5 for Android, please visit the <a href="http://qt-project.org/wiki/Qt5ForAndroid">wiki</a> for that.</p>

	<a name="a410f8324798770109fb3239587dea08"></a>	<h1>Building Qt 5 for Android </h1>

	<p>These are the current build instructions to get to the point where you can deploy a Qt app to an Android device using Qt Creator. </p>

	<p><strong><span class="caps">NOTE</span>:</strong> Shadow builds are currently broken.</p>

	<p>1. First of all you need an Android <span class="caps">SDK</span>. You can get the official <span class="caps">SDK</span> from Google. Make sure you install both <span class="caps">API</span> levels 10 and 11 by using the android tool in the <span class="caps">SDK</span>. Android <span class="caps">API</span> level 11 is required to build QtMultimedia.</p>

	<p>2. You also need an Android <span class="caps">NDK</span>. You can use the official <span class="caps">NDK</span> from Google, but for full support of all debugging features, please use the customly built <span class="caps">NDK</span> at the following location: <a href="http://code.google.com/p/mingw-and-ndk/downloads/list">http://code.google.com/p/mingw-and-ndk/downloads/list</a></p>

	<p>3. Get the Qt Creator source from the &#8220;2.7&#8221; branch and build it. The released Qt Creator 2.7.0 will not work, as there are required changes in the unreleased version 2.7.1. </p>

	<p>4. Get Qt 5: </p>

	<ul>
		<li>git clone git://gitorious.org/qt/qt5.git qt5</li>
	</ul>

	<ul>
		<li>cd qt5</li>
	</ul>

	<ul>
		<li>perl init-repository</li>
	</ul>

	<p>5. Configure Qt and skip unsupported modules:</p>

	<ul>
		<li>./configure -developer-build -xplatform android-g++ -nomake tests -nomake examples -android-ndk &lt;path/to/ndk&gt; -android-sdk &lt;path/to/sdk&gt; -android-ndk-host &lt;e.g. linux-x86_64&gt; -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples</li>
	</ul>

	<p>6. Build. You need a <span class="caps">JDK</span> (version 1.6) and you should have this in your <span class="caps">PATH</span>.  The $JAVA_HOME environment variable needs to be pointing to its directory (e.g. /usr/lib/jvm/java-6-openjdk-i386). Then you can run: </p>

	<ul>
		<li>make</li>
	</ul>

	<p>7. Start the Qt Creator you built earlier.</p>

	<p>8. Go into Tools -&gt; Options -&gt; Android and set the right paths to the Android <span class="caps">SDK</span> and <span class="caps">NDK</span>, etc. </p>

	<p>9. Add your newly built Qt version to Options -&gt; Build &amp; Run -&gt; Qt Versions.</p>

	<p>10. At this point you should be able to create a project and configure it for the Android kit. In order to test, go into the &#8220;Run&#8221; settings for your project. Under &#8220;Deploy Configuration&#8221;, check the &#8220;Use Qt libraries from local device&#8221; option. Also select the &#8220;Deploy local Qt libraries&#8221; radio button. </p>

	<p>11. Now you should be able to connect a device and hit the &#8220;Run&#8221; button on your project to run it on the device.</p>]]></description>
      <dc:subject>Qt5ForAndroidBuilding</dc:subject>
      <dc:date>2013-05-16T14:45:37+00:00</dc:date>
    </item>

    <item>
      <title>Transition_from_Qt_4.x_to_Qt5</title>
      <link>http://qt&#45;project.org/wiki/Transition_from_Qt_4.x_to_Qt5</link>
      <guid>http://qt&#45;project.org/wiki/Transition_from_Qt_4.x_to_Qt5</guid>
      <description><![CDATA[<a name="05ca8a16ebe5ec8af86dab8d98c582c5"></a>	<h1>The Transition from Qt 4.x to Qt 5</h1>

	<p>The transition from Qt 4.x to Qt 5 is not expected to be significant.  However, the &#8220;modularization&#8221; of the Qt code base requires some amount of changes to project configuration, such as use of &#8220;headers&#8221;, and configuration of project build settings (such as changes to the *.pro files).</p>

	<p>Qt Creator (master) is compiled using Qt 4 and Qt 5; you can refer to its sources to get an overview of what is required to port an application and keep the sources backwards compatible to Qt 4.</p>

	<a name="b043e281a2e063ea15547a5e75087251"></a>	<h2> QtWidgets as a Separate Module</h2>

	<a name="6f69592ff36ac78e4f6ca4ecd46a3b21"></a>	<h3>example compile time errors
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">error<span class="sy0">:</span> <a href="http://qt-project.org/doc/QMainWindow.html"><span class="kw5">QMainWindow</span></a><span class="sy0">:</span> No such file or directory</div></li>
<li class="li1"><div class="de1">error<span class="sy0">:</span> <a href="http://qt-project.org/doc/QToolButton.html"><span class="kw5">QToolButton</span></a><span class="sy0">:</span> No such file or directory</div></li>
<li class="li1"><div class="de1">error<span class="sy0">:</span> <a href="http://qt-project.org/doc/QWidget.html"><span class="kw5">QWidget</span></a><span class="sy0">:</span> No such file or directory</div></li>
</ol></div></h3>

	<a name="49b21ad0d38942f635877e7bbc5d7a1e"></a>	<h3>Solution</h3>

	<p>Add this in your *.pro file:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> widgets</div></li>
</ol></div></p>

	<p>Change all instances of</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtGui&gt;</span></div></li>
</ol></div></p>

	<p>to</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtWidgets&gt;</span></div></li>
</ol></div></p>

	<p>The code should work now, though sometimes you may require to be more explicit:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtWidgets/QToolButton&gt;</span></div></li>
</ol></div></p>

	<a name="bcaf3216163e61eb8e1392b673efce01"></a>	<h2>QtWebKitWidgets is also a separate module:</h2>

	<a name="c821ed98c86abe73d53bcb5664d2813d"></a>	<h3>example compile time errors
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">error<span class="sy0">:</span> invalid use of incomplete type <span class="st0">'class QWebFrame'</span></div></li>
<li class="li1"><div class="de1">error<span class="sy0">:</span> forward declaration of <span class="st0">'class QWebFrame'</span></div></li>
</ol></div></h3>

	<a name="49b21ad0d38942f635877e7bbc5d7a1e_0"></a>	<h3>Solution</h3>

	<p>Add this in your *.pro file:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> webkitwidgets</div></li>
</ol></div></p>

	<p><strong>Note</strong>: when you have QT += webkitwidgets you don&#8217;t need QT += widgets</p>

	<p>In addition, replace all instances of </p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtWebKit&gt;</span></div></li>
</ol></div></p>

	<p>to</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtWebKitWidgets&gt;</span></div></li>
</ol></div></p>

	<p>You can try this by porting a <a href="http://qt.gitorious.org/qt-labs/graphics-dojo/trees/c8d0c381b994d7417863832929cc4c3f710f2db5/htmleditor"><span class="caps">WYSISWYG</span> html editor</a> <em>[qt.gitorious.org]</em> from Qt 4 to Qt 5.</p>

	<a name="a17a776d9397365e5aaee5728681d64e"></a>	<h2>QPrinter Doesn&#8217;t Work</h2>

	<p>If your code has the following lines:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QPrinter&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QPrintDialog&gt;</span></div></li>
</ol></div></p>

	<p>add the following to your project file:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> printsupport</div></li>
</ol></div></p>

	<p>Again, sometimes it may not work and you would need to be explicit:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtPrintSupport/QPrinter&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtPrintSupport/QPrintDialog&gt;</span></div></li>
</ol></div></p>

	<a name="846d0d314d8d4894bde364f45acf02e4"></a>	<h2>toAscii() and fromAscii() Methods are deprecated</h2>

	<p>Replace all instances of </p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">fromAscii<span class="br0">&#40;</span><span class="br0">&#41;</span> </div></li>
<li class="li1"><div class="de1">toAscii<span class="br0">&#40;</span><span class="br0">&#41;</span> </div></li>
</ol></div></p>

	<p>to <br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">fromLatin1<span class="br0">&#40;</span><span class="br0">&#41;</span> </div></li>
<li class="li1"><div class="de1">toLatin1<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>For example, given the Qt 4 code<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a> configfileti <span class="sy0">=</span> TMP_Config.<span class="me1">toAscii</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<p>you would change to <br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QByteArray.html"><span class="kw5">QByteArray</span></a> configfileti <span class="sy0">=</span> TMP_Config.<span class="me1">toLatin1</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<a name="3a05fcdc7ec52801754a96d4b80c301b"></a>	<h2>QCoreApplication::UnicodeUTF8 is deprecated</h2>

	<p>This enum type used to define the 8-bit encoding of character string arguments to translate(). This enum is now obsolete and <span class="caps">UTF</span>-8 will be used in all cases. So remove all instances of QCoreApplication::UnicodeUTF8. For example:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Href_Gui<span class="sy0">-&gt;</span><span class="me3">setWindowTitle</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Url / www&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Text:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label_2<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Url:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label_3<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Target / Name:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<p>to</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Href_Gui<span class="sy0">-&gt;</span><span class="me3">setWindowTitle</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Url / www&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Text:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label_2<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Url:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">label_3<span class="sy0">-&gt;</span><span class="me3">setText</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QApplication.html"><span class="kw5">QApplication</span></a><span class="sy0">::</span><span class="me2">translate</span><span class="br0">&#40;</span><span class="st0">&quot;Href_Gui&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Target / Name:&quot;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<a name="529c4b0ac2bb03c19bf96de0b6fb2636"></a>	<h2>QWorkspace is deprecated</h2>

	<p>This class is obsolete and was replaced by the QMdiArea class in Qt 4.3. In Qt 5 QWorkspace has been removed. The new class has a similar <span class="caps">API</span> to QWorkspace and porting it only involved changing the names of a few methods, signals, and slots. </p>

	<p>replace</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QWorkspace&gt;</span></div></li>
</ol></div></p>

	<p>with</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QMdiArea&gt;</span></div></li>
</ol></div></p>

	<a name="f6631f2e582af52dad4356accc9430b0"></a>	<h2>QDrag Problems</h2>

	<p>Apps that has drop and drag functionality will need some tweaking. A line such as</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/QDrag.html"><span class="kw5">QDrag</span></a> <span class="sy0">*</span>drag <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://qt-project.org/doc/QDrag.html"><span class="kw5">QDrag</span></a><span class="br0">&#40;</span>event<span class="sy0">-&gt;</span><span class="me3">widget</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
</ol></div></p>

	<p>in Qt 5 will generate the error</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">error<span class="sy0">:</span> no matching function <span class="kw1">for</span> call to <span class="st0">'QDrag::QDrag(QWidget*)'</span></div></li>
</ol></div></p>

	<p>To fix this add among the includes:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QWidget&gt;</span></div></li>
</ol></div></p>

	<a name="905af05d895d3ccb3a8896086d22ff0f"></a>	<h2> Fixing #include&lt;&gt; Headers  </h2>

	<p>A Perl script &#8220;fixqt4headers.pl&#8221; exists in qtbase/bin/. that should be run on source code using Qt that corrects the #include&lt;&gt; directives for Qt components to also consider the module name.</p>

	<a name="7ec1b8f08d7f31ebcb53188f0bd15ed5"></a>	<h2> Plugin loading  </h2>

	<p>The Q_EXPORT_PLUGIN,Q_EXPORT_PLUGIN2 macros have been deprecated in favor of the new Q_PLUGIN_METADATA macro. The advantage of the new system is that it allows Qt to query the metadata for the plugin without actually dlopen&#8217;ing it. This greatly improves performance and reliability of the plugin system.</p>

	<p>The new Q_PLUGIN_METADATA macro is included next to the Q_OBJECT macro in the QObject derived class that is returned when loading the plugin. It contains the plugins <span class="caps">IID</span> and a filename pointing to a json file containing the metadata for the plugin. The json file is compiled into the plugin and does not need to be installed.</p>

	<p>An example on how to change your plugins can be found by looking at the patch that changes the Gif image format plugin, see <a href="http://qt.gitorious.org/qt/qtbase/commit/963b4c1647299fd023ddbe7c4a25ac404e303c5d">http://qt.gitorious.org/qt/qtbase/commit/963b4c1647299fd023ddbe7c4a25ac404e303c5d</a> .</p>

	<a name="15c5757855948fbaee8a11ece49c412e"></a>	<h2>Recommended Reading</h2>

	<ul>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtdoc/sourcebreaks.html">C++ <span class="caps">API</span> Changes</a> <em>[qt-project.org]</em></li>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtdoc/portingguide.html">The porting guide</a> <em>[qt-project.org]</em></li>
		<li><a href="http://blog.ics.com/2013/01/porting-desktop-applications-from-qt-4-to-qt-5.html#.UVDeLReGqSr">Porting Desktop Applications from Qt 4 to Qt 5</a> <em>[blog.ics.com]</em></li>
		<li><a href="http://www.kdab.com/porting-from-qt-4-to-qt-5/">Porting from Qt 4 to Qt 5</a> <em>[kdab.com]</em></li>
		<li><a href="http://www.kdab.com/automated-porting-from-qt-4-to-qt-5/">Automated porting from Qt 4 to Qt 5</a> <em>[kdab.com]</em></li>
		<li><a href="http://www.codeproject.com/Tips/563232/Converting-a-Qt-4-project-to-Qt">Converting a Qt 4 project to Qt 5 &#8211; General Advice and Difficulties</a> <em>[codeproject.com]</em></li>
	</ul>]]></description>
      <dc:subject>Transition_from_Qt_4.x_to_Qt5</dc:subject>
      <dc:date>2013-05-16T14:44:34+00:00</dc:date>
    </item>

    <item>
      <title>Qt5ForAndroidQtBase</title>
      <link>http://qt&#45;project.org/wiki/Qt5ForAndroidQtBase</link>
      <guid>http://qt&#45;project.org/wiki/Qt5ForAndroidQtBase</guid>
      <description><![CDATA[<a name="71977b33710191a1bbc21da326403210"></a>	<h1>Status of Qt Base in Qt 5 for Android Project</h1>

	<p>Port is done with a few minor issues.</p>

	<p>- Bearer management: Only basic functionality e.g., connections status (online/offline) and available devices.</p>]]></description>
      <dc:subject>Qt5ForAndroidQtBase</dc:subject>
      <dc:date>2013-05-16T14:38:42+00:00</dc:date>
    </item>

    <item>
      <title>QtDesktopComponents</title>
      <link>http://qt&#45;project.org/wiki/QtDesktopComponents</link>
      <guid>http://qt&#45;project.org/wiki/QtDesktopComponents</guid>
      <description><![CDATA[<a name="ac81e90ce77d1057a675f10535bbbabd"></a>	<h1>Qt Quick Controls (Former Qt Desktop Components)</h1>

	<p>This project aims to deliver Qt Quick components relevant to desktop developers. This includes things like layouts, menus and styling.</p>

	<p><span class="caps">IRC</span> channel: #qt-components on irc.freenode.org</p>

	<a name="5d113f2038d289f391614c39043629e8"></a>	<h2>Scope</h2>

	<p>The project focus is to get the current components set working as well as possible for the Qt 5.1 release.</p>

	<a name="69fec8d3a543da2e7d7d91d1f9f3ae4d"></a>	<h2>Source Code Access</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org:29418/qt/qtquickcontrols.git</span></div></li>
</ol></div></p>

	<p>Use the &#8220;stable&#8221; branch and compile against a recent build of Qt 5.1 (qt &#8220;stable&#8221; branch)</p>

	<p>Gitorious mirror: <a href="http://qt.gitorious.org/qt/qtquickcontrols">http://qt.gitorious.org/qt/qtquickcontrols</a></p>

	<a name="7822a667a688ae9f2700195686abb4d6"></a>	<h2>Bug Tracking</h2>

	<p>Use <a href="https://bugreports.qt-project.org">bugreports.qt-project.org</a> <em>[bugreports.qt-project.org]</em>, Project &#8220;Qt&#8221;, Component &#8220;QtQuick: Controls&#8221; or &#8220;QtQuick: Layouts&#8221;.</p>

	<p><a href="https://bugreports.qt-project.org/secure/IssueNavigator.jspa?mode=hide&amp;requestId=13840&amp;mode=hide">Filter</a> <em>[bugreports.qt-project.org]</em> for viewing all unresolved bugs.</p>

	<a name="7cd8fb6e31cc946c078d2740c76a9899"></a>	<h2>Installation</h2>

	<p>The components rely on several C++ plugins in order to integrate with the desktop. To install the<br />
components into your Qt directory, simply enter the root directory and do:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">qmake</div></li>
<li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<p>This will compile and copy the plugins and components into your <span class="caps">QTDIR</span>/qml folder. <br />
If you are compiling against a system Qt on linux, you might have to do a &#8216;sudo make install&#8217;<br />
in order to install the project.</p>

	<a name="c64518704ce0c0d5501a45763f464276"></a>	<h2>Usage</h2>

	<p>The examples should show how you can use the components. </p>

	<p>There is a video demonstration available at <a href="http://www.youtube.com/watch?v=Y1pqL5bXe0A">http://www.youtube.com/watch?v=Y1pqL5bXe0A</a></p>

	<p>If you are using the QtQuick 2.0 wizard in Qt Creator there are two issues you should be aware of: &#8211; you cannot have a Window (or ApplicationWindow) as the root item. To do this, you need to change your QtQuickView into a QtQmlEngine since Window is not a QtQuickItem. &#8211; You have to change QGuiApplication to a QApplication. This is because the components rely on certain widget-specific classes such as QStyle to do native rendering.</p>

	<a name="fc51c66562ba70395eb179db4c89c9ae"></a>	<h2><span class="caps">API</span> Development Process Ideas</h2>

	<ul>
		<li>Process to happen on mailing list (subscribe here: <a href="http://lists.qt-project.org/mailman/listinfo/qt-components">http://lists.qt-project.org/mailman/listinfo/qt-components</a> ).</li>
		<li>When making <span class="caps">API</span> proposal/change always include: <span class="caps">API</span> definition and real world example (from a developer standpoint).</li>
		<li>Once decided upon an <span class="caps">API</span> proposal/change documentation has to be written right away.</li>
		<li>Enforcing a timeline around <span class="caps">API</span> discussion: from start of <span class="caps">API</span> definition to decision on it: 1 week.</li>
		<li>Making sure that at least one representant of each interested platform validates the <span class="caps">API</span> (if possible).</li>
		<li>Try to follow Qt naming convention if unsure.</li>
		<li>In case of unresolvable conflict of opinions, an appointed maintainer will have the last word.</li>
	</ul>

	<a name="3a791e05f3676f43de34363c33f1496c"></a>	<h2>Blogs entries</h2>

	<p><a href="http://blog.qt.digia.com/2011/03/10/qml-components-for-desktop/">http://blog.qt.digia.com/2011/03/10/qml-components-for-desktop/</a><br />
<a href="http://blog.qt.digia.com/2011/05/26/table-view-with-qt-quick/">http://blog.qt.digia.com/2011/05/26/table-view-with-qt-quick/</a><br />
<a href="http://blog.qt.digia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/">http://blog.qt.digia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/</a><br />
<a href="http://blog.qt.digia.com/2012/06/06/desktop-components-for-qt-5/">http://blog.qt.digia.com/2012/06/06/desktop-components-for-qt-5/</a></p>]]></description>
      <dc:subject>QtDesktopComponents</dc:subject>
      <dc:date>2013-05-16T12:13:32+00:00</dc:date>
    </item>

    <item>
      <title>Building Qt5 for Blackberry</title>
      <link>http://qt&#45;project.org/wiki/Building&#45;Qt5&#45;for&#45;Blackberry</link>
      <guid>http://qt&#45;project.org/wiki/Building&#45;Qt5&#45;for&#45;Blackberry</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#7de77c29da7dd76ef55e69d4917c714e">Building Qt 5 for BlackBerry</a><ul>
<li><a href="#63bf81d6d198cbb6e063f34b54bc0ec7">Setting up the environment</a></li>
<li><a href="#3a847b71eb5234e18d9c824fdb02cc94">Getting the source</a></li>
<li><a href="#c39b56d4489fb2507289e7ae19567b80">Building</a></li></ul>
</li></ul>
</div>

	<a name="7de77c29da7dd76ef55e69d4917c714e"></a>	<h1>Building Qt 5 for BlackBerry</h1>

	<p>This page provide instructions how to build Q5 for <strong>BlackBerry 10</strong> and the <strong>Playbook OS</strong>. These instructions are intended for those who are going to contributre to Qt on BlackBerry 10 or like to experiment with Qt5 on BlackBerry 10. Please note that recent Qt5 snapshots are tailored to BlackBerry 10 and might not build or not run well on the PlayBook OS.</p>

	<p>If you just plan to use Qt for application development for BlackBerry 10, you should strongly consider using QtCreator 2.7 and Qt 4.8.x provided in the BlackBerry 10 <span class="caps">NDK</span>, see <a href="http://qt-project.org/wiki/Using-Qt-Creator-for-Qt-Development-on-BlackBerry-10">this page</a> for more details.</p>

	<a name="63bf81d6d198cbb6e063f34b54bc0ec7"></a>	<h2>Setting up the environment</h2>

	<p>See <a href="http://qt-project.org/wiki/Blackberry">Blackberry</a> for the introduction and further instructions.</p>

	<a name="3a847b71eb5234e18d9c824fdb02cc94"></a>	<h2>Getting the source</h2>

	<p>The approach we will take is to do an in-source build of the Qt5 repositories that are needed but to install them to a custom directory ($HOME/development/qnx/qt5 in the following example). Please also note that we clone and build modules separately. This is procedure is different with the builds for desktop platforms and allows to include only those modules which are relevant. Please adjust paths to suit your setup as needed.</p>

	<p>So create a directory to hold the source code:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd $HOME<span class="sy0">/</span>development</div></li>
<li class="li1"><div class="de1">$ mkdir qt5</div></li>
<li class="li1"><div class="de1">$ cd qt5</div></li>
</ol></div></p>

	<p>The repositories that we need are:</p>

	<ol>
		<li>qtbase</li>
		<li>qtjsbackend</li>
		<li>qtxmlpatterns (optional, provides support for XmlListModel in QtQuick)</li>
		<li>qtsensors (optional, provides access to the device&#8217;s sensors)</li>
		<li>qtmultimedia (optional, for audio and video playback)</li>
		<li>qtdeclarative</li>
		<li>qtgraphicaleffects (optional but nice for QtQuick2 special effects)</li>
		<li>qt3d (optional, provides 3D scenes using <span class="caps">QML</span>)</li>
		<li>qtscript (optional, only needed when using the qtquick1 module)</li>
	</ol>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtbase.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtjsbackend.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtxmlpatterns.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtdeclarative.git</span></div></li>
<li class="li2"><div class="de2">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtsensors.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtmultimedia.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtgraphicaleffects.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qt3d.git</span></div></li>
<li class="li1"><div class="de1">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtquick1.git</span></div></li>
<li class="li2"><div class="de2">$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtscript.git</span></div></li>
</ol></div></p>

	<a name="c39b56d4489fb2507289e7ae19567b80"></a>	<h2>Building</h2>

	<p>The process of building Qt5 for BlackBerry devices is very similar to building it for any other platform so it is worth having a quick read through the <a href="http://qt-project.org/wiki/Building_Qt_5_from_Git">generic instructions for building Qt5</a> before proceeding.</p>

	<p>Be sure that you have configured your environment to use the BlackBerry 10 <span class="caps">NDK</span> as described in <a href="http://qt-project.org/wiki/Blackberry">Blackberry</a>! This especially concerns setting the right values $PATH to pickup tools and cross-compile tool-chain provided in the <span class="caps">NDK</span>. </p>

	<a name="8dc11b10fa435ba613d9437ef7db8824"></a>	<h3>Linux/OS X</h3>

	<p>First we need to configure Qt.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd qtbase</div></li>
<li class="li1"><div class="de1">$ .<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $HOME<span class="sy0">/</span>development<span class="sy0">/</span>qnx<span class="sy0">/</span>qt5 <span class="sy0">-</span>xplatform blackberry<span class="sy0">-</span>armv7le<span class="sy0">-</span>qcc <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests &nbsp;<span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release</div></li>
</ol></div></p>

	<p>Add <div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">-</span>no<span class="sy0">-</span>c<span class="sy0">++</span><span class="nu0">11</span></div></li>
</ol></div> option when compiling on Mac <span class="caps">OSX</span>.</p>

	<p>When compiling for the <strong>Playbook</strong>, use the following command:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ .<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $HOME<span class="sy0">/</span>development<span class="sy0">/</span>qnx<span class="sy0">/</span>qt5 <span class="sy0">-</span>device blackberry<span class="sy0">-</span>playbook<span class="sy0">-</span>armv7le <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests &nbsp;<span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release <span class="sy0">-</span>no<span class="sy0">-</span>neon</div></li>
</ol></div><br />
And afterwards we simply build it by calling make and make install.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ make <span class="sy0">-</span>j<span class="sy0">&lt;</span>N<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">$ make install</div></li>
</ol></div></p>

	<p>where &lt;N&gt; is the number of parallel make jobs to run. This is often set to &lt;No. of <span class="caps">CPU</span> cores + 1&gt;.</p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h3>Windows</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\dev<span class="sy0">&gt;</span> cd qtbase</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\dev\qtbase<span class="sy0">&gt;</span> configure <span class="sy0">-</span>prefix C<span class="sy0">:</span>\dev\qt5install <span class="sy0">-</span>xplatform blackberry<span class="sy0">-</span>armv7le<span class="sy0">-</span>qcc <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests <span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release</div></li>
</ol></div></p>

	<p>For the <strong>Playbook</strong>:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\dev<span class="sy0">&gt;</span> cd qtbase</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\dev\qtbase<span class="sy0">&gt;</span> configure <span class="sy0">-</span>prefix C<span class="sy0">:</span>\dev\qt5install <span class="sy0">-</span>device blackberry<span class="sy0">-</span>playbook<span class="sy0">-</span>armv7le <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests <span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release <span class="sy0">-</span>no<span class="sy0">-</span>neon</div></li>
</ol></div></p>

	<p>If you want to work with <span class="caps">HTTPS</span> protocol, add <strong>-openssl</strong> option. <em>need to check if the same required on Linux</em></p>

	<a name="f895df5b37498f660cde1a2388d7af8b"></a>	<h3>Mac OS X</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd qtbase</div></li>
<li class="li1"><div class="de1">$ .<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $HOME<span class="sy0">/</span>development<span class="sy0">/</span>qnx<span class="sy0">/</span>qt5 <span class="sy0">-</span>xplatform blackberry<span class="sy0">-</span>armv7le<span class="sy0">-</span>qcc <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests &nbsp;<span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release <span class="sy0">-</span>no<span class="sy0">-</span>neon <span class="sy0">-</span>no<span class="sy0">-</span>c<span class="sy0">++</span><span class="nu0">11</span></div></li>
</ol></div></p>

	<p>After this process, you should have a basic Qt5 installation located in $HOME/development/qnx/qt5 or in C:\dev\qt5install, depending of your operating system.</p>

	<p>You may now either move onto building your applications or continue here to install some additional modules to gain access to additional features of Qt5.</p>

	<p>If you want to build additional modules, make sure to do this in the right order, because some modules depend on each other (qtjsbackend e.g. <span class="caps">MUST</span> be built in installed before qtdeclarative).</p>

	<p>To build additional modules we need to use the qmake from our new Qt5 installation so we adjust the <span class="caps">PATH</span> environment variable accordingly:</p>

	<a name="8dc11b10fa435ba613d9437ef7db8824"></a>	<h3>Linux/OS X</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ export PATH<span class="sy0">=</span>$HOME<span class="sy0">/</span>development<span class="sy0">/</span>qnx<span class="sy0">/</span>qt5<span class="sy0">/</span>bin<span class="sy0">:</span>$PATH</div></li>
</ol></div></p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h3>Windows</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\dev<span class="sy0">&gt;</span> set PATH<span class="sy0">=</span>C<span class="sy0">:</span>\dev\qt5install\bin<span class="sy0">;%</span>PATH<span class="sy0">%</span></div></li>
</ol></div></p>

	<p>Now for each of the additional modules that you wish to build do the following:</p>

	<a name="8dc11b10fa435ba613d9437ef7db8824"></a>	<h3>Linux/OS X</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ cd <span class="sy0">&lt;</span>modulename<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">$ qmake</div></li>
<li class="li1"><div class="de1">$ make <span class="sy0">-</span>j<span class="sy0">&lt;</span>N<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">$ make install</div></li>
</ol></div></p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h3>Windows</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">C<span class="sy0">:</span>\dev<span class="sy0">&gt;</span> cd <span class="sy0">&lt;</span>modulename<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\dev\module<span class="sy0">&gt;</span> qmake</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\dev\module<span class="sy0">&gt;</span> mingw32<span class="sy0">-</span>make <span class="sy0">-</span>j</div></li>
<li class="li1"><div class="de1">C<span class="sy0">:</span>\dev\module<span class="sy0">&gt;</span> mingw32<span class="sy0">-</span>make <span class="sy0">-</span>j install</div></li>
</ol></div></p>

	<p>The following modules are known to build at the time of writing:</p>

	<ul>
		<li>qtjsbackend (required for qtdeclarative)</li>
		<li>qtxmlpatterns</li>
		<li>qtdeclarative (required for qt3d)</li>
		<li>qtgraphicaleffects</li>
		<li>qt3d</li>
		<li>qtscript (needed for QtQuick1)</li>
		<li>qtquick1</li>
		<li>qtsensors</li>
		<li>qtmultimedia</li>
		<li>qtwebkit, see <a href="http://qt-project.org/wiki/Building-QtWebKit-for-Blackberry">Building QtWebKit for Blackberry</a></li>
	</ul>

	<a name="611114a3a55940e855fb96b973f897fc"></a>	<h3>See also</h3>

	<ul>
		<li><a href="http://qt-project.org/wiki/Building-Qt4-for-Blackberry">Building Qt4 for Blackberry</a></li>
		<li><a href="http://qt-project.org/wiki/Building-QtWebKit-for-Blackberry">Building QtWebKit for Blackberry</a></li>
		<li><a href="http://qt-project.org/wiki/A-HelloWorld-using-the-Blackberry-NDK-CLI-tools">A HelloWorld using the Blackberry <span class="caps">NDK</span> <span class="caps">CLI</span> tools</a></li>
		<li><a href="http://qt-project.org/wiki/Building_and_Deploying_Qt_Applications_to_the_Playbook">Building_and_Deploying_Qt_Applications_to_the_Playbook</a></li>
		<li><a href="http://qt-project.org/wiki/Deploying_Qt_to_a_central_place_on_Blackberry_devices">Deploying_Qt_to_a_central_place_on_Blackberry_devices</a></li>
	</ul>]]></description>
      <dc:subject>Building Qt5 for Blackberry</dc:subject>
      <dc:date>2013-05-16T05:43:23+00:00</dc:date>
    </item>

    <item>
      <title>Code_Reviews</title>
      <link>http://qt&#45;project.org/wiki/Code_Reviews</link>
      <guid>http://qt&#45;project.org/wiki/Code_Reviews</guid>
      <description><![CDATA[<a name="711a304217d2e279d61b9044d6064b5e"></a>	<h1>Code Reviews</h1>

	<p><strong>Participating in the Qt project by contributing and reviewing</strong></p>

	<p>This Wiki provides information on how to contribute and review code. It also provides directions to the information on Gerrit and Git used for developing Qt. </p>

	<a name="2fbf53c2e5ee9d72e88148d10de063a2"></a>	<h2>Overview of the technical landscape </h2>

	<p>The servers, database, and tools related to the Qt Open Governance code contribution process as well as their interactions are illustrated in the adjacent picture. The process has been designed to provide increased transparency and quick pass-through for code contributions, and its core is the easy-to-use code review tool, Gerrit. The tool is available for everybody, and besides using it for its main purpose of contributors and feedback gathering, it can be utilized for studying the code of the other contributors.</p>

	<p>Here&#8217;s an overview diagram of the process:</p>

	<p><img onload='imgFitOnLoad(this)'  src="http://developer.qt.nokia.com/uploads/image_upload/New_Landscape.png" alt="" /></p>

	<p>In order to gain access and log in to Gerrit, a contributor needs to have an existing <span class="caps">JIRA</span> account. A new account can be obtained from <a href="https://bugreports.qt-project.org/.">https://bugreports.qt-project.org/.</a></p>

	<p>Gerrit tool is used in the Qt Project for approval of changes and both automated quality checks and human reviews. It is hosted under the codereview.qt-project.org domain. Contributions are sent as patches to Gerrit with the Git push command, with target ref as refs/for/&lt;branch name&gt;. There will be no direct pushing into a branch. Repository can be accessed with <span class="caps">SSH</span> on port 29418. </p>

	<p>Continuous Integration (CI) system is used for building and testing. CI fetches reviewed changes from Gerrit, runs build &amp; test for the changes and transfers the changes passed further to the public tip. Staging branches are stored in the Git repository of Gerrit.</p>

	<p>In addition to Gerrit&#8217;s Git repository, the repository is pushed to Gitorious repository on qt.gitorious.org. That repository is read-only.</p>

	<a name="a788051ae2f79ff22f7039892855dee9"></a>	<h2>Using Git </h2>

	<ul>
		<li><a href="http://developer.qt.nokia.com/wiki/Git_Installation">Git Installation</a> <em>[developer.qt.nokia.com]</em></li>
		<li><a href="http://developer.qt.nokia.com/wiki/Get_The_Source">Get the source</a> <em>[developer.qt.nokia.com]</em></li>
		<li><a href="http://qt-project.org/wiki/Git-Introduction">Developing and maintaining patches on top of Qt with Git</a></li>
	</ul>

	<a name="2c60403b2268c127fe6c09a8c9c5859a"></a>	<h2>Using Gerrit </h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Setting-up-Gerrit">Setting up your Gerrit environment</a></li>
		<li><a href="http://qt-project.org/wiki/Gerrit-Introduction">Introduction to Gerrit</a>
	<ul>
		<li>Contribution creation and uploading</li>
		<li>Requesting and receiving contribution feedback</li>
		<li>Approving and abandoning</li>
		<li>Continuous integration and staging</li>
		<li>Merging feature branches</li>
		<li>Access rights</li>
		<li>Providing feedback about the set up</li>
	</ul></li>
		<li><a href="http://developer.qt.nokia.com/videos/watch/gerrit_contributing_and_reviewing_a_change"><span class="caps">VIDEO</span>: Contributing and reviewing a change, 3min 15sec</a> <em>[developer.qt.nokia.com]</em></li>
	</ul>

	<a name="eafbe12e55b9e4afab348bfca7d8d677"></a>	<h2>Troubleshooting </h2>

	<a name="3997c32b8255e2465f0bcaba98d6594f"></a>	<h3>Checklist for contributing</h3>

	<p>In order to contribute person needs to have:</p>

	<ul>
		<li><span class="caps">JIRA</span> account: can be created from <a href="https://bugreports.qt-project.org">https://bugreports.qt-project.org</a></li>
		<li>Register to Gerrit using e-mail <a href="https://codereview.qt-project.org">https://codereview.qt-project.org</a></li>
		<li>Accept the Contributor License Agreement
	<ul>
		<li>Individual contributor does that in Gerrit (Settings -&gt; Agreements -&gt; New Contributor Agreement)</li>
		<li>Corporate contributor needs to fill in <span class="caps">CLA</span>  for corporate contributor</li>
	</ul></li>
		<li>If code is contributed user needs to clone the source code (see: <a href="http://qt-project.org/wiki/Getting-the-source-code">Getting the source code</a>)</li>
	</ul>

	<a name="5173d222641a40d3023eb052686fc9db"></a>	<h3>Troubleshooting Table </h3>

<table class="infotable line"><tr><th>Symptom </th><th>Cause </th><th>Solution</th></tr></table>

<table class="infotable line"><tr><td>When I click the email verification link in Outlook, Gerrit told &#8220;Invalid token&#8221;</td><td>Outlook doesn&#8217;t activate the link correctly. Specifically, the last two &#8220;h2. &#8220; are omitted when clicking on the link</td><td>Copy and paste the link into a web browser, instead of clicking on it</td></tr><tr><td>&#8220;git push&#8221; fails with: &#8220;error: failed to push some refs to &#8230;&#8221;</td><td>Many possible causes.  Generic error message.</td><td>Please read the rest of the output of &#8220;git push&#8221; to determine the root cause (especially lines beginning with &#8220;remote:&#8221;).</td></tr><tr><td>&#8220;git push&#8221; fails with: &#8220;<span class="caps">ERROR</span>: missing Change-Id in commit message&#8221;.</td><td>You tried to push a commit whose commit message didn&#8217;t contain a &#8220;Change-Id&#8221; line. This may be:</td><td>.</td></tr><tr><td>.</td><td>commit is new</td><td>To prevent the problem occurring for new commits, install the commit message hook according to the instructions under <a href="http://qt-project.org/wiki/Setting-up-Gerrit">Setting up Gerrit   Local Setup</a>. Then use git commit &#8212;amend to fix up the current commit (just exit the commit message editor without changing anything).</td></tr><tr><td>.</td><td>a commit you have cherry-picked from outside of Gerrit</td><td>Use one of these tools to add a Change-Id (roughly listed in order of expertise required): git commit &#8212;amend, git-edit-commit (from devtools/mainline.git), git rebase &#8212;interactive</td></tr><tr><td>&#8220;git push&#8221; fails with &#8220;<span class="caps">ERROR</span>: you are not allowed to upload merges&#8221;</td><td>You tried to push a merge commit for review, which is not allowed by default.</td><td>Contact one of the administrators listed in the Gerrit Registration section and ask for permission to do merges. The primary reason for this is to reduce the risk of accidental pushing of merges (e.g. by users who use Git in a <span class="caps">CVS</span>-like manner, without learning about effective usage of merges and rebases).</td></tr><tr><td>I can&#8217;t give +2 to anything, or submit or stage anything</td><td>You&#8217;re not in the &#8220;Approvers&#8221; group.</td><td>Apply for approver status according to the <a href="http://qt-project.org/wiki/The_Qt_Governance_Model">Qt Governance Model</a>. If your status was confirmed but not executed yet, contact one of the administrators listed in the Gerrit Registration section to add you to the &#8220;Approvers&#8221; group.</td></tr><tr><td>&#8220;Qt Sanity Bot&#8221; gave a -1 to my change!</td><td>An automated sanity check bot found out that change contains some problem.</td><td>First, really try to understand the problem. Don&#8217;t proceed until you understand the output of the bot. Then make an informed decision to either fix it (e.g. by amending your change with the fix and pushing it again), or ignore it. The sanity bot&#8217;s output is advisory in cases where it is determined heuristically.</td></tr><tr><td>&#8220;Qt Sanity Bot&#8221; gave a -2 to my change!</td><td>An automated sanity check bot found out that change contains some serious problem.</td><td>First, really try to understand the problem. If you are convinced that the bot made a mistake, contact a member of the Administrators group on Gerrit.</td></tr><tr><td>&#8220;Qt Continuous Integration System&#8221; said my change failed, but I&#8217;m sure my change is OK!</td><td>The test procedure for your change failed. It could be:</td><td>.</td></tr><tr><td>.</td><td>a regression caused by someone else&#8217;s change which was tested at the same time</td><td>Simply stage your change again.</td></tr><tr><td>.</td><td>a regression caused by a change in some dependency of the module you&#8217;re working on (e.g. a qtbase bug breaking qtdeclarative)</td><td>Fix the bug in the dependency, or ensure someone else fixes it, before re-staging your change.</td></tr><tr><td>.</td><td>an unstable failure due to bugs in the code (e.g. an autotest which fails ~50% of the time, seemingly at random)</td><td>Fix the instability in a separate commit before re-staging your change, or consult QA for advice.</td></tr><tr><td>.</td><td>bugs or infrastructure problems in the CI system.</td><td>Consult QA for advice.</td></tr><tr><td>.</td><td>a regression genuinely caused by your change</td><td>Reconsider if you should really be &#8220;sure&#8221; that your change is OK. For a project the size of Qt, it is common for changes in one part of the code to affect other parts of the code in unexpected ways.</td></tr></table>

	<a name="03b615958473c0a049fa334ac6301670"></a>	<h3>A Real World Troubleshooting Example</h3>

	<p>This is a lightly edited log of troubleshooting an attempt to push a commit to gerrit for Qt 4.8.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">16</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> git gives me <span class="kw1">this</span> <span class="st0">&quot;error: failed to push some</span></div></li>
<li class="li1"><div class="de1"><span class="st0">refs to 'ssh://giotis.nikos@codereview.qt-project.org:29418/qt/qt'&quot;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">16</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> curius<span class="sy0">:</span> login to gerrit</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">16</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> curius<span class="sy0">:</span> click settings at the top right</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">17</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> curius<span class="sy0">:</span> click Agreements on the left at the bottom of the list</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">17</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> verified</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">17</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> ok<span class="sy0">,</span> good</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">17</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> now click ssh <span class="kw2">public</span> keys</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">18</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> <span class="kw1">do</span> you see your key?</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">19</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> yes</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">19</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> okay</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">20</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> so we know that in theory you can push but there<span class="st0">'s likely some problem with /what/</span></div></li>
<li class="li1"><div class="de1"><span class="st0">your trying to push, or where it'</span>s going to</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">20</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>peppe<span class="sy0">&gt;</span> curius<span class="sy0">:</span> Change<span class="sy0">-</span>Id installed?</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">21</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> Change<span class="sy0">-</span>Id? don<span class="st0">'t know what that is :)</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:21] &lt;curius&gt; the git/hook thing?</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:21] &lt;richmoore1&gt; yes, it should be in your commit message</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:21] &lt;richmoore1&gt; do you see a line like Change-Id: Iffbdf8f5ec366d9f41debcf8301340b5ff2207bb</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:21] &lt;qt_gerrit&gt; https://codereview.qt-project.org/#q,Iffbdf8f5ec366d9f41debcf8301340b5ff2207bb,n,z</span></div></li>
<li class="li2"><div class="de2"><span class="st0">[20:22] &lt;curius&gt; oh.. ok, there is a change-id, yes</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:23] &lt;curius&gt; Change-Id: Ibc7546c522506b2c4e7a729a8de319aea788b662</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:23] &lt;qt_gerrit&gt; https://codereview.qt-project.org/#q,Ibc7546c522506b2c4e7a729a8de319aea788b662,n,z</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:24] &lt;richmoore1&gt; okay, so we know you have the git hooks working</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:25] &lt;richmoore1&gt; curius: the problem is probably that you'</span>ve fallen behind the current tree</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">25</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> curius<span class="sy0">:</span> <span class="kw1">do</span> a git pull to get yourself up to date</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">26</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> curius<span class="sy0">:</span> you may need to tweak your change to make it work after <span class="kw1">this</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">28</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> git pull ssh<span class="sy0">:</span><span class="co1">//giotis.nikos@codereview.qt-project.org:29418/qt/qt</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">28</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> <span class="kw1">this</span> says <span class="st0">'Already up-to-date'</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">29</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> okay<span class="sy0">,</span> what <span class="kw1">else</span> did it say when you tried to push?</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">30</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> http<span class="sy0">:</span><span class="co1">//pastebin.com/NqbJZBaS</span></div></li>
</ol></div></p>

	<p>The contents of the pastebin were as follows:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Counting objects<span class="sy0">:</span> <span class="nu0">7</span><span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Delta</span> compression <span class="kw2">using</span> up to <span class="nu0">4</span> threads.</div></li>
<li class="li1"><div class="de1"><span class="me1">Compressing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">,</span> done.</div></li>
<li class="li1"><div class="de1"><span class="me1">Writing</span> objects<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">555</span> bytes<span class="sy0">,</span> done.</div></li>
<li class="li2"><div class="de2"><span class="me1">Total</span> <span class="nu0">4</span> <span class="br0">&#40;</span>delta <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">,</span> reused <span class="nu0">0</span> <span class="br0">&#40;</span>delta <span class="nu0">0</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">remote<span class="sy0">:</span> Resolving deltas<span class="sy0">:</span> &nbsp; <span class="nu0">0</span><span class="sy0">%</span> <span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">/</span><span class="nu0">3</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">To ssh<span class="sy0">:</span><span class="co1">//giotis.nikos@codereview.qt-project.org:29418/qt/qt</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">!</span> <span class="br0">&#91;</span>remote rejected<span class="br0">&#93;</span> HEAD <span class="sy0">-&gt;</span> <span class="me3">refs</span><span class="sy0">/</span><span class="kw1">for</span><span class="sy0">/</span>master <span class="br0">&#40;</span>branch master not found<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">error<span class="sy0">:</span> failed to push some refs to <span class="st0">'ssh://giotis.nikos@codereview.qt-project.org</span></div></li>
<li class="li2"><div class="de2"><span class="st0">:29418/qt/qt'</span></div></li>
</ol></div></p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">31</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> aha<span class="sy0">,</span> see line <span class="nu0">8</span>?</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">31</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> yes? branch master not found ?</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">32</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> yes<span class="sy0">,</span> that<span class="st0">'s the problem. iirc you'</span>re trying to push to <a href="http://qt-project.org/doc/Qt.html"><span class="kw5">qt</span></a> <span class="nu16">4.8</span> yes?</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">32</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> yes<span class="sy0">,</span> <span class="nu16">4.8</span> master</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">32</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> okay<span class="sy0">,</span> so we need to find out what the branch is</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">33</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> answer <span class="nu16">4.8</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">33</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> on branch <span class="nu16">4.8</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">33</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> yes</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">33</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> ohh.. <span class="me1">refs</span><span class="sy0">/</span><span class="kw1">for</span><span class="sy0">/</span><span class="nu16">4.8</span> ??</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">33</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> yep</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">34</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> thank you <span class="sy0">:</span>D</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">34</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> http<span class="sy0">:</span><span class="co1">//codereview.qt-project.org/#change,15262</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">34</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> bingo <span class="sy0">:-</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">35</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>curius<span class="sy0">&gt;</span> who<span class="st0">'s going to review it? it'</span>s very very trivial fix?</div></li>
<li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="nu0">20</span><span class="sy0">:</span><span class="nu0">35</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span>richmoore1<span class="sy0">&gt;</span> it<span class="st0">'s qmake. so add ossi</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:36] &lt;richmoore1&gt; or i can add him for you if you want</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:36] &lt;curius&gt; yes, please :)</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:36] &lt;curius&gt; add him</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:36] &lt;richmoore1&gt; done</span></div></li>
<li class="li2"><div class="de2"><span class="st0">[20:37] &lt;curius&gt; ahhh, nice :) ... and now i wait for ossi to see it, right?</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:37] &lt;richmoore1&gt; yep</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:37] &lt;richmoore1&gt; you'</span>ll get mailed when there<span class="st0">'s comments etc.</span></div></li>
<li class="li1"><div class="de1"><span class="st0">[20:38] &lt;richmoore1&gt; and you can push again using the same commit id (eg. via updating</span></div></li>
<li class="li1"><div class="de1"><span class="st0">your commit with git commit -amend to address any issues found during the review)</span></div></li>
</ol></div></p>]]></description>
      <dc:subject>Code_Reviews</dc:subject>
      <dc:date>2013-05-15T20:52:49+00:00</dc:date>
    </item>

    <item>
      <title>Qt for Tizen Introduction</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;for&#45;Tizen&#45;Introduction</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;for&#45;Tizen&#45;Introduction</guid>
      <description><![CDATA[<a name="605c1f787b10c5aa27297ab80a9fd315"></a>	<h1><a href="http://qt-project.org/wiki/Tizen">Qt for Tizen</a>: Introduction</h1>

	<a name="d93302eabf22ebf309dffabfe626a2d5"></a>	<h2>Goals</h2>

	<ul>
		<li>Qt 5 framework port to Tizen</li>
		<li>Bring the full <a href="http://qt-project.org/wiki/Category:Tools::QtCreator">Qt Creator</a>-based developer experience to Tizen application development</li>
		<li>Offer the default Tizen&#8217;s look&amp;feel based on Qt Quick 2 for application developers</li>
		<li>Offer sufficient integration with hardware and with system services</li>
	</ul>

	<a name="890985750042c5817684fb90a3fea76d"></a>	<h2>The initiative</h2>

	<p>Qt for Tizen is a purely community-driven, bottom-up initiative. Rules:
	<ul>
		<li>anyone can join</li>
		<li>transparent decision-making based on meritocracy</li>
		<li>only software available under <span class="caps">OSI</span>-approved open source licenses is re-used</li>
		<li>willingness to work with upstream projects</li>
		<li>friendly relationships with the Tizen Project aimed at cooperation</li>
		<li>no official affiliation with Tizen Association, Tizen Steering Group or associated companies</li>
	</ul></p>

	<p>In case of success the works shall be continued as an official port within the upstream and the Tizen Project or (some members of Tizen Association).</p>

	<p><strong>Contributors are welcome!</strong></p>

	<a name="c3fbc58e38451862c5316f857a2b804d"></a>	<h2>Unique values</h2>

	<p>These are recognized unique values of Qt and thus Qt for Tizen:</p>

	<ul>
		<li>Qt Creator-based <span class="caps">SDK</span> running natively on supported platforms (Linux, Windows, Mac OS X)
	<ul>
		<li>On Linux it is more lightweight and distribution-agnostic, does not require to switch to Ubuntu</li>
		<li>Contains only open source components (e.g. no closed plugins or dependency on Oracle Java)</li>
		<li>With open contribution model</li>
	</ul></li>
		<li>Native support for accessibility features coming from Qt Quick 2</li>
		<li>Access to numerous software talents (over 500k of Qt developers worldwide according to Digia), vital Qt community, source code examples, existing commercial and open source software</li>
		<li>Investment in Qt technology allows for diversification
	<ul>
		<li>Qt is a base of multiple mobile platforms such as BlackBerry 10, Ubuntu Mobile, SailfishOS, Qt for Android, and the forthcoming Qt for iOs, not to mention many of custom embedded solutions</li>
	</ul></li>
	</ul>

	<a name="658fb5ef00749e8af5a974f612adea9b"></a>	<h2>Assumptions</h2>

	<ul>
		<li>Since Qt Tizen Integration utilizes Qt Quick  2,  OpenGL 2.1+ support for desktops or Open GL ES 2.0+ for mobile/embedded devices is needed</li>
		<li>Storage requirements: To be defined</li>
		<li><span class="caps">CPU</span> requirements: To be defined</li>
	</ul>]]></description>
      <dc:subject>Qt for Tizen Introduction</dc:subject>
      <dc:date>2013-05-15T13:20:16+00:00</dc:date>
    </item>

    <item>
      <title>building_qt android_on_windows</title>
      <link>http://qt&#45;project.org/wiki/building_qt&#45;android_on_windows</link>
      <guid>http://qt&#45;project.org/wiki/building_qt&#45;android_on_windows</guid>
      <description><![CDATA[<a name="759b0031ff222a658bb4d36dc475702b"></a>	<h1>Building Qt/Android on Windows</h1>

	<p>Tested last time on v5.1.0-alpha1-184-ge9760f1 2013-04-11</p>

	<a name="8fff9da4dc324fa76fd8859ca9fa98b8"></a>	<h2>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Configuration &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</h2>

	<ul>
		<li><strong>Install the latest Perl:</strong><br />
<a href="http://strawberryperl.com/">http://strawberryperl.com/</a><br />
Select Destination folder (we&#8217;ll call this &lt;<span class="caps">PERL</span>_ROOT&gt;, and refer similarly to other install locations).</li>
	</ul>

	<ul>
		<li><strong>Install the latest msysgit:</strong><br />
<a href="https://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git">https://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git</a><br />
Select &#8220;Run Git from the Windows Command Prompt&#8221;<br />
Select &#8220;Checkout as-is, commit Unix-style line endings&#8221;</li>
	</ul>

	<ul>
		<li><strong>Install the latest MinGW-w64 from mingwbuilds:</strong><br />
<a href="http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-win32/dwarf/x32-4.7.2-release-win32-dwarf-rev11.7z/download">http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-win32/dwarf/x32-4.7.2-release-win32-dwarf-rev11.7z/download</a><br />
extract to &lt;<span class="caps">MINGW</span>_ROOT&gt; and add &lt;<span class="caps">MINGW</span>_ROOT&gt;\bin to the <strong>front</strong> of your <span class="caps">PATH</span>.</li>
	</ul>

	<ul>
		<li><strong>Overwrite MinGW-w64&#8217;s mingw32-make.exe with a fixed one (the next version of mingwbuilds will include this fix):</strong><br />
<a href="http://mingw-and-ndk.googlecode.com/files/mingw32-make-bin-patches.tar.xz">http://mingw-and-ndk.googlecode.com/files/mingw32-make-bin-patches.tar.xz</a><br />
Unzip mingw32-make.exe from it (using 7zip for example) and overwrite the one in &lt;<span class="caps">MINGW</span>_ROOT&gt;\bin\</li>
	</ul>

	<ul>
		<li><strong>Install the latest <span class="caps">JDK</span> 7:</strong><br />
<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a><br />
Add &lt;<span class="caps">JDK</span>_ROOT&gt;\bin to <span class="caps">PATH</span>.</li>
	</ul>

	<ul>
		<li><strong>Install the latest Necessitas Android <span class="caps">NDK</span>:</strong><br />
<a href="http://mingw-and-ndk.googlecode.com/files/android-ndk-r8e-ma-windows-x86.7z">http://mingw-and-ndk.googlecode.com/files/android-ndk-r8e-ma-windows-x86.7z</a><br />
Extract to &lt;<span class="caps">ANDROID</span>_NDK_ROOT&gt;</li>
	</ul>

	<ul>
		<li><strong>Install the latest Android <span class="caps">SDK</span> (tools only):</strong><br />
<a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a><br />
Run the <span class="caps">SDK</span> and install Platform 10 to &lt;<span class="caps">ANDROID</span>_SDK&gt;<br />
For building QtMultimedia, also install Platform 11.</li>
	</ul>

	<ul>
		<li><strong>Open cmd.exe window and perform some checks:</strong><br />
Ensure &#8220;where gcc.exe&#8221; lists &lt;<span class="caps">MINGW</span>_ROOT&gt;\bin\gcc.exe first (before &lt;<span class="caps">PERL</span>_ROOT&gt;\c\bin\gcc.exe)<br />
Ensure &#8220;where mingw32-make.exe&#8221; lists &lt;<span class="caps">MINGW</span>_ROOT&gt;\bin\mingw32-make.exe first.<br />
Ensure &#8220;where perl.exe&#8221; lists &lt;<span class="caps">PERL</span>_ROOT&gt;\perl\bin\perl.exe first.<br />
Ensure &#8220;where javac.exe&#8221; lists &lt;<span class="caps">JDK</span>_ROOT&gt;\bin first.</li>
	</ul>

	<a name="8a1e7a772239215a5cec55934ee46ad3"></a>	<h2>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Cloning &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</h2>

	<ul>
		<li><strong>Make the root folder for the Qt/Android build:</strong><br />
Make sure there are no spaces in this path and that it doesn&#8217;t contain too many characters.<br />
I went for &#8220;C:\work\build&#8221;<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">mkdir C<span class="sy0">:</span>\work\build</div></li>
<li class="li1"><div class="de1">cd C<span class="sy0">:</span>\work\build</div></li>
</ol></div></li>
	</ul>

	<ul>
		<li><strong>Follow step 4 at <a href="http://qt-project.org/wiki/Qt5ForAndroidBuilding">http://qt-project.org/wiki/Qt5ForAndroidBuilding</a></strong></li>
	</ul>

	<a name="aa9db9ed4c7ddafbb730a155285ffb48"></a>	<h2>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Build steps &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure.<span class="me1">bat</span> <span class="sy0">-</span>developer<span class="sy0">-</span>build <span class="sy0">-</span>platform win32<span class="sy0">-</span>g<span class="sy0">++</span> <span class="sy0">-</span>xplatform android<span class="sy0">-</span>g<span class="sy0">++</span> <span class="sy0">-</span>android<span class="sy0">-</span>ndk <span class="sy0">&lt;</span>ANDROID_NDK<span class="sy0">&gt;</span> <span class="sy0">-</span>android<span class="sy0">-</span>sdk <span class="sy0">&lt;</span>ANDROID_SDK<span class="sy0">&gt;</span> <span class="sy0">-</span>nomake tests <span class="sy0">-</span>nomake examples</div></li>
<li class="li1"><div class="de1">mingw32<span class="sy0">-</span>make.<span class="me1">exe</span> <span class="sy0">-</span>j<span class="sy0">&lt;</span>N<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>..where &lt;N&gt; is the number of parallel jobs your system can optimally exploit.</p>

	<ul>
		<li><strong>Follow steps 7..11 at <a href="http://qt-project.org/wiki/Qt5ForAndroidBuilding">http://qt-project.org/wiki/Qt5ForAndroidBuilding</a> (replacing make with mingw32-make.exe)</strong></li>
	</ul>

	<a name="e57063c22419a990062d33be8a0d84c7"></a>	<h2>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Finally &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</h2>

	<p>I want to enable building Qt/Android from the <span class="caps">MSYS</span> shell and if/when this is done I will update this page with the instructions.</p>]]></description>
      <dc:subject>building_qt android_on_windows</dc:subject>
      <dc:date>2013-05-15T08:13:34+00:00</dc:date>
    </item>

    <item>
      <title>Qt_for_iOS_known_issues</title>
      <link>http://qt&#45;project.org/wiki/Qt_for_iOS_known_issues</link>
      <guid>http://qt&#45;project.org/wiki/Qt_for_iOS_known_issues</guid>
      <description><![CDATA[<a name="595c11b85eb8765933812295df5b8662"></a>	<h1>Qt for iOS known issues in 5.1</h1>

	<a name="c39b56d4489fb2507289e7ae19567b80"></a>	<h2>Building</h2>

	<ul>
		<li><del>&#8220;QtQuick1 qmlviewer doesn&#8217;t build out of the box. Workaround: disable in pro file&#8221;</del> <a href="https://codereview.qt-project.org/#change,56043">https://codereview.qt-project.org/#change,56043</a></li>
	</ul>

	<a name="ff7c0fcd6a31e735a61c001f75426961"></a>	<h2>Examples</h2>

	<a name="0db377921f4ce762c62526131097968f"></a>	<h3>General</h3>

	<ul>
		<li>&#8220;QIOSBackingStore needs to have the same size as its window&#8221;</li>
		<li><del>&#8220;Failed to make complete framebuffer object 8cd7&#8221;</del> <a href="https://codereview.qt-project.org/#change,55454">https://codereview.qt-project.org/#change,55454</a></li>
		<li>Quit quits qt event loop but not app (should do nothing?)</li>
		<li>Dialogs resize on show</li>
		<li>Should we have file dialogs at all?</li>
		<li>Slow startup (due to font loading)</li>
		<li>&#8220;This plugin does not support propagateSizeHints()&#8221;</li>
	</ul>

	<a name="e5180d778e7e4067314b30e254b5dbcf"></a>	<h3>sharedmemory:</h3>

	<ul>
		<li>Crashes: Program received signal <span class="caps">SIGSYS</span>, Bad system call.  0&#215;3b23bbe4 in semget ()</li>
	</ul>

	<a name="082e56dc862c9b2a151f674b03c0edb5"></a>	<h3>openglwindow:</h3>

	<ul>
		<li>Doesnt rotate after rotating to landingscape</li>
	</ul>

	<a name="d7607304c8de1b93e0c50fc21fdc247a"></a>	<h3>http:</h3>

	<ul>
		<li>Unable to save index.html, permission denied</li>
	</ul>

	<a name="80440767e4ada148beb2e31bbf8df6f7"></a>	<h3>googlesuggest:</h3>

	<ul>
		<li>full screen line edit, no place for suggestions</li>
	</ul>

	<a name="56e25ef55bb39e64b255eb72f7e50ddf"></a>	<h3>bearermonitor:</h3>

	<ul>
		<li>no configurations, probably missing plugin</li>
	</ul>

	<a name="56d17842fceef2e7edf3e06132c9672c"></a>	<h3>network-chat:</h3>

	<ul>
		<li><del>&#8220;crash: Program received signal <span class="caps">EXC</span>_BAD_ACCESS, Could not access memory.&#8221;</del> <a href="https://codereview.qt-project.org/#change,55946">https://codereview.qt-project.org/#change,55946</a></li>
	</ul>

	<a name="b781fcfc5987fbfdbaf86e1aefb582bb"></a>	<h3>textures:</h3>

	<ul>
		<li><del>black content instead of spinning cubes</del> <a href="https://codereview.qt-project.org/55064">https://codereview.qt-project.org/55064</a></li>
	</ul>

	<a name="a52256b9d64744a95a5e4910df4dd8a4"></a>	<h3>hellowindow:</h3>

	<ul>
		<li>only one out of 4 windows show up</li>
		<li>lots of &#8220;QIOSBackingStore needs to have the same size as its window&#8221;</li>
	</ul>

	<a name="22b02a1d7147a8e412ad719bef6b2ea3"></a>	<h3>paintedwindow:</h3>

	<ul>
		<li>&#8220;QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined&#8221;</li>
		<li><del><span class="caps">ASSERT</span>: &#8220;false&#8221; in file /Users/torarne/dev/qt/5.0/qtbase/examples/opengl/paintedwindow/paintedwindow.cpp, line 118</del> 
    <a href="https://codereview.qt-project.org/55081">https://codereview.qt-project.org/55081</a></li>
	</ul>

	<a name="6bdd03c8a60dc87fbbac833d009fa478"></a>	<h3>books:</h3>

	<ul>
		<li>&#8220;This demo needs the <span class="caps">SQLITE</span> driver&#8221;</li>
	</ul>

	<a name="c49be2cb66e64a8f46fd56406ec64ea3"></a>	<h3>drilldown, cachedtable, relationaltablemodel, sqlwidgetmapper, masterdetail, querymodel, tablemodel:</h3>

	<ul>
		<li>&#8220;QSqlDatabase: <span class="caps">QSQLITE</span> driver not loaded&#8221;</li>
	</ul>

	<a name="858b524258bfc6d4fd8244fea0d41925"></a>	<h3>mandelbrot:</h3>

	<ul>
		<li>resizes on startup</li>
	</ul>

	<a name="6e500550dd9a9414fb3da69f05f945f9"></a>	<h3>knobs, fingerpaint:</h3>

	<ul>
		<li>halts when using system gestures</li>
	</ul>

	<a name="952fabbc8917e7bb5b714e0ad662ddf3"></a>	<h3>states:</h3>

	<ul>
		<li>layout way too big for screen, retina issue?</li>
	</ul>

	<a name="8318373248422386837f759c4ac55ece"></a>	<h3>sub-attaq:</h3>

	<ul>
		<li>popup menu shows up in strange locaton and can&#8217;t be clicked</li>
	</ul>

	<a name="1eb4a85c262fb162bc79feee43b7dd4a"></a>	<h3>screenshot:</h3>

	<ul>
		<li>&#8220;QPixmap::scaled: Pixmap is a null pixmap&#8221;</li>
	</ul>

	<a name="d9ba91e74ff8d81bcb24340db9c61236"></a>	<h3>systray:</h3>

	<ul>
		<li>no system tray detected (<span class="caps">TODO</span>: use notification center)</li>
	</ul>

	<a name="e727524c4b36a59fa50e04bb85b90967"></a>	<h3>classwizard:</h3>

	<ul>
		<li>interaction between line edits not ideal, have to tap twice
    something we have to look at</li>
	</ul>

	<a name="371ee6ae0339b745e0087939bff46ae5"></a>	<h3>draggabletext, fridgemagnets, puzzle:</h3>

	<ul>
		<li>can&#8217;t drag</li>
	</ul>

	<a name="95aab9e3721a7b8e897e296eb76cc18f"></a>	<h3>lighting:</h3>

	<ul>
		<li>shadow is clipped</li>
	</ul>

	<a name="6f2ec09ddda3a728f9eb8bb5cae91938"></a>	<h3>fademessage:</h3>

	<ul>
		<li>missing fade button</li>
	</ul>

	<a name="00d83b908cf9fb13b736e77cd2f5c720"></a>	<h3>chip:</h3>

	<ul>
		<li>dragging chips confused with selection</li>
	</ul>

	<a name="24fbcf0a692fba73d52d8192393f24a1"></a>	<h3>elasticnodes:</h3>

	<ul>
		<li>very hard to drag nodes</li>
		<li>seem to be missing touch ends sometimes. node will stay locked as
    if the finger is still pressing the screen.</li>
	</ul>

	<a name="e57a1c717c4f566fb816ed8f10d7531a"></a>	<h3>dragdroprobot:</h3>

	<ul>
		<li>can&#8217;t drag colors</li>
	</ul>

	<a name="221801646a8289fd565e13ba1d820131"></a>	<h3>flowlayout:</h3>

	<ul>
		<li>text not inside window and too big</li>
		<li>text does not move properly when window is moved</li>
	</ul>

	<a name="ddee7663c8b8d6ec29e3c0562781823b"></a>	<h3>anchorlayout:</h3>

	<ul>
		<li>child graphics-view items completely busted</li>
	</ul>

	<a name="4fbd27abc8c6354d3c604a06ae9cd379"></a>	<h3>dockwidgets:</h3>

	<ul>
		<li>text becomes gray boxes when dragging container</li>
	</ul>

	<a name="dc7a69e585ffde7754a7e8c98633f691"></a>	<h3>mainwindow:</h3>

	<ul>
		<li>&#8220;void QWidgetPrivate::setMask_sys(const QRegion &amp;): Not supported on ios.&#8221;</li>
	</ul>

	<a name="174418230768accad9ba0517ded10261"></a>	<h3>affine, composition, deform:</h3>

	<ul>
		<li><del>drawing artifacts (black boxes) in UI</del> <a href="https://codereview.qt-project.org/#change,55192">https://codereview.qt-project.org/#change,55192</a></li>
	</ul>

	<a name="2af87f65708cc5671c9b8907e57a0da4"></a>	<h3>styles:</h3>

	<ul>
		<li><del>severe drawing artifacts for NorwegianWood (custom) style</del> <a href="https://codereview.qt-project.org/#change,55192">https://codereview.qt-project.org/#change,55192</a></li>
	</ul>]]></description>
      <dc:subject>Qt_for_iOS_known_issues</dc:subject>
      <dc:date>2013-05-15T07:08:07+00:00</dc:date>
    </item>

    <item>
      <title>Qt510beta1KnownIssues</title>
      <link>http://qt&#45;project.org/wiki/Qt510beta1KnownIssues</link>
      <guid>http://qt&#45;project.org/wiki/Qt510beta1KnownIssues</guid>
      <description><![CDATA[<a name="df150c77caaf1e34e6fa3a926689ed0f"></a>	<h1>Known Issues &#8211; Qt 5.1.0 beta1</h1>

	<a name="5698ff75d7995162c5f984380cc62c12"></a>	<h2>All platforms</h2>

	<ul>
		<li>Check that your system meets <a href="http://qt-project.org/doc/qt-5.0/qtdoc/requirements.html">Qt&#8217;s requirements</a> <em>[qt-project.org]</em>.</li>
		<li><span class="caps">QTBUG</span>-31104: Some example applications are broken</li>
		<li><span class="caps">QTBUG</span>-31107: Standalone assistant is missing qtquickcontrols, qtserialport, qtsensors documentation</li>
	</ul>

	<a name="edc9f0a5a5d57797bf68e37364743831"></a>	<h2>Linux</h2>

	<ul>
		<li><span class="caps">QTBUG</span>-31132: Many keyboard shortcuts in e.g. Qt Creator do not work
	<ul>
		<li>Workaround: No immediate one. A source code fix is at <a href="https://codereview.qt-project.org/#change,56091">https://codereview.qt-project.org/#change,56091</a></li>
	</ul></li>
	</ul>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h2>Windows</h2>

	<ul>
		<li><span class="caps">QTBUG</span>-29974: PostgreSQL plugin is missing on Windows
	<ul>
		<li>No workaround yet. Work ongoing.</li>
	</ul></li>
	</ul>

	<ul>
		<li><span class="caps">QTBUG</span>-30212: [MinGW] Application crashes when virtual call invoked on an object which uses both virtual and non-virtual inheritance
	<ul>
		<li>Workaround: Manually update toolchain to e.g.  <a href="http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev11.7z/download">x32-4.7.2-release-posix-sjlj-rev11.7z</a> <em>[sourceforge.net]</em></li>
	</ul></li>
	</ul>

	<ul>
		<li>QWidget::TabletEvent is not working, since 5.0.0.</li>
	</ul>

	<a name="f895df5b37498f660cde1a2388d7af8b"></a>	<h2>Mac OS X</h2>

	<ul>
		<li><span class="caps">QTBUG</span>-28336: Mac: linker warns about non-existing directories
	<ul>
		<li>Workaround: Not needed, the produced binaries work.</li>
	</ul></li>
	</ul>

	<a name="e84e30b9390cdb64db6db2c9ab87846d"></a>	<h2>Android</h2>

	<ul>
		<li><span class="caps">QTBUG</span>-30848: Missing dependency on libQt5QuickParticles.so
	<ul>
		<li>Work-around for apps that use Particles import in <span class="caps">QML</span>:
	<ol>
		<li>Run app once</li>
		<li>Go into &#8220;Run&#8221; Settings in project, open &#8220;Package Configurations&#8221; and click on the &#8220;Libraries&#8221; tab</li>
		<li>Tick the Qt5QuickParticles library.</li>
	</ol></li>
	</ul></li>
	</ul>

	<ul>
		<li><span class="caps">QTBUG</span>-30861: Missing dependency on libQt5MultimediaQuick_p.so
	<ul>
		<li>Work-around for apps that use Multimedia import in <span class="caps">QML</span>:
	<ol>
		<li>Run app once</li>
		<li>Go into &#8220;Run&#8221; Settings in project, open &#8220;Package Configurations&#8221; and click on the &#8220;Libraries&#8221; tab</li>
		<li>Tick the Qt5MultimediaQuick_p library.</li>
	</ol></li>
	</ul></li>
	</ul>

	<ul>
		<li><span class="caps">QTBUG</span>-30553: Mouse cursor visible when running against Ministro
	<ul>
		<li>Work-around:
	<ol>
		<li>Set the environment variable QT_QPA_EGLFS_HIDECURSOR to 1.</li>
	</ol></li>
	</ul></li>
	</ul>

	<a name="1bdf605991920db11cbdf8508204c4eb"></a>	<h2>iOS</h2>

	<p>See <a href="http://qt-project.org/wiki/Qt_for_iOS_known_issues">Qt for iOS known issues</a> <em>[qt-project.org]</em></p>]]></description>
      <dc:subject>Qt510beta1KnownIssues</dc:subject>
      <dc:date>2013-05-15T06:39:11+00:00</dc:date>
    </item>

    <item>
      <title>PySideDocumentation</title>
      <link>http://qt&#45;project.org/wiki/PySideDocumentation</link>
      <guid>http://qt&#45;project.org/wiki/PySideDocumentation</guid>
      <description><![CDATA[<p><strong>English</strong> <a href="http://qt-project.org/wiki/PySideDocumentationJapanese">日本語</a><br />
<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#165b6b0f1729a307f36e64eab2ca4d33">PySide Documentation</a><ul>
<li><a href="#ce9716d34f86944595a80a7f1a547630">Getting Started with PySide</a><ul>
<li><a href="#81600d24ccfd3cbd0bae3c70e8b66150">API Reference Manuals</a></li>
<li><a href="#be856c1dd3a7f6548fe94ea6319692c3">Tutorials and Example Applications</a></li></ul>
</li>
<li><a href="#5be5dacb948a23c02e25c37df1efd5c2">Getting Started with QtQuick/QML</a><ul>
<li><a href="#134de42a3297c6d05a2cea8b91ffb6ec">QtQuick/QML Topics</a></li></ul>
</li>
<li><a href="#b55be9ca39492fbca1b37c6653e22f27">Getting Started with QtCreator</a></li>
<li><a href="#895619647aece3bdd5533deeaa23ca51"> Getting Started with QtWebkit</a></li>
<li><a href="#704d2ca247b8787c6738c5a47d3f98ec">Getting Started with PySide Mobility</a></li>
<li><a href="#b2443893748b16f726e751e1109d863f">Topics in Writing PySide and Qt Apps</a></li>
<li><a href="#27c6dd1d8e141a015e7c8191490941ca">Qt4 to Qt5</a></li>
<li><a href="#d67b823f758108fc2fc28e3abd6d2290">Distribute PySide Applications</a></li></ul>
</li></ul>
</div></p>

	<a name="165b6b0f1729a307f36e64eab2ca4d33"></a>	<h1>PySide Documentation</h1>

	<p>Welcome to the PySide documentation wiki page.</p>

	<a name="ce9716d34f86944595a80a7f1a547630"></a>	<h2>Getting Started with PySide</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Get-PySide">Get PySide</a></li>
		<li><a href="http://qt-project.org/wiki/Setting_up_PySide">Setting Up PySide</a></li>
		<li><a href="http://qt-project.org/wiki/Hello-World-in-PySide">Hello World:  Your First PySide Application</a></li>
		<li><a href="http://qt-project.org/wiki/Hello-World-in-PySide-and-QtQuick">Hello World:  Your First PySide Application Using QtQuick/QML</a></li>
		<li><a href="http://qt-project.org/wiki/PySide_Pitfalls">Avoid These Common Pitfalls</a></li>
		<li><a href="http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt">Differences Between PySide and PyQt</a></li>
	</ul>

	<a name="81600d24ccfd3cbd0bae3c70e8b66150"></a>	<h3><span class="caps">API</span> Reference Manuals</h3>

	<ul>
		<li><a href="http://srinikom.github.com/pyside-docs/">PySide 1.0.7 <span class="caps">API</span></a> <em>[srinikom.github.com]</em></li>
		<li><a href="https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html">PySide 1.1.0 <span class="caps">API</span></a> <em>[deptinfo-ensip.univ-poitiers.fr]</em></li>
	</ul>

	<a name="be856c1dd3a7f6548fe94ea6319692c3"></a>	<h3>Tutorials and Example Applications</h3>

	<ul>
		<li><a href="http://qt-project.org/wiki/PySide_Tutorials">PySide Tutorials</a></li>
		<li><a href="http://qt-project.org/wiki/PySide_Example_Applications">PySide Example Applications</a></li>
	</ul>

	<a name="5be5dacb948a23c02e25c37df1efd5c2"></a>	<h2>Getting Started with QtQuick/QML</h2>

	<ul>
		<li><a href="http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html">Introduction to the <span class="caps">QML</span> language</a> <em>[doc.qt.nokia.com]</em></li>
		<li><a href="http://qt-project.org/wiki/Signals_and_Slots_in_PySide">Understanding Signals and Slots in PySide</a></li>
		<li><a href="http://qt-project.org/wiki/PySide-QtQuick-Tutorials">PySide QtQuick and <span class="caps">QML</span> Tutorials</a></li>
	</ul>

	<a name="134de42a3297c6d05a2cea8b91ffb6ec"></a>	<h3>QtQuick/QML Topics</h3>

	<ul>
		<li><a href="http://qt-project.org/wiki/PySide-and-QML-Playground">PySide and QtQuick/QML Playground</a></li>
		<li><a href="http://qt.gitorious.org/pyside/pyside-examples/trees/HEAD/examples/declarative">Declarative examples in git</a> <em>[qt.gitorious.org]</em></li>
		<li><a href="http://qt-project.org/wiki/Auto-generating-QObject-from-template-in-PySide">Auto Generating QObject From Template in PySide</a></li>
		<li><a href="http://qt-project.org/wiki/Connecting_QML_Signals_in_PySide">Connecting <span class="caps">QML</span> signals in PySide</a></li>
		<li><a href="http://qt-project.org/wiki/Defining-and-using-constants-from-PySide-in-QML">Defining and using constants from PySide in <span class="caps">QML</span></a></li>
		<li><a href="http://qt-project.org/wiki/Filling-and-reading-QML-UI-forms-from-Python">Filling and reading <span class="caps">QML</span> UI forms from Python</a></li>
		<li><a href="http://qt-project.org/wiki/Multi-selection-lists-in-Python-with-QML">Multi Selection Lists in Python with <span class="caps">QML</span></a></li>
		<li><a href="http://qt-project.org/wiki/Updating-QML-content-from-Python-threads">Updating <span class="caps">QML</span> content from Python threads</a></li>
		<li><a href="http://qt-project.org/wiki/Using_Qt_Properties_in_PySide">Using Qt Properties in PySide</a></li>
		<li><a href="http://qt-project.org/wiki/Utilizing-Qt-Quick-Colibri-in-PySide">Utilizing Qt Quick Colibri in PySide</a></li>
	</ul>

	<a name="b55be9ca39492fbca1b37c6653e22f27"></a>	<h2>Getting Started with QtCreator</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/QtCreator_and_PySide">How to use Qt Creator to design Graphical Interfaces for PySide</a></li>
	</ul>

	<a name="895619647aece3bdd5533deeaa23ca51"></a>	<h2> Getting Started with QtWebkit</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Using-QtWebKit-and-QML-with-PySide">Using QtWebKit and <span class="caps">QML</span> with PySide</a></li>
	</ul>

	<a name="704d2ca247b8787c6738c5a47d3f98ec"></a>	<h2>Getting Started with PySide Mobility</h2>

	<ul>
		<li><a href="http://web.archive.org/web/20120530072549/http://www.pyside.org/docs/pyside-mobility/">PySide Mobility 0.2.2 Documentation</a> <em>[web.archive.org]</em> (From Internet Archive)
	<ul>
		<li>The old link appears lost:  <a href="http://www.pyside.org/docs/pyside-mobility">http://www.pyside.org/docs/pyside-mobility</a></li>
	</ul></li>
		<li><a href="http://qt.gitorious.org/pyside/pyside-examples/trees/HEAD/mobility">PySide Mobility examples in git</a> <em>[qt.gitorious.org]</em></li>
		<li><a href="http://qt-project.org/wiki/Using-QtMobility-sensors-and-QML-from-PySide">Using QtMobility sensors and <span class="caps">QML</span> from PySide</a></li>
		<li>PySide Mobility Source Code Repositories:
	<ul>
		<li><a href="https://qt.gitorious.org/pyside/pyside-mobility">Gitorious</a> <em>[qt.gitorious.org]</em></li>
		<li><a href="https://github.com/PySide/Mobility">GitHub</a> <em>[github.com]</em></li>
	</ul></li>
	</ul>

	<a name="b2443893748b16f726e751e1109d863f"></a>	<h2>Topics in Writing PySide and Qt Apps</h2>

	<ul>
		<li><a href="http://lynxline.com/superhybrids-part-2-now-qt-pyside/">SuperHybrids part 2, now Qt + PySide</a> <em>[lynxline.com]</em></li>
	</ul>

	<a name="27c6dd1d8e141a015e7c8191490941ca"></a>	<h2>Qt4 to Qt5</h2>

	<ul>
		<li><a href="http://www.kdab.com/porting-from-qt-4-to-qt-5/">Porting from Qt 4 to Qt 5</a> <em>[kdab.com]</em></li>
	</ul>

	<a name="d67b823f758108fc2fc28e3abd6d2290"></a>	<h2>Distribute PySide Applications</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Packaging_PySide_applications_on_Windows">Packaging PySide Applications on Windows</a></li>
	</ul>]]></description>
      <dc:subject>PySideDocumentation</dc:subject>
      <dc:date>2013-05-14T15:08:31+00:00</dc:date>
    </item>

    <item>
      <title>Compiling ICU</title>
      <link>http://qt&#45;project.org/wiki/Compiling&#45;ICU</link>
      <guid>http://qt&#45;project.org/wiki/Compiling&#45;ICU</guid>
      <description><![CDATA[<p>Step-by-step instructions thow to compile your own <span class="caps">ICU</span>:</p>

	<p><a href="http://qt-project.org/wiki/Compiling-ICU-with-MinGW">Compiling <span class="caps">ICU</span> with MinGW</a><br />
<a href="http://qt-project.org/wiki/Compiling-ICU-with-MSVC">Compiling <span class="caps">ICU</span> with <span class="caps">MSVC</span></a></p>]]></description>
      <dc:subject>Compiling ICU</dc:subject>
      <dc:date>2013-05-14T10:20:51+00:00</dc:date>
    </item>

    <item>
      <title>Building Qt 5 from Git</title>
      <link>http://qt&#45;project.org/wiki/Building&#45;Qt&#45;5&#45;from&#45;Git</link>
      <guid>http://qt&#45;project.org/wiki/Building&#45;Qt&#45;5&#45;from&#45;Git</guid>
      <description><![CDATA[<p><strong>English</strong> <a href="http://qt-project.org/wiki/Building-Qt-5-from-Git-SimplifiedChinese">简体中文</a> <a href="http://qt-project.org/wiki/Building-Qt-5-from-Git-Bulgarian">Български</a> <a href="http://qt-project.org/wiki/Building-Qt-5-from-Git-French">Français</a> <a href="http://qt-project.org/wiki/Building-Qt-5-from-Git-Russian">Русский</a></p>

<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#56bcccacb35592a3a8b372ac302b46c1">Building Qt 5 from Git</a><ul>
<li><a href="#0b79795d3efc95b9976c7c5b933afce2">Introduction</a></li>
<li><a href="#419cfc02b324dc7d8faefa90ed608fb0">System Requirements</a><ul>
<li><a href="#15e7b6ad3df43ff719f8388ab4afb1cc">Linux/X11</a></li>
<li><a href="#f895df5b37498f660cde1a2388d7af8b">Mac OS X</a></li>
<li><a href="#aea23489ce3aa9b6406ebb28e0cda430">Windows</a></li></ul>
</li>
<li><a href="#b50aae10a392d80cb2253ce34e686ae3">Getting the source code</a></li>
<li><a href="#0cc5cbb2903cf6911ac1b6e3aa032572">Configuring and building</a><ul>
<li><a href="#d4b95ff452aca2c1b14008b02f8dd49b">Building Qt WebKit</a></li></ul>
</li>
<li><a href="#9b987e7ea0273871df1dc3f2655ab563">Installing (Linux / Mac OS X)</a></li>
<li><a href="#0647f0776aed243f58bfec4dd81de863">Cleaning</a></li>
<li><a href="#1dbe9e8c128d0b3cafbeaef20b9082cf">Getting updates</a></li>
<li><a href="#49a18a3f6a578502bd491a3afec45647">Using latest branches in the submodules</a></li>
<li><a href="#80b768b15c3693e345a436b9dc0ea36f">Issues</a><ul>
<li><a href="#edc9f0a5a5d57797bf68e37364743831">Linux</a></li>
<li><a href="#aea23489ce3aa9b6406ebb28e0cda430_0">Windows</a></li></ul>
</li>
<li><a href="#9832a8a505d2bd3352d26e84e88d0218">Questions & Comments</a></li></ul>
</li></ul>
</div>

	<a name="56bcccacb35592a3a8b372ac302b46c1"></a>	<h1>Building Qt 5 from Git</h1>

	<a name="0b79795d3efc95b9976c7c5b933afce2"></a>	<h2>Introduction</h2>

	<p>This article will try to give some hints for checking out the modularized Qt5 from git and getting it built. Please feel free to update this article as things change during development. Raise issues related to the article via: <a href="http://qt-project.org/forums/viewthread/7018">http://qt-project.org/forums/viewthread/7018</a></p>

	<a name="419cfc02b324dc7d8faefa90ed608fb0"></a>	<h2>System Requirements</h2>

	<p>You need git (<strong>&gt;= 1.6.x</strong>) to get the packages.</p>

	<p>To properly configure and build Qt 5 from source you also need Perl (<strong>&gt;=5.14</strong>) and Python (<strong>&gt;=2.6.x</strong>), as well as a working compiler.</p>

	<p>To enable <span class="caps">SSL</span> support in Qt, see: <a href="http://qt-project.org/doc/qt-5.0/qtnetwork/ssl.html">http://qt-project.org/doc/qt-5.0/qtnetwork/ssl.html</a></p>

	<p>For more information regarding platform requirements, see: <a href="http://qt-project.org/doc/qt-5.0/qtdoc/requirements.html">http://qt-project.org/doc/qt-5.0/qtdoc/requirements.html</a></p>

	<a name="15e7b6ad3df43ff719f8388ab4afb1cc"></a>	<h3>Linux/X11</h3>

	<a name="2ef56b46257d579cd896fd78965f85c5"></a>	<h4>Build essentials </h4>

	<a name="1afa23fac2ac274cab5f713098f6b695"></a>	<h5>Ubuntu/Debian:</h5>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>get install build<span class="sy0">-</span>essential perl python git</div></li>
</ol></div></p>

	<p><strong>Note:</strong> Thanks to Gabor Loki, we have a custom <span class="caps">PPA</span> with a meta package &#8220;sedkit-env-webkit&#8221; that installs all required dependencies for the latest Qt/Qt WebKit builds. You can find it here &#8211; <a href="https://launchpad.net/~u-szeged/+archive/sedkit">https://launchpad.net/~u-szeged/+archive/sedkit</a> &#8211; or just add the <span class="caps">PPA</span> by issuing on the console:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>add<span class="sy0">-</span>repository ppa<span class="sy0">:</span>u<span class="sy0">-</span>szeged<span class="sy0">/</span>sedkit <span class="sy0">&amp;&amp;</span> sudo apt<span class="sy0">-</span>get update <span class="sy0">&amp;&amp;</span> sudo apt<span class="sy0">-</span>get install sedkit<span class="sy0">-</span>env<span class="sy0">-</span><a href="http://qt-project.org/doc/QtWebKit.html"><span class="kw5">qtwebkit</span></a></div></li>
</ol></div></p>

	<a name="3958cca3728acae11195a736b96f2512"></a>	<h5>Fedora:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">su <span class="sy0">-</span> <span class="sy0">-</span>c <span class="st0">&quot;yum install perl-version&quot;</span></div></li>
</ol></div></h5>

	<a name="fe77cd0fdd5475879cb272c41454c2c8"></a>	<h5>OpenSUSE:</h5>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo zypper install git<span class="sy0">-</span>core gcc<span class="sy0">-</span>c<span class="sy0">++</span> make</div></li>
</ol></div></p>

	<a name="87182a4776ad7ab837b58941bcfb2f3b"></a>	<h4>Libxcb</h4>

	<p><a href="http://xcb.freedesktop.org/">Libxcb</a> <em>[xcb.freedesktop.org]</em> is now the default window-system backend for platforms based on X11/Xorg, and you should therefore install libxcb and its accompanying packages. Qt5 should build with whatever libxcb version is available in your distro&#8217;s packages (but you may optionally wish to use v1.8 or higher to have threaded rendering support). <a href="http://qt.gitorious.org/qt/qtbase/blobs/stable/src/plugins/platforms/xcb/README">src/plugins/platforms/xcb/README</a> <em>[qt.gitorious.org]</em> lists the required packages.</p>

	<a name="1afa23fac2ac274cab5f713098f6b695"></a>	<h5>Ubuntu/Debian:</h5>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>get install <span class="st0">&quot;^libxcb.*&quot;</span> libx11<span class="sy0">-</span>xcb<span class="sy0">-</span>dev libglu1<span class="sy0">-</span>mesa<span class="sy0">-</span>dev libxrender<span class="sy0">-</span>dev</div></li>
</ol></div></p>

	<a name="930b346064bba65d6e54149c6b3553ae"></a>	<h5>Fedora up to 16:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">su <span class="sy0">-</span> <span class="sy0">-</span>c <span class="st0">&quot;yum install libxcb libxcb-devel xcb-util xcb-util-devel&quot;</span></div></li>
</ol></div></h5>

	<a name="0f4b671dce9fb7ef58a7a6f1f621fe4b"></a>	<h5>Fedora 17+ (xcb-util-renderutil is currently available in updates repository until it goes stable):
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">su <span class="sy0">-</span> <span class="sy0">-</span>c <span class="st0">&quot;yum --enablerepo=updates install libxcb libxcb-devel xcb-util xcb-util-devel xcb-util-*-devel&quot;</span></div></li>
</ol></div></h5>

	<a name="f1418825e6bb59659b7c76dfb3c00c1c"></a>	<h5>OpenSuSE 12.2
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo zypper in xorg<span class="sy0">-</span>x11<span class="sy0">-</span>libxcb<span class="sy0">-</span>devel xcb<span class="sy0">-</span>util<span class="sy0">-</span>devel xcb<span class="sy0">-</span>util<span class="sy0">-</span>image<span class="sy0">-</span>devel xcb<span class="sy0">-</span>util<span class="sy0">-</span>keysyms<span class="sy0">-</span>devel xcb<span class="sy0">-</span>util<span class="sy0">-</span>renderutil<span class="sy0">-</span>devel xcb<span class="sy0">-</span>util<span class="sy0">-</span>wm<span class="sy0">-</span>devel xorg<span class="sy0">-</span>x11<span class="sy0">-</span>devel libxkbcommon<span class="sy0">-</span>devel</div></li>
</ol></div></h5>

	<a name="1e141498ddf371d2bfe68f0b639abcce"></a>	<h5>ArchLinux:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo pacman <span class="sy0">-</span>S <span class="sy0">--</span>needed libxcb xcb<span class="sy0">-</span>proto xcb<span class="sy0">-</span>util xcb<span class="sy0">-</span>util<span class="sy0">-</span>image xcb<span class="sy0">-</span>util<span class="sy0">-</span>wm</div></li>
</ol></div></h5>

	<p>On Chakra Linux, other than packages mentioned for ArchLinux, you need to install package xcb-util-keysyms separately. It&#8217;s available from <span class="caps">CCR</span>.</p>

	<a name="2c8be48c303964c69a84082a6fa92b60"></a>	<h5>Mandriva/ROSA/Unity:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">urpmi <span class="st0">'pkgconfig(xcb)'</span> <span class="st0">'pkgconfig(xcb-icccm)'</span> <span class="st0">'pkgconfig(xcb-image)'</span> <span class="st0">'pkgconfig(xcb-renderutil)'</span> <span class="st0">'pkgconfig(xcb-keysyms)'</span> <span class="st0">'pkgconfig(xrender)'</span></div></li>
</ol></div></h5>

	<a name="4aff84461e846e3bb53ff4a3fbdc404b"></a>	<h4>OpenGL support</h4>

	<p>For Qt Quick 2 a graphics driver with native OpenGL 2.0 support is highly recommended.</p>

	<a name="e0e4fc6213e8b3593495a7260c3a4c2e"></a>	<h4>Accessibility</h4>

	<p>It is recommended to build with accessibility enabled, install <strong>libatspi 2</strong> and <strong>libdbus-1</strong> development packages.</p>

	<a name="7bf66476d66e6e365c7a7431c6b2522c"></a>	<h4>Qt WebKit</h4>

	<p>When you want to compile WebKit, more dependencies need to be satisfied:</p>

	<a name="1afa23fac2ac274cab5f713098f6b695"></a>	<h5>Ubuntu/Debian:</h5>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>get install flex bison gperf libicu<span class="sy0">-</span>dev libxslt<span class="sy0">-</span>dev ruby</div></li>
</ol></div></p>

	<a name="2ad06e7698629744d50475a66b2f109e"></a>	<h5>Fedora:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">su <span class="sy0">-</span> <span class="sy0">-</span>c <span class="st0">&quot;yum install flex bison gperf libicu-devel libxslt-devel ruby&quot;</span></div></li>
</ol></div></h5>

	<a name="597ddd95f8bc86a4082a62fa927155e1"></a>	<h5>OpenSUSE:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo zypper install flex bison gperf libicu<span class="sy0">-</span>devel ruby</div></li>
</ol></div></h5>

	<a name="b6416e370f4290e9b715a8fe0168269d"></a>	<h5>Mandriva/ROSA/Unity:
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">urpmi gperf</div></li>
</ol></div></h5>

	<a name="93198e5515db7a7119e182f8c7b954a5"></a>	<h4>Qt Multimedia</h4>

	<p>You&#8217;ll need at least alsa-lib (<strong>&gt;= 1.0.15</strong>) and gstreamer (<strong>&gt;=0.10.24</strong>, <a href="http://lists.qt-project.org/pipermail/development/2012-November/007916.html">but &lt;1.0 for now</a> <em>[lists.qt-project.org]</em>) with the base-plugins package.</p>

	<a name="f895df5b37498f660cde1a2388d7af8b"></a>	<h3>Mac OS X</h3>

	<p>Install the latest Xcode from the App Store. Verify that your Xcode install is properly set up for command line use:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">xcodebuild <span class="sy0">-</span>version <span class="sy0">&amp;&amp;</span> xcodebuild <span class="sy0">-</span>showsdks</div></li>
</ol></div></p>

	<p>This should give you eg:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Xcode 4.6.1</div></li>
<li class="li1"><div class="de1">Build version 4H512</div></li>
<li class="li1"><div class="de1">OS X SDKs<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;Mac OS X <span class="nu16">10.7</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-</span>sdk macosx10.7</div></li>
<li class="li2"><div class="de2">&nbsp;OS X <span class="nu16">10.8</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-</span>sdk macosx10.8</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">iOS SDKs<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;iOS <span class="nu16">6.1</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-</span>sdk iphoneos6.1</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">iOS Simulator SDKs<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;Simulator <span class="sy0">-</span> iOS <span class="nu16">5.0</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-</span>sdk iphonesimulator5.0</div></li>
<li class="li1"><div class="de1">&nbsp;Simulator <span class="sy0">-</span> iOS <span class="nu16">6.1</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-</span>sdk iphonesimulator6.1</div></li>
</ol></div></p>

	<p>You can verify that the right Xcode is being used by running:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">xcode<span class="sy0">-</span>select <span class="sy0">--</span>print<span class="sy0">-</span>path</div></li>
</ol></div></p>

	<p>If this points to /Developer you&#8217;re probably using an older Xcode version. Switch to the latest one by running:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo xcode<span class="sy0">-</span>select <span class="sy0">--</span><span class="kw1">switch</span> <span class="sy0">/</span>Applications<span class="sy0">/</span>Xcode.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>Developer</div></li>
</ol></div></p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h3>Windows</h3>

	<a name="2aabd4204979ac71b377f8e61b3c5176"></a>	<h4>Windows Graphics Drivers</h4>

	<p>QML2 requires OpenGL 2.1 or higher or Open GL ES 2.0 to work.</p>

	<p>In Windows, two options are available:
	<ol>
		<li>Use the <a href="http://code.google.com/p/angleproject/"><span class="caps">ANGLE</span>-library</a> <em>[code.google.com]</em> to translate OpenGL calls into <em>DirectX</em> (default)</li>
		<li>Use the native OpenGL driver for your graphics card</li>
	</ol></p>

	<p>A copy of <span class="caps">ANGLE</span> is bundled in Qt 5. To use Option 1, you need to install the <a href="http://msdn.microsoft.com/en-us/directx/default.aspx">DirectX <span class="caps">SDK</span></a> <em>[msdn.microsoft.com]</em> (Note: Starting from Windows Kit 8, this is included in the Windows <span class="caps">SDK</span>).</p>

	<p>To use Option 2, you need to ensure that your graphics card driver supports OpenGL 2.1 or higher (Note: The stock Windows driver only supports OpenGL 1.1, which is insufficient), and pass `-opengl desktop&#8217; to configure.exe.</p>

	<a name="3abaa03c2534c42d4221800db5020e04"></a>	<h4>Supported Compilers on Windows</h4>

	<ul>
		<li><em>Windows <span class="caps">SDK</span> 7.1 with Visual Studio 2010</em> (recommended). As of 16.3.2012, installing the <span class="caps">SDK</span> requires installing the following packages in this order (see readme.html provided with the service pack):</li>
	</ul>

	<ol>
		<li>Install Visual Studio 2010</li>
		<li>Install Windows <span class="caps">SDK</span> 7.1. See also <a href="http://qt-project.org/wiki/Cannot_Install_Windows_SDK">Cannot_Install_Windows_SDK</a> page.</li>
		<li>Install Visual Studio 2010 SP1</li>
		<li>Install Visual C++ 2010 SP1 Compiler Update for the Windows <span class="caps">SDK</span> 7.1</li>
	</ol>

	<ul>
		<li><em>Windows <span class="caps">SDK</span> 7 with Visual Studio 2008</em></li>
		<li><em>Windows Kit 8 with Visual Studio 2012</em></li>
		<li>MinGW-w64 based compiler with <em>g++</em> version 4.7 or higher (e.g. <a href="http://sourceforge.net/projects/mingwbuilds/">MinGW-builds</a> <em>[sourceforge.net]</em>, see also <a href="http://qt-project.org/wiki/MinGW-64-bit">MinGw-64-bit</a> <em>[qt-project.org]</em> ).</li>
	</ul>

	<a name="2310f9c9809ef89d385069d516d3bb5a"></a>	<h4>Windows Build environment</h4>

	<p>We recommend creating a command prompt that provides the build environment (see the  <a href="http://qt.gitorious.org/qt-creator/qt-creator/blobs/master/README">Qt Creator <span class="caps">README</span></a> <em>[qt.gitorious.org]</em> ). In this environment, <em>Python</em> (e.g. <em>Active Python 2.7</em> later) and <em>Perl</em> (e.g. <em>Active State Perl 5.12</em> or later) should be in the <em><span><span class="caps">PATH</span></span></em>.<br />
Get Perl from: <a href="http://www.activestate.com/activeperl/downloads">http://www.activestate.com/activeperl/downloads</a> <em>[activestate.com]</em><br />
Get Python from: <a href="http://www.python.org/download/releases/">http://www.python.org/download/releases/</a> <em>[python.org]</em><br />
Get Ruby from: <a href="http://www.rubyinstaller.org/">http://www.rubyinstaller.org/downloads/</a> <em>[rubyinstaller.org]</em></p>

	<p><strong>Hint</strong>: Make sure that <em>Perl</em>  is added to the path in front of  <em>git</em> since that ships an outdated version (<em>Perl</em> 5.8),  which will cause the scripts to fail.</p>

	<p>Multicore building: To speed up building when using <em>nmake</em>, the compiler can be instructed to use all available <span class="caps">CPU</span> cores in one of the following ways:
	<ul>
		<li>Pass the option <em>-MP</em> to Qt&#8217;s <em>configure</em></li>
		<li>Set the environment variable <em>CL</em> (specifying Visual Studio compiler options) to <em>/MP</em> (On the command line: <code>set CL=/MP</code>)</li>
		<li>Use the tool <a href="http://qt-project.org/wiki/jom">jom</a> <em>[qt-project.org]</em> instead of nmake. Note however, that it has issues with module interdependencies, which can cause builds to fail.</li>
	</ul></p>

	<a name="57137b975803a593b4b2b44d7a4c0665"></a>	<h4><span class="caps">ICU</span> on Windows</h4>

	<p>Qt 5 can make use of the <a href="http://site.icu-project.org/"><span class="caps">ICU</span></a> <em>[site.icu-project.org]</em> library for <span class="caps">UNICODE</span> and Globalization support. This is <strong>required</strong> for building Qt WebKit. You can use precompiled versions of <span class="caps">ICU</span> with a Visual Studio 2010 dependency from the website, or <a href="Compiling-ICU">compile <span class="caps">ICU</span> on your own</a> .</p>

	<p>At compile time, the absolute paths of <em>include</em> and <em>lib</em> folders of the <span class="caps">ICU</span> installation must be appended to <em><span class="caps">INCLUDE</span></em> and <em><span class="caps">LIB</span></em> environment variables after calling the setup script of the Windows <span class="caps">SDK</span>.</p>

	<p>At run-time, the <span class="caps">ICU</span> <span class="caps">DLL</span>s need to be found. This can be achieved by copying the <span class="caps">DLL</span>s to the application folder or adding the <em>bin</em> folder of the    <span class="caps">ICU</span> installation to the <em><span class="caps">PATH</span></em>  environment variable.</p>

	<a name="b50aae10a392d80cb2253ce34e686ae3"></a>	<h2>Getting the source code</h2>

	<p>First clone the top-level Qt 5 git repository:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qt5.git qt5</span></div></li>
</ol></div></p>

	<p>or (if you&#8217;re behind a firewall and want to use the https protocol):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone https<span class="sy0">:</span><span class="co1">//git.gitorious.org/qt/qt5.git qt5</span></div></li>
</ol></div></p>

	<p>Then check out the target branch (see Branch-Guidelines ):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">cd qt5</div></li>
<li class="li1"><div class="de1">git checkout stable</div></li>
</ol></div></p>

	<p>Following the <a href="http://qt.gitorious.org/qt/qt5/blobs/stable/README.git"><span class="caps">README</span>.git</a> <em>[qt.gitorious.org]</em> &#8211; file we initialize the repository using the script <em>init-repository</em> which  clones the various sub-modules of Qt 5. Relevant options:
	<ul>
		<li><code>&#45;&#45;no-webkit</code> : Consider skipping qtwebkit by passing this option. This module is quite big, takes a long time to compile and if often a source of compile errors, so it is recommend to only download it if you intend to use it.  You can always re-run init-repository later on to add it.</li>
		<li><code>&#45;&#45;http</code> : Pass this option if you&#8217;re behind a firewall.</li>
		<li><code>&#45;&#45;codereview-username &lt;Jira/Gerrit username&gt;</code> : If you plan to contribute to Qt, you should specify your  <a href="http://qt-project.org/wiki/Gerrit_Introduction">codereview username</a> so that the git remotes are properly set up.</li>
	</ul></p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">cd qt5</div></li>
<li class="li1"><div class="de1">perl init<span class="sy0">-</span>repository</div></li>
</ol></div></p>

	<a name="0cc5cbb2903cf6911ac1b6e3aa032572"></a>	<h2>Configuring and building</h2>

	<p>The Qt5 build system should be fairly resilient against any &#8220;outside distractions&#8221; &#8211; it shouldn&#8217;t matter whether you have other Qt versions in <span class="caps">PATH</span>, and <span class="caps">QTDIR</span> is entirely ignored. However, make sure that you have no qmake-specific environment variables like <span class="caps">QMAKEPATH</span> or <span class="caps">QMAKEFEATURES</span> set, and the qmake -query output does not refer to any other Qt versions ($HOME/.config/Trolltech/QMake.conf should be empty).</p>

	<p>Configure the build (from top level dir). Disabling tests and examples will greatly speed up compilation:</p>

	<p>For Linux/Mac OS X:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>configure <span class="sy0">-</span>developer<span class="sy0">-</span>build <span class="sy0">-</span>opensource <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake tests</div></li>
</ol></div></p>

	<p>For Windows:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure <span class="sy0">-</span>developer<span class="sy0">-</span>build <span class="sy0">-</span>opensource <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake tests</div></li>
</ol></div></p>

	<p>The <code>-developer-build</code> options export more symbols than in a traditional Qt build in order to allow more classes and functions to be unit tested. It also defaults to a &#8216;debug&#8217; build, and installs the binaries in the current directory, avoiding the need for &#8216;make install&#8217;. &#8216;-opensource&#8217; sets the license to be <span class="caps">LGPL</span> 2.1. The <code>-nomake examples</code> and <code>-nomake tests</code> parameters make sure examples and tests aren&#8217;t compiled by default. You can always decide to compile them later by hand.</p>

	<ul>
		<li>Hint1: On Linux you should also pass <code>-no-gtkstyle</code>. This is because on a number of systems (at least <span class="caps">SUSE</span> and Gentoo) <code>pkg-config &#8212;cflags gtk+-2.0</code> actually returns paths that include the system Qt 4.x include directories.</li>
	</ul>

	<ul>
		<li>Hint2: You can add <code>-confirm-license</code> to get rid of the question whether you agree to the license.</li>
	</ul>

	<ul>
		<li>Hint3: On Windows, you might not be able to build if <code>sh.exe</code> is in your <em><span><span class="caps">PATH</span></span></em> (for example due to a <em>git</em> or <em>msys</em> installation). Such an error is indicated by <code>qt5-srcqtbasebinqmake.exe: command not found</code> and alike. In this case, make sure that <code>sh.exe</code> is <em>not</em> in your path. You will have to re-configure if your installation is already configured.</li>
	</ul>

	<p>Now trigger the build by running:</p>

	<p>For Linux / Mac OS X:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">make <span class="sy0">-</span>j <span class="nu0">4</span></div></li>
</ol></div></p>

	<p>For Windows (<span class="caps">MSVC</span>), choose one of the following, depending on your setup/environment:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">nmake</div></li>
<li class="li1"><div class="de1">jom</div></li>
<li class="li1"><div class="de1">mingw32<span class="sy0">-</span>make</div></li>
</ol></div></p>

	<p>Or only build a specific module, e.g. declarative, and modules it depends on:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">make module<span class="sy0">-</span>qtdeclarative</div></li>
</ol></div></p>

	<a name="d4b95ff452aca2c1b14008b02f8dd49b"></a>	<h3>Building Qt WebKit</h3>

	<p>Linux, Mac</p>

	<p>The tools <em>bison</em>, <em>flex</em>, <em>gperf</em> and <em>ruby</em> are required for building.</p>

	<p>Windows</p>

	<p><a href="http://trac.webkit.org/wiki/BuildingQtOnWindows">WebKit.org</a> <em>[trac.webkit.org]</em> has instructions for building WebKit on Windows. <a href="http://site.icu-project.org/"><span class="caps">ICU</span></a> <em>[site.icu-project.org]</em> is required for building.</p>

	<p>The tools <em>bison</em>, <em>flex</em> and <em>gperf</em> which are required for building are provided for convenience in the folder <em>gnuwin32\bin</em>. If you are using shadow builds, you must add this directory to your <code><span class="caps">PATH</span></code>, else no special actions need to be done manually in order to use them.</p>

	<p>In addition you need to install <a href="http://www.ruby-lang.org/">Ruby</a> <em>[ruby-lang.org]</em></p>

	<a name="9b987e7ea0273871df1dc3f2655ab563"></a>	<h2>Installing (Linux / Mac OS X)</h2>

	<ul>
		<li><strong>Note:</strong> Installation is only needed if you haven&#8217;t used the configure options <code>-developer-build</code> or <code>-prefix &#8220;<span><span class="caps">PWD</span></span>/qtbase&#8221;</code>. Otherwise you can just use Qt from the build directory.</li>
	</ul>

	<p>To install, run</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<a name="0647f0776aed243f58bfec4dd81de863"></a>	<h2>Cleaning</h2>

	<p>To get a <strong>really</strong> clean tree use:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git submodule <span class="kw2">foreach</span> <span class="sy0">--</span>recursive <span class="st0">&quot;git clean -dfx&quot;</span></div></li>
</ol></div></p>

	<p>since make confclean no longer works from the top-level of the repo.</p>

	<a name="1dbe9e8c128d0b3cafbeaef20b9082cf"></a>	<h2>Getting updates</h2>

	<p>To update both the qt5.git repo as well as the submodules to the list of revisions that are known to work, run<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git pull</div></li>
<li class="li1"><div class="de1">git submodule sync</div></li>
<li class="li1"><div class="de1">git submodule update <span class="sy0">--</span>recursive</div></li>
</ol></div></p>

	<p>If you are planning to do nightly builds, consider using the script <em>qt5_tool</em> that lives in <em>qtrepotools/bin</em>. It provides options for updating the repository, cleaning and building. For example, <code>qt5_tool -u -c -b</code> can be used to  clean, update and build.  <code>qt5_tool -p -c &#8211; b</code> would be used to pull all modules to the head of their master branches.</p>

	<p>Depending upon what changed in the source since it was last updated you might have to run configure again. To be really sure everything gets built, you can run clean first, then configure and make.</p>

	<ul>
		<li><strong>Hint1:</strong> <code>git submodule update</code> does a checkout in submodules, potentially hiding any local commits you&#8217;ve done! If the latter happened to you (and you haven&#8217;t been working with branches anyhow), <code>git reflog</code> is your friend &#8230;.</li>
		<li><strong>Hint2:</strong> When creating scripts for updates on Windows, note that <code>git clean</code> often fails if some process locks a file or folder.</li>
	</ul>

	<a name="49a18a3f6a578502bd491a3afec45647"></a>	<h2>Using latest branches in the submodules</h2>

	<p>By default the checkout will not contain the latest stable/dev branches of each individual submodule repository, but a combination of versions that are known to work together. If you want to get the absolute latest stuff you can do so on a per-module basis, e.g.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">cd qtdeclarative</div></li>
<li class="li1"><div class="de1">git fetch</div></li>
<li class="li1"><div class="de1">git checkout stable origin<span class="sy0">/</span>stable</div></li>
</ol></div></p>

	<p>or use qt5_tool to update all repositories:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>qtrepotools<span class="sy0">/</span>bin<span class="sy0">/</span>qt5_tool <span class="sy0">-</span>p</div></li>
</ol></div></p>

	<p>However, there&#8217;s a good chance that compilation will fail due to incompatible versions of submodules! You might want to ask other persons actively working on a module how to resolve these incompatibilities.</p>

	<a name="80b768b15c3693e345a436b9dc0ea36f"></a>	<h2>Issues</h2>

	<a name="edc9f0a5a5d57797bf68e37364743831"></a>	<h3>Linux</h3>

	<a name="412d0ee7a64c637f250611057b3f089b"></a>	<h4>configure fails with &#8220;No <span class="caps">QPA</span> platform plugin enabled!&#8221; (Linux)</h4>

	<p>You should install the libxcb and it&#8217;s accompanying packages, see &#8216;System Requirements&#8217;.</p>

	<a name="620961fe8237718f0649e26ad4244fd6"></a>	<h4>configure fails with errors like &#8220;cannot stat file &#8230;&#8221;</h4>

	<p>Your perl version is too old, Qt 5 beta1 needs at least 5.14.</p>

	<a name="31a4415a68a16e525f1c9eee5a7803fb"></a>	<h4>qmlscene segfaults &#8220;Cannot create platform GL context, none of <span class="caps">GLX</span>, <span class="caps">EGL</span>, DRI2 is enabled&#8221; (Linux)</h4>

	<p>Try installing the libx11-xcb-dev package:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>get install libx11<span class="sy0">-</span>xcb<span class="sy0">-</span>dev</div></li>
</ol></div></p>

	<p>afterwards you have to re-run configure and force qtbase/src/plugins/platforms/xcb to recompile.</p>

	<a name="5fde07c989c8732b1f48c0acb8ce5dcd"></a>	<h4>WebKit doesn&#8217;t compile, missing <span class="caps">ICU</span></h4>

	<p>Currently there is no configure time check for <span class="caps">ICU</span>, so install it through the package manager through</p>

	<a name="33cf1c4fbb1a36146839478c3f142f40"></a>	<h4>on Ubuntu/Debian:</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo apt<span class="sy0">-</span>get install libicu<span class="sy0">-</span>dev</div></li>
</ol></div></p>

	<a name="d63b25c75ef731139a758be04db3c32f"></a>	<h4>on Fedora:</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">su <span class="sy0">-</span> <span class="sy0">-</span>c <span class="st0">&quot;yum install libicu-devel&quot;</span></div></li>
</ol></div></p>

	<ul>
		<li>You can also compile Qt without Qt WebKit by deleting / renaming the qtwebkit, qtwebkit-examples-and-demos directories.</li>
		<li>The &#8212;no-webkit option of configure added, see <a href="https://bugreports.qt-project.org/browse/QTBUG-20577"><span class="caps">QTBUG</span>-20577</a> <em>[bugreports.qt-project.org]</em> issue.</li>
	</ul>

	<a name="d1b5b9f05750249b9cdde0290329966e"></a>	<h4>Qt D-Bus fails to build due to &#8220;inconsistent user-defined literal suffixes&#8221;</h4>

	<p>This occours when you attempt to build Qt 5 with <span class="caps">GCC</span> 4.7 while D-Bus &lt; 1.4.20 is present on your system. (For example, the default Fedora 17 installation is prone to this error.) The error message is this:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">qdbusinternalfilters.<span class="me1">cpp</span><span class="sy0">:</span><span class="nu0">124</span><span class="sy0">:</span><span class="nu0">36</span><span class="sy0">:</span> error<span class="sy0">:</span> inconsistent user<span class="sy0">-</span>defined literal suffixes ‘DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER’ and ‘DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER’ in string literal</div></li>
</ol></div></p>

	<p>Note: The error is in the header files of D-Bus itself, and it has been fixed upstream, see <a href="https://bugs.freedesktop.org/show_bug.cgi?id=46147">https://bugs.freedesktop.org/show_bug.cgi?id=46147</a><br />
Solution: either upgrade to a newer version of D-Bus or edit that one line of the header file manually.</p>

	<a name="a3ec605b337a8da5a157c8b7a4cce70c"></a>	<h4>[&#8230;]::isNull is not defined (from qvariant_p.h)</h4>

	<p>C++11 support is detected while your <span class="caps">GCC</span> doesn&#8217;t properly support it<br />
Fixed by passing<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">-</span>no<span class="sy0">-</span>c<span class="sy0">++</span><span class="nu0">11</span></div></li>
</ol></div><br />
to the configure options</p>

	<a name="de867009cd8650658e61089f9199a144"></a>	<h4>cc1: fatal error: .pch/release-shared/QtGui: No such file or directory</h4>

	<p>Currently unresolved bug with the build of assembly files, see discussion at <a href="http://comments.gmane.org/gmane.comp.lib.qt.devel/5933">http://comments.gmane.org/gmane.comp.lib.qt.devel/5933</a><br />
Fixed by passing<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">-</span>no<span class="sy0">-</span>pch</div></li>
</ol></div><br />
to the configure options</p>

	<a name="09a3ea257c770d325505b68162312867"></a>	<h4>ld: hidden symbol `void QQmlThread::postMethodToThread&lt;QQmlDataBlob*, QQmlDataBlob*, QQmlDataLoaderThread&gt;(void (QQmlDataLoaderThread::<strong>)(QQmlDataBlob</strong>), QQmlDataBlob* const&amp;)&#8217; isn&#8217;t defined</h4>

	<p>Bug with <span class="caps">GCC</span> versions &lt; 4.4.x, see bug report at <a href="https://bugzilla.redhat.com/show_bug.cgi?id=493929">https://bugzilla.redhat.com/show_bug.cgi?id=493929</a><br />
Fixed by adding<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">QMAKE_CXXFLAGS_RELEASE <span class="sy0">+=</span> <span class="sy0">-</span>fno<span class="sy0">-</span><span class="kw2">inline</span></div></li>
</ol></div><br />
in <strong>qtdeclarative/src/qml/qml.pro</strong></p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430_0"></a>	<h3>Windows</h3>

	<a name="09cf75f72c60cefc97faafa7a775eb12"></a>	<h4>qdeclarative doesn&#8217;t compile because of missing v8.lib (Windows)</h4>

	<p>Compiling v8 in qtbase requires Python. Make sure you have a python.exe in your &#37;<span class="caps">PATH</span>&#37;, go to qtjsbackend, run qmake &amp;&amp; nmake.</p>

	<a name="6a8586788730cc7f6489adde4cbd4c6d"></a>	<h4>Debugging OpenGL issues (Windows)</h4>

	<p>Set the environment variable <code>QT_QPA_VERBOSE=gl:1</code> and run the application with <a href="http://technet.microsoft.com/en-us/sysinternals/bb896647">DebugView</a> <em>[technet.microsoft.com]</em> installed. The log will show the requested vs obtained OpenGL version. If the log tells you that it only has OpenGL 1.1, QML2 will not work. Note that <em>qmlscene</em> will not report errors about unsupported OpenGL versions.</p>

	<a name="9832a8a505d2bd3352d26e84e88d0218"></a>	<h2>Questions &amp; Comments</h2>

	<p>Please raise questions &amp; comments about this article in the forum: <a href="http://qt-project.org/forums/viewthread/7018">http://qt-project.org/forums/viewthread/7018</a></p>]]></description>
      <dc:subject>Building Qt 5 from Git</dc:subject>
      <dc:date>2013-05-14T10:19:03+00:00</dc:date>
    </item>

    <item>
      <title>Show_library_dependencies</title>
      <link>http://qt&#45;project.org/wiki/Show_library_dependencies</link>
      <guid>http://qt&#45;project.org/wiki/Show_library_dependencies</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#edc9f0a5a5d57797bf68e37364743831">Linux</a></li>
<li><a href="#f895df5b37498f660cde1a2388d7af8b">Mac OS X</a></li>
<li><a href="#aea23489ce3aa9b6406ebb28e0cda430">Windows</a></li></ul>
</div>

	<p>The tools used to detect the libraries an executable or another shared library depends on are highly platform dependend. Find the tools for various systems (and basic usage for some of them) listed below.</p>

	<p>Be aware that the tools not necessarily show you <strong>all</strong> the libraries you need! It&#8217;s best to separately check the dependency libraries too.</p>

	<p>Watch out for plugins, that might pull in further dependencies!</p>

	<p>The wiki page <a href="http://qt-project.org/wiki/Qt_Library_Cross_Dependencies">Qt_Library_Cross_Dependencies</a> lists some of the cross dependencies of the Qt libraries.</p>

	<a name="edc9f0a5a5d57797bf68e37364743831"></a>	<h1>Linux</h1>

	<p>Linux uses the &#8220;ldd&#8221; command to show the libraries that are linked to an executable or another shared library:</p>

	<p>ldd prints the path to the library and some address after the =&gt;. &#8220;not found&#8221; is printed in case the library is missing.</p>

	<p><strong>Be aware:</strong> The libraries are not sorted by name in the output!</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ ldd myFancyProgram</div></li>
<li class="li1"><div class="de1">&nbsp;linux<span class="sy0">-</span>vdso.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> &nbsp;<span class="br0">&#40;</span><span class="nu12">0x00007fffd6d17000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libcurl<span class="sy0">-</span>gnutls.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libcurl<span class="sy0">-</span>gnutls.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7c45a000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libMagick<span class="sy0">++</span>.<span class="me1">so</span>.10 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libMagick<span class="sy0">++</span>.<span class="me1">so</span>.10 <span class="br0">&#40;</span><span class="nu12">0x00007feb7c1e3000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libWand.<span class="me1">so</span>.10 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libWand.<span class="me1">so</span>.10 <span class="br0">&#40;</span><span class="nu12">0x00007feb7bf1c000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libMagick.<span class="me1">so</span>.10 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libMagick.<span class="me1">so</span>.10 <span class="br0">&#40;</span><span class="nu12">0x00007feb7bb25000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtAssistantClient.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtAssistantClient.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7b91f000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libpthread.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libpthread.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb7b703000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtWebKit.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtWebKit.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7aa8a000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libQtSvg.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtSvg.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7a836000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQt3Support.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQt3Support.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7a30b000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtXml.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtXml.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7a0c2000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtGui.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtGui.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb7955c000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtNetwork.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtNetwork.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb79253000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libQtCore.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtCore.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb78e11000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libstdc<span class="sy0">++</span>.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libstdc<span class="sy0">++</span>.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb78b06000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libm.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libm.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb78885000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgcc_s.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libgcc_s.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb78677000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libc.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libc.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb78315000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libidn.<span class="me1">so</span>.11 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libidn.<span class="me1">so</span>.11 <span class="br0">&#40;</span><span class="nu12">0x00007feb780e3000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libldap_r<span class="sy0">-</span><span class="nu16">2.4</span>.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libldap_r<span class="sy0">-</span><span class="nu16">2.4</span>.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb77e9e000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgssapi_krb5.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgssapi_krb5.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb77c73000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libkrb5.<span class="me1">so</span>.3 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libkrb5.<span class="me1">so</span>.3 <span class="br0">&#40;</span><span class="nu12">0x00007feb779dc000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libk5crypto.<span class="me1">so</span>.3 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libk5crypto.<span class="me1">so</span>.3 <span class="br0">&#40;</span><span class="nu12">0x00007feb777b8000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libcom_err.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libcom_err.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb775b6000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libz.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libz.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb7739f000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgnutls.<span class="me1">so</span>.13 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgnutls.<span class="me1">so</span>.13 <span class="br0">&#40;</span><span class="nu12">0x00007feb7711a000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;liblcms.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>liblcms.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb76ee6000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libtiff.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libtiff.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb76c8d000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libjpeg.<span class="me1">so</span>.62 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libjpeg.<span class="me1">so</span>.62 <span class="br0">&#40;</span><span class="nu12">0x00007feb76a6a000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libfontconfig.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libfontconfig.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb76839000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXext.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXext.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb76628000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXt.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXt.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb763c4000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libbz2.<span class="me1">so</span>.1.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libbz2.<span class="me1">so</span>.1.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb761b4000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libfreetype.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libfreetype.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb75f36000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libdl.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libdl.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb75d32000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libSM.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libSM.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb75b2a000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libICE.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libICE.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb7590f000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libX11.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libX11.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb7560c000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;<span class="sy0">/</span>lib64<span class="sy0">/</span>ld<span class="sy0">-</span>linux<span class="sy0">-</span>x86<span class="sy0">-</span><span class="nu0">64</span>.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb7c696000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libsqlite3.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libsqlite3.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb753a0000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libQtSql.<span class="me1">so</span>.4 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libQtSql.<span class="me1">so</span>.4 <span class="br0">&#40;</span><span class="nu12">0x00007feb75160000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libaudio.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libaudio.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb74f47000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libpng12.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libpng12.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb74d22000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libglib<span class="sy0">-</span><span class="nu16">2.0</span>.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libglib<span class="sy0">-</span><span class="nu16">2.0</span>.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb74a62000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXi.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXi.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb74859000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXrender.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXrender.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb74650000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXrandr.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXrandr.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb74449000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgthread<span class="sy0">-</span><span class="nu16">2.0</span>.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgthread<span class="sy0">-</span><span class="nu16">2.0</span>.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb74245000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;librt.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>librt.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb7403c000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;liblber<span class="sy0">-</span><span class="nu16">2.4</span>.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>liblber<span class="sy0">-</span><span class="nu16">2.4</span>.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb73e2e000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libresolv.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libresolv.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb73c18000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libsasl2.<span class="me1">so</span>.2 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libsasl2.<span class="me1">so</span>.2 <span class="br0">&#40;</span><span class="nu12">0x00007feb739ff000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libkrb5support.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libkrb5support.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb737f8000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libkeyutils.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libkeyutils.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb735f6000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libtasn1.<span class="me1">so</span>.3 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libtasn1.<span class="me1">so</span>.3 <span class="br0">&#40;</span><span class="nu12">0x00007feb733e6000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgcrypt.<span class="me1">so</span>.11 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libgcrypt.<span class="me1">so</span>.11 <span class="br0">&#40;</span><span class="nu12">0x00007feb73198000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libexpat.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libexpat.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb72f74000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXau.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXau.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb72d72000</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;libxcb<span class="sy0">-</span>xlib.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libxcb<span class="sy0">-</span>xlib.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb72b71000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libxcb.<span class="me1">so</span>.1 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libxcb.<span class="me1">so</span>.1 <span class="br0">&#40;</span><span class="nu12">0x00007feb72956000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libpcre.<span class="me1">so</span>.3 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libpcre.<span class="me1">so</span>.3 <span class="br0">&#40;</span><span class="nu12">0x00007feb72730000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libgpg<span class="sy0">-</span>error.<span class="me1">so</span>.0 <span class="sy0">=&gt;</span> <span class="sy0">/</span>lib<span class="sy0">/</span>libgpg<span class="sy0">-</span>error.<span class="me1">so</span>.0 <span class="br0">&#40;</span><span class="nu12">0x00007feb7252d000</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;libXdmcp.<span class="me1">so</span>.6 <span class="sy0">=&gt;</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libXdmcp.<span class="me1">so</span>.6 <span class="br0">&#40;</span><span class="nu12">0x00007feb72328000</span><span class="br0">&#41;</span></div></li>
</ol></div></p>

	<a name="f895df5b37498f660cde1a2388d7af8b"></a>	<h1>Mac OS X</h1>

	<p>Use the &#8220;otool&#8221; command on Mac OS X to show the libraries that are linked to an executable or another shared library:</p>

	<p><strong>Be aware:</strong> The libraries are not sorted by name in the output!</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ otool <span class="sy0">-</span>L menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar </div></li>
<li class="li1"><div class="de1">menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">-</span>cocoa<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">-</span>cocoa<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">-</span>cocoa<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">-</span>cocoa<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libstdc<span class="sy0">++</span><span class="nu18">.6</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 7.0.0<span class="sy0">,</span> current version 7.9.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgcc_s.1.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 625.0.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libSystem.<span class="me1">B</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 125.2.1<span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>In case you build universal binaries (one big executable with object code for different architectures like x86, x86_64, ppc) your out put might look like this:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ otool <span class="sy0">-</span>L menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar </div></li>
<li class="li1"><div class="de1">menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar <span class="br0">&#40;</span>architecture i386<span class="br0">&#41;</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libstdc<span class="sy0">++</span><span class="nu18">.6</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 7.0.0<span class="sy0">,</span> current version 7.9.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgcc_s.1.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 625.0.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libSystem.<span class="me1">B</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 125.2.1<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar <span class="br0">&#40;</span>architecture ppc<span class="br0">&#41;</span><span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtSql.html"><span class="kw5">QtSql</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtGui.html"><span class="kw5">QtGui</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtNetwork.html"><span class="kw5">QtNetwork</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>Trolltech<span class="sy0">/</span>Qt<span class="sy0">-</span>4.7.0<span class="sy0">/</span>lib<span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a>.<span class="me1">framework</span><span class="sy0">/</span>Versions<span class="sy0">/</span><span class="nu0">4</span><span class="sy0">/</span><a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a> <span class="br0">&#40;</span>compatibility version 4.7.0<span class="sy0">,</span> current version 4.7.0<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libstdc<span class="sy0">++</span><span class="nu18">.6</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 7.0.0<span class="sy0">,</span> current version 7.9.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libgcc_s.1.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 625.0.0<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>libSystem.<span class="me1">B</span>.<span class="me1">dylib</span> <span class="br0">&#40;</span>compatibility version 1.0.0<span class="sy0">,</span> current version 125.2.1<span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>The libraries should be the same for every architecture. You can limit the output for one architecture by adding a &#8220;-arch&#8221; switch to otool:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ otool <span class="sy0">-</span>L <span class="sy0">-</span>arch i386 menubar.<span class="me1">app</span><span class="sy0">/</span>Contents<span class="sy0">/</span>MacOS<span class="sy0">/</span>menubar </div></li>
</ol></div></p>

	<a name="aea23489ce3aa9b6406ebb28e0cda430"></a>	<h1>Windows</h1>

	<p>There is no command line tool for printing the dependencies on Windows. Instead the graphical Dependency Walker tool (depends.exe) is used. The tool was included in Visual Studio until Version 8.0 (aka Visual Studio 2005). It is nowadays downloadable from <a href="http://www.dependencywalker.com">http://www.dependencywalker.com.</a> <em>[dependencywalker.com]</em> It does not require any development environment to be installed and runs on Windows 95, 98, Me, NT, 2000, XP, 2003, Vista, and 7.</p>

	<p>Loading an application into the dependency walker will show all the different dlls loaded including their folder. Errors are shown for dlls incompatible or not available. However, this process provides also some wrong indications. The screen shot below shows the output when Qt creator application is loaded. This version of Qt creator has been compiled with MinGW 4.6.2 (32 bit). Unfortunately, Depends.exe indicates missing dlls (such as <span class="caps">GPSVC</span>.DLL and <span class="caps">IESHIMS</span>.DLL). Apparently the list of missing dlls might grow with time due to updates of Windows. Those dlls are typically not on the system, but they are also not required for proper working of the application. This makes it a bit difficult to find other missing dll which need to be made accessible to the application. This may be achieved either by adding the folder of the dll to the environment path or copying to the application&#8217;s folder. </p>

	<p><strong><span class="caps">TIP</span></strong>: press F9 to see the full path of the dll</p>

	<p><img onload='imgFitOnLoad(this)'  src="http://db.tt/2t8qYDck" title="DependsCreator" alt="DependsCreator" /></p>]]></description>
      <dc:subject>Show_library_dependencies</dc:subject>
      <dc:date>2013-05-14T09:43:03+00:00</dc:date>
    </item>

    <item>
      <title>QtSerialPort_Russian</title>
      <link>http://qt&#45;project.org/wiki/QtSerialPort_Russian</link>
      <guid>http://qt&#45;project.org/wiki/QtSerialPort_Russian</guid>
      <description><![CDATA[<p><a href="http://qt-project.org/wiki/QtSerialPort">English</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_German">Deutsch</a>
| <strong>Русский</strong>
| <a href="http://qt-project.org/wiki/QtSerialPort_Polish">Polski</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Dutch">Nederlands</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Portuguese">Português</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Spanish">Español</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Ukrainian">Українською</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Persian">فارسی</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Arabic">عربي</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Korean">한국어</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Finnish">Suomi</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Catalan">Català</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Italian">Italiano</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Japanese">日本語</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_French">Français</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Hungarian">Magyar</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Kannada">ಕನ್ನಡ</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Hindi">हिन्दी</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Thai">ภาษาไทย</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_SimplifiedChinese">简体中文</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Bulgarian">Български</a></p>

<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#f15a5db6d48800879298d0ac6ed1a073">QtSerialPort</a><ul>
<li><a href="#69df1f85b0abbce850b5feb29bddcb2a">Новости</a></li>
<li><a href="#62b685c7d7c78ac9b69b36cfc70c566f">Краткое описание</a></li>
<li><a href="#63fb7e1ff002d54e99ebf2f1a3df5172">История</a></li>
<li><a href="#08c89718a16de55c9bd057dab1074c22">Функциональность</a><ul>
<li><a href="#14f5eb6cd81b5d77e4b60bfbb3586421">SerialPort</a></li>
<li><a href="#4836a29af0b5c21af555fc5b5c16204c">SerialPortInfo</a></li></ul>
</li>
<li><a href="#61471ffca1acb34d801bc3abc2f500ec">Просмотр исходного кода</a></li>
<li><a href="#d81769bdda3330a50f7438b5a8f296ce">Получение исходного кода</a><ul>
<li><a href="#34abf068d06fef0334f26fa55b4479c2">Для пользователей</a></li>
<li><a href="#da0973949b07b8433fbecc1b90b4d7b9">Для разработчиков</a></li></ul>
</li>
<li><a href="#6b40a8704da92c6f67729743b7f1ef15">Сборка и установка</a></li>
<li><a href="#4f1c02655347f782412890862f09bc2d">Использование</a><ul>
<li><a href="#e200b03e6aa6d5363db5bdbb4386720c">Qt4</a></li>
<li><a href="#bea0d7a773042fa8ca1fc71e186669ee">Qt5</a></li>
<li><a href="#4279141a615d928c06eddaccec3f189b">Простой пример</a></li></ul>
</li>
<li><a href="#26a18ae310ec91a4fe59383df1d46d41">Генерация документации</a></li>
<li><a href="#caa3df6ff9a9f445440f7c63a1b7baa7">Для желающих принять участие в разработке</a></li>
<li><a href="#adddcfecb609aca89399d97c6fffe0c4">Возможные проблемы</a></li>
<li><a href="#03eb7c0f6e62d8271a4a78f1f2f620f1">Отслеживание ошибок</a></li></ul>
</li></ul>
</div>

	<a name="f15a5db6d48800879298d0ac6ed1a073"></a>	<h1>QtSerialPort</h1>

	<p><em><strong>Примечание:</strong> Эта страница в стадии разработки, требует пересмотра.</em></p>

	<a name="69df1f85b0abbce850b5feb29bddcb2a"></a>	<h2>Новости</h2>

	<p>Заполнить</p>

	<p>26.02.2013 &#8211; Проект перемещен из песочницы в основную ветвь Qt5!</p>

	<a name="62b685c7d7c78ac9b69b36cfc70c566f"></a>	<h2>Краткое описание</h2>

	<p>Модуль <strong>QtSerialPort</strong> &#8211; это дополнение к библиотеке Qt5, которое предоставляет единый интерфейс для работы как аппаратными, так и с виртуальными последовательными портами.</p>

	<p><em><strong>Примечание:</strong> Также добавлена поддержка и библиотеки Qt4.</em></p>

	<p>Последовательный интерфейс благодаря своей простоте и надежности до сих пор популярен в промышленности, при разработке встраиваемых устройств, робототехнике и т.п.</p>

	<p>Использование модуля <strong>QtSerialPort</strong> позволяет разработчикам значительно сократить время на реализацию Qt-приложений, требующих доступ к последовательным интерфейсам.</p>

	<a name="63fb7e1ff002d54e99ebf2f1a3df5172"></a>	<h2>История</h2>

	<p>Модуль <strong>QtSerialPort</strong> берет свое начало из библиотеки <a href="http://gitorious.org/qserialdevice/qserialdevice/trees/2.0">QSerialDevice</a> <em>[gitorious.org]</em> (ветка 2.0), которая недавно была перемещена в репозиторий на <a href="https://codereview.qt-project.org/">https://codereview.qt-project.org/</a></p>

	<p>Это было сделано в надежде на более открытую и свободную разработку, а также на помощь сообщества, которое заинтересовано в развитии данного модуля.</p>

	<a name="08c89718a16de55c9bd057dab1074c22"></a>	<h2>Функциональность</h2>

	<p>В настоящее время <span class="caps">API</span> модуля содержит два класса <strong>SerialPort</strong> и <strong>SerialPortInfo</strong>.</p>

	<a name="14f5eb6cd81b5d77e4b60bfbb3586421"></a>	<h3>SerialPort</h3>

	<p>Класс <strong>SerialPort</strong> является основным классом модуля и предоставляет набор основных методов и свойств для доступа к ресурсам последовательных портов.</p>

	<p>Поддерживает следующие операционные системы:</p>

<table class="infotable line"><tr style="background:#009900;"><th>Операционная система </th><th>Поддержка </th><th>Примечание </th></tr><tr><td>Windows NT/2K/XP/Vista/7 </td><td>ДА                                  </td><td>Полная поддержка</td></tr><tr><td>Windows CE</td><td>ДА</td><td>Тестировалось только на 5 и 6 платформах в эмуляторе</td></tr><tr><td>Gnu/Linux </td><td>ДА</td><td>Полная поддержка</td></tr><tr><td>MacOSX</td><td>ДА</td><td>Полная поддержка</td></tr><tr><td>Другие Unix</td><td>ДА</td><td>Все <span class="caps">POSIX</span> совместимые</td></tr><tr><td>Symbian<sup id="fnrev10698718075198e990d08c4" class="footnote"><a href="#fn10698718075198e990d08c4">1</a></sup></td><td>ДА</td><td>Частично, тестировалось только в эмуляторе (*)</td></tr></table>

	<p id="fn10698718075198e990d08c4" class="footnote"><sup>1</sup> Для OS Symbian разработка модуля приостановлена в связи с отсутствием разработчиков, а также с тем фактом, что Nokia отказалась от этой платформы и не будет включать ее поддержку в Qt5._</p>

	<a name="4836a29af0b5c21af555fc5b5c16204c"></a>	<h3>SerialPortInfo</h3>

	<p>Класс <strong>SerialPortInfo</strong> является вспомогательным. Он позволяет получить информацию о имеющихся в системе последовательных портах.</p>

	<p>Поддерживает следующие операционные системы:</p>

<table class="infotable line"><tr style="background:#009900;"><th>Операционная система </th><th>Поддержка </th><th>Примечание </th></tr><tr><td>Windows NT/2K/XP/Vista/7 </td><td>ДА                                  </td><td>Полная поддержка (с использованием SetupAPI)</td></tr><tr><td>Windows CE</td><td>ДА</td><td>Тестировалось только на 5 и 6 платформах в эмуляторе</td></tr><tr><td>Gnu/Linux </td><td>ДА</td><td>Полная поддержка (с использованием libudev или простой перебор в /dev)</td></tr><tr><td>MacOSX</td><td>ДА</td><td>Полная поддержка</td></tr><tr><td>Другие Unix</td><td>ДА</td><td>Все <span class="caps">POSIX</span> совместимые (только простой перебор в /dev)</td></tr><tr><td>Symbian<sup id="fnrev13270117315198e990d280d" class="footnote"><a href="#fn13270117315198e990d280d">2</a></sup></td><td>ДА</td><td>Частично, тестировалось только в эмуляторе (*)</td></tr></table>

	<p id="fn13270117315198e990d280d" class="footnote"><sup>2</sup> Для OS Symbian разработка модуля приостановлена в связи с отсутствием разработчиков, а также с тем фактом, что Nokia отказалась от этой платформы и не будет включать ее поддержку в Qt5._</p>

	<a name="61471ffca1acb34d801bc3abc2f500ec"></a>	<h2>Просмотр исходного кода</h2>

	<p>Недавно запущено публичное зеркало репозитория проекта на <a href="https://qt.gitorious.org/qt/qtserialport">Gitorious</a> <em>[qt.gitorious.org]</em></p>

	<p>Теперь каждый желающий может свободно и оперативно через <span class="caps">WEB</span> браузер просмотреть последние изменения в исходном коде проекта.</p>

	<a name="d81769bdda3330a50f7438b5a8f296ce"></a>	<h2>Получение исходного кода</h2>

	<a name="34abf068d06fef0334f26fa55b4479c2"></a>	<h3>Для пользователей</h3>

	<p>Для получения текущего снимка исходного кода репозитория в виде архива достаточно из <span class="caps">WEB</span> браузера перейти по <a href="http://qt.gitorious.org/qt/qtserialport/archive-tarball/master">этой</a> <em>[qt.gitorious.org]</em> ссылке, загрузка начнется автоматически.</p>

	<p>Для желающих использовать Git можно выполнить следующую команду:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtserialport.git</span></div></li>
</ol></div></p>

	<a name="da0973949b07b8433fbecc1b90b4d7b9"></a>	<h3>Для разработчиков</h3>

	<p>Получить исходный код и внести свой вклад в разработку могут только зарегистрированные в Gerrit разработчики, используя Git (<a href="http://wiki.qt-project.org/Setting_up_Gerrit">настройка Gerrit</a> <em>[wiki.qt-project.org]</em>).</p>

	<p>Получить исходный код можно так:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org:29418/qt/qtserialport.git</span></div></li>
</ol></div></p>

	<p>где username &#8211; логин зарегистрированного в Gerrit пользователя</p>

	<a name="6b40a8704da92c6f67729743b7f1ef15"></a>	<h2>Сборка и установка</h2>

	<p><em><strong>Примечание:</strong> При сборке лучше использовать &#8220;теневую сборку&#8221;, когда для результатов сборки используется отдельная директория. Это позволяет оставить директорию с исходными кодами в нетронутом виде, не засоренную продуктами сборки.</em></p>

	<p>Перед сборкой необходимо:
	<ul>
		<li>установить Perl<sup id="fnrev4029784435198e990d6680" class="footnote"><a href="#fn4029784435198e990d6680">3</a></sup></li>
		<li>убедиться что корректно настроены переменные окружения:
	<ul>
		<li>правильно указаны пути к установленной Qt4/Qt5</li>
		<li>правильно указаны пути к используемым компиляторам</li>
		<li>правильно указаны пути к Perl<sup class="footnote"><a href="#fn4029784435198e990d6680">3</a></sup></li>
	</ul></li>
		<li>предварительно создать директорию для сборки которая находится на том же уровне, что и директория с исходными кодами <br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">/</span></div></li>
<li class="li1"><div class="de1"><span class="sy0">|-</span> <span class="sy0">/</span>serialport<span class="sy0">-</span>src</div></li>
<li class="li1"><div class="de1"><span class="sy0">|-</span> <span class="sy0">/</span>serialport<span class="sy0">-</span>build</div></li>
</ol></div></li>
	</ul></p>

	<p id="fn4029784435198e990d6680" class="footnote"><sup>3</sup> Perl необходим только в случае использования Qt5, подробнее см. <a href="http://qt-project.org/wiki/Building_Qt_5_from_Git">тут</a> <em>[qt-project.org]</em>. При использовании Qt4 просто пропустите этот пункт.</p>

	<p>Ниже приведены рекомендуемые процедуры сборки библиотеки для Qt4/Qt5.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">cd serialport<span class="sy0">-</span>build</div></li>
<li class="li1"><div class="de1">qmake ..<span class="sy0">/</span>serialport<span class="sy0">-</span>src<span class="sy0">/</span>qtserialport.<span class="me1">pro</span></div></li>
<li class="li1"><div class="de1">make <span class="br0">&#91;</span>или <span class="st0">'nmake'</span> для MSVC компилятора<span class="sy0">,</span> или <span class="st0">'mingw32-make'</span> для MinGW компилятора<span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1">make install <span class="br0">&#91;</span>или <span class="st0">'nmake install'</span> для MSVC компилятора<span class="sy0">,</span> или <span class="st0">'mingw32-make install'</span> для MinGW компилятора<span class="br0">&#93;</span></div></li>
</ol></div></p>

	<p><em><strong>Примечание:</strong> В *nix системах для установки возможно потребуются права суперпользователя:</em><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo make install</div></li>
</ol></div></p>

	<a name="4f1c02655347f782412890862f09bc2d"></a>	<h2>Использование</h2>

	<p>При использовании библиотеки необходимо ее подключить в <em>*.pro</em> файл пользовательского проекта, это действие для Qt4 и Qt5 немного отличается:</p>

	<a name="e200b03e6aa6d5363db5bdbb4386720c"></a>	<h3>Qt4</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">CONFIG <span class="sy0">+=</span> serialport</div></li>
</ol></div></p>

	<a name="bea0d7a773042fa8ca1fc71e186669ee"></a>	<h3>Qt5</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> serialport</div></li>
</ol></div></p>

	<p>Подключение заголовочных файлов от <strong>QtSerialPort</strong> в пользовательский проект для Qt4 и Qt5 одинаковое:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">...</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPort&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPortInfo&gt;</span></div></li>
<li class="li1"><div class="de1">...</div></li>
</ol></div></p>

	<a name="4279141a615d928c06eddaccec3f189b"></a>	<h3>Простой пример</h3>

	<p>Ниже представлен простейший пример реализации <em>main.cpp</em>:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtCore/QCoreApplication&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtCore/QDebug&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPort&gt;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">#include &lt;QtSerialPort/QSerialPortInfo&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">QT_USE_NAMESPACE</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">*</span>argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QCoreApplication.html"><span class="kw5">QCoreApplication</span></a> a<span class="br0">&#40;</span>argc<span class="sy0">,</span> argv<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Example use SerialPortInfo</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">foreach</span> <span class="br0">&#40;</span><span class="kw4">const</span> SerialPortInfo <span class="sy0">&amp;</span>info<span class="sy0">,</span> SerialPortInfo<span class="sy0">::</span><span class="me2">availablePorts</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Name &nbsp; &nbsp; &nbsp; &nbsp;: &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">portName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Description : &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">description</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Manufacturer: &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">manufacturer</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Example use SerialPort</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; SerialPort serial<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; serial.<span class="me1">setPort</span><span class="br0">&#40;</span>info<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>serial.<span class="me1">open</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QIODevice.html"><span class="kw5">QIODevice</span></a><span class="sy0">::</span><span class="me2">ReadWrite</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; serial.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> a.<span class="me1">exec</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></p>

	<a name="26a18ae310ec91a4fe59383df1d46d41"></a>	<h2>Генерация документации</h2>

	<p>Нет необходимости в сборке документации, потому что текущий снимок документации находится <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtserialport/qtserialport-index.html">тут</a> <em>[doc-snapshot.qt-project.org]</em>.</p>

	<a name="caa3df6ff9a9f445440f7c63a1b7baa7"></a>	<h2>Для желающих принять участие в разработке</h2>

	<p>Вся разработка ведется через <a href="http://wiki.qt-project.org/Setting_up_Gerrit">Gerrit</a> <em>[wiki.qt-project.org]</em>, поэтому желающие включиться в процесс разработки должны иметь там учетную запись.</p>

	<p>Подробнее о процессе регистрации и разработки можно прочитать <a href="http://wiki.qt-project.org/Code_Reviews">здесь</a> <em>[wiki.qt-project.org]</em></p>

	<a name="adddcfecb609aca89399d97c6fffe0c4"></a>	<h2>Возможные проблемы</h2>

	<p>Заполнить</p>

	<a name="03eb7c0f6e62d8271a4a78f1f2f620f1"></a>	<h2>Отслеживание ошибок</h2>

	<p>Используйте <a href="https://bugreports.qt-project.org">bugreports.qt-project.org</a> <em>[bugreports.qt-project.org]</em>, проект &#8220;Qt Playground Projects&#8221;, компонент &#8220;qtserialport&#8221;.</p>]]></description>
      <dc:subject>QtSerialPort_Russian</dc:subject>
      <dc:date>2013-05-14T07:31:15+00:00</dc:date>
    </item>

    <item>
      <title>QtSerialPort</title>
      <link>http://qt&#45;project.org/wiki/QtSerialPort</link>
      <guid>http://qt&#45;project.org/wiki/QtSerialPort</guid>
      <description><![CDATA[<p><strong>English</strong> 
| <a href="http://qt-project.org/wiki/QtSerialPort_German">Deutsch</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Russian">Русский</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Polish">Polski</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Dutch">Nederlands</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Portuguese">Português</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Spanish">Español</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Ukrainian">Українською</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Persian">فارسی</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Arabic">عربي</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Korean">한국어</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Finnish">Suomi</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Catalan">Català</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Italian">Italiano</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Japanese">日本語</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_French">Français</a>
| <a href="http://qt-project.org/wiki/Wiki-Home-Hungarian">Magyar</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Kannada">ಕನ್ನಡ</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Hindi">हिन्दी</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Thai">ภาษาไทย</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_SimplifiedChinese">简体中文</a>
| <a href="http://qt-project.org/wiki/QtSerialPort_Bulgarian">Български</a></p>

<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#f15a5db6d48800879298d0ac6ed1a073">QtSerialPort</a><ul>
<li><a href="#dd1ba1872df91985ed1ca4cde2dfe669">News</a></li>
<li><a href="#f65f2b3a7e9f9700fe85ee407eb0f551">Brief description</a></li>
<li><a href="#16d2b386b2034b9488996466aaae0b57">History</a></li>
<li><a href="#e7e0038bb30579a3120d266861982881">Functionality</a><ul>
<li><a href="#591e172256460e9690b5d25e140840ad">SerialPort </a></li>
<li><a href="#4836a29af0b5c21af555fc5b5c16204c">SerialPortInfo</a></li></ul>
</li>
<li><a href="#a9178c61e8824a2131161d0ae2e2cda0">View the source code</a></li>
<li><a href="#b50aae10a392d80cb2253ce34e686ae3">Getting the source code</a><ul>
<li><a href="#ac0985a5f6b6d6ee0bd2ed35fcc9fb65">For users</a></li>
<li><a href="#0e0be16eb7608b14829cda644fa9a237">For developers</a></li></ul>
</li>
<li><a href="#b55bbb687c599634cc785869b9167639">Building and Installing</a></li>
<li><a href="#c64518704ce0c0d5501a45763f464276">Usage</a><ul>
<li><a href="#e200b03e6aa6d5363db5bdbb4386720c">Qt4</a></li>
<li><a href="#bea0d7a773042fa8ca1fc71e186669ee">Qt5</a></li>
<li><a href="#d065aef6724572158f14e550906f5913">Simple example</a></li></ul>
</li>
<li><a href="#7868ff75ba2ba6671f178bc8fb7da0fd">Documentation generation</a></li>
<li><a href="#add6d404634ed235c77a955b320a66da">For those wishing to contribute to the development</a></li>
<li><a href="#2143a8045361e2844da9e5975f593284">Possible problems</a></li>
<li><a href="#7822a667a688ae9f2700195686abb4d6">Bug Tracking</a></li></ul>
</li></ul>
</div>

	<a name="f15a5db6d48800879298d0ac6ed1a073"></a>	<h1>QtSerialPort</h1>

	<p><em><strong>Note</strong>: this page is work in progress, needs review.</em></p>

	<a name="dd1ba1872df91985ed1ca4cde2dfe669"></a>	<h2>News</h2>

	<p>Fill up</p>

	<p>02/26/2013 &#8211; The project moved from the playground to trunk Qt5!</p>

	<a name="f65f2b3a7e9f9700fe85ee407eb0f551"></a>	<h2>Brief description</h2>

	<p>The <strong>QtSerialPort</strong> module is an add-on for the Qt5 library, providing a single interface for both hardware and virtual serial ports.</p>

	<p><em><strong>Note:</strong> Also added support and for library Qt4.</em></p>

	<p>Serial interfaces, due to their simplicity and reliability, are still popular in some industries like the development of embedded systems, robotics, etc.</p>

	<p>Using the <strong>QtSerialPort</strong> module, developers can significantly reduce the time needed to implement Qt applications that require access to a serial interface.</p>

	<a name="16d2b386b2034b9488996466aaae0b57"></a>	<h2>History</h2>

	<p><strong>QtSerialPort</strong> originated from the third-party library <a href="http://gitorious.org/qserialdevice/qserialdevice/trees/2.0">QSerialDevice</a> <em>[gitorious.org]</em> (branch 2.0), which was recently moved to a repository on <a href="https://codereview.qt-project.org/">https://codereview.qt-project.org/</a></p>

	<p>This was done to allow more open development, and to gather and coordinate a community that is interested in developing this module.</p>

	<a name="e7e0038bb30579a3120d266861982881"></a>	<h2>Functionality</h2>

	<p>Currently, the module <span class="caps">API</span> contains two classes: <strong>SerialPort</strong> and <strong>SerialPortInfo</strong>.</p>

	<a name="591e172256460e9690b5d25e140840ad"></a>	<h3>SerialPort </h3>

	<p><strong>SerialPort</strong> is the base class of the module and provides a set of basic methods and properties to access resources on serial ports.</p>

	<p>Supports the following operating systems:</p>

<table class="infotable line"><tr style="background:#009900;"><th>Operating system </th><th>Support state </th><th>Note</th></tr><tr><td>Windows NT/2K/XP/Vista/7 </td><td><span class="caps">YES</span>                                  </td><td>Full support </td></tr><tr><td>Windows CE</td><td><span class="caps">YES</span></td><td>Tested only on 5 and 6 platforms in the emulator</td></tr><tr><td>Gnu/Linux </td><td><span class="caps">YES</span></td><td>Full support </td></tr><tr><td>MacOSX</td><td><span class="caps">YES</span></td><td>Full support </td></tr><tr><td>Others Unix</td><td><span class="caps">YES</span></td><td>All <span class="caps">POSIX</span>-compatible</td></tr><tr><td>Symbian<sup id="fnrev11539523635198e99168105" class="footnote"><a href="#fn11539523635198e99168105">1</a></sup></td><td><span class="caps">YES</span></td><td>Partially, tested only in the emulator</td></tr></table>

	<p id="fn11539523635198e99168105" class="footnote"><sup>1</sup> For OS Symbian development of the module is suspended due to lack of developers, as well as the fact that Nokia has abandoned the platform and will not include support for it in the Qt5.</p>

	<a name="4836a29af0b5c21af555fc5b5c16204c"></a>	<h3>SerialPortInfo</h3>

	<p><strong>SerialPortInfo</strong> is a helper class. It provides information on the available serial ports on the system.</p>

	<p>Supports the following operating systems:</p>

<table class="infotable line"><tr style="background:#009900;"><th>Operating system </th><th>Support state </th><th>Note</th></tr><tr><td>Windows NT/2K/XP/Vista/7 </td><td><span class="caps">YES</span>                                  </td><td>Full support  (using SetupAPI)</td></tr><tr><td>Windows CE</td><td><span class="caps">YES</span></td><td>Tested only on 5 and 6 platforms in the emulator</td></tr><tr><td>Gnu/Linux </td><td><span class="caps">YES</span></td><td>Full support  (using libudev or simple search in /dev)</td></tr><tr><td>MacOSX</td><td><span class="caps">YES</span></td><td>Full support </td></tr><tr><td>Others Unix</td><td><span class="caps">YES</span></td><td>All <span class="caps">POSIX</span>-compatible (only simple search in /dev)</td></tr><tr><td>Symbian<sup id="fnrev12072351845198e9916afe6" class="footnote"><a href="#fn12072351845198e9916afe6">2</a></sup></td><td><span class="caps">YES</span></td><td>Partially, tested only in the emulator</td></tr></table>

	<p id="fn12072351845198e9916afe6" class="footnote"><sup>2</sup> For OS Symbian development of the module is suspended due to lack of developers, as well as the fact that Nokia has abandoned the platform and will not include support for it in the Qt5.</p>

	<a name="a9178c61e8824a2131161d0ae2e2cda0"></a>	<h2>View the source code</h2>

	<p>Recently launched a public mirror of repository project at <a href="http://qt.gitorious.org/qt/qtserialport">Gitorious</a> <em>[qt.gitorious.org]</em></p>

	<p>Now everyone can freely and quickly through a <span class="caps">WEB</span> browser to view the latest changes in the source code of the project.</p>

	<a name="b50aae10a392d80cb2253ce34e686ae3"></a>	<h2>Getting the source code</h2>

	<a name="ac0985a5f6b6d6ee0bd2ed35fcc9fb65"></a>	<h3>For users</h3>

	<p>To get the current snapshot source code repository as an archive of <span class="caps">WEB</span> browser is enough to click on <a href="http://qt.gitorious.org/qt/qtserialport/archive-tarball/master">this</a> <em>[qt.gitorious.org]</em> link, the download will start automatically.</p>

	<p>For those who want to use Git can run the following command:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtserialport.git</span></div></li>
</ol></div></p>

	<a name="0e0be16eb7608b14829cda644fa9a237"></a>	<h3>For developers</h3>

	<p>To get the source code and contribute to the development you need to register a Qt developer account and set it up for use with Gerrit and Git (see <a href="http://wiki.qt-project.org/Setting_up_Gerrit">Setting up Gerrit</a> <em>[wiki.qt-project.org]</em>).</p>

	<p>You can then check out the repository using git, like this:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone ssh<span class="sy0">:</span><span class="co1">//&lt;username&gt;@codereview.qt-project.org:29418/qt/qtserialport.git</span></div></li>
</ol></div></p>

	<p>&#8230;with your Gerrit user ID in place of &lt;username&gt;.</p>

	<a name="b55bbb687c599634cc785869b9167639"></a>	<h2>Building and Installing</h2>

	<p><em><strong>Note:</strong> At build process a better use of the &#8220;shadow build&#8221; when the results of building put out to a separate build directory. This allows us to keep the source directory intact, without clogging of products of build.</em></p>

	<p>Before building the need to:
	<ul>
		<li>install Perl<sup id="fnrev14637791655198e9916ee65" class="footnote"><a href="#fn14637791655198e9916ee65">3</a></sup></li>
		<li>ensure that the environment variables are set correctly:
	<ul>
		<li>correctly specified the path to the installed Qt4/Qt5</li>
		<li>correctly specified the path to used the compiler</li>
		<li>correctly specified the path to the Perl<sup class="footnote"><a href="#fn14637791655198e9916ee65">3</a></sup></li>
	</ul></li>
		<li>create a build directory that is on the same level as the directory with the source code<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">/</span></div></li>
<li class="li1"><div class="de1"><span class="sy0">|-</span> <span class="sy0">/</span>serialport<span class="sy0">-</span>src</div></li>
<li class="li1"><div class="de1"><span class="sy0">|-</span> <span class="sy0">/</span>serialport<span class="sy0">-</span>build</div></li>
</ol></div></li>
	</ul></p>

	<p id="fn14637791655198e9916ee65" class="footnote"><sup>3</sup> Perl is required only in the case of Qt5, see <a href="http://qt-project.org/wiki/Building_Qt_5_from_Git">here</a> <em>[qt-project.org]</em>. When using Qt4 just skip this point.</p>

	<p>The following are recommended procedures for the build of <strong>QtSerialPort</strong> library on Qt4/Qt5.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">cd serialport<span class="sy0">-</span>build</div></li>
<li class="li1"><div class="de1">qmake ..<span class="sy0">/</span>serialport<span class="sy0">-</span>src<span class="sy0">/</span>qtserialport.<span class="me1">pro</span></div></li>
<li class="li1"><div class="de1">make <span class="br0">&#91;</span>or <span class="st0">'nmake'</span> <span class="kw1">for</span> MSVC compiler<span class="sy0">,</span> or <span class="st0">'mingw32-make'</span> <span class="kw1">for</span> MinGW compiler<span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1">make install <span class="br0">&#91;</span>or <span class="st0">'nmake install'</span> <span class="kw1">for</span> MSVC compiler<span class="sy0">,</span> or <span class="st0">'mingw32-make install'</span> <span class="kw1">for</span> MinGW compiler<span class="br0">&#93;</span></div></li>
</ol></div></p>

	<p><em><strong>Note:</strong> in *nix systems may be required for the installation a super user privileges:</em><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">sudo make install</div></li>
</ol></div></p>

	<a name="c64518704ce0c0d5501a45763f464276"></a>	<h2>Usage</h2>

	<p>When using the library, must connect it to the <em>*.pro</em> file of custom project, this step for Qt4 and Qt5 slightly different:</p>

	<a name="e200b03e6aa6d5363db5bdbb4386720c"></a>	<h3>Qt4</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">CONFIG <span class="sy0">+=</span> serialport</div></li>
</ol></div></p>

	<a name="bea0d7a773042fa8ca1fc71e186669ee"></a>	<h3>Qt5</h3>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">+=</span> serialport</div></li>
</ol></div></p>

	<p>Include the header files of QtSerialPort to the user project is same for Qt4 and Qt5:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">...</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPort&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPortInfo&gt;</span></div></li>
<li class="li1"><div class="de1">...</div></li>
</ol></div></p>

	<a name="d065aef6724572158f14e550906f5913"></a>	<h3>Simple example</h3>

	<p>Below is a simple example of <em>main.cpp</em>:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#include &lt;QtCore/QCoreApplication&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtCore/QDebug&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;QtSerialPort/QSerialPort&gt;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">#include &lt;QtSerialPort/QSerialPortInfo&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">QT_USE_NAMESPACE</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">*</span>argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://qt-project.org/doc/QCoreApplication.html"><span class="kw5">QCoreApplication</span></a> a<span class="br0">&#40;</span>argc<span class="sy0">,</span> argv<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Example use QSerialPortInfo</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">foreach</span> <span class="br0">&#40;</span><span class="kw4">const</span> QSerialPortInfo <span class="sy0">&amp;</span>info<span class="sy0">,</span> QSerialPortInfo<span class="sy0">::</span><span class="me2">availablePorts</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Name &nbsp; &nbsp; &nbsp; &nbsp;: &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">portName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Description : &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">description</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">qDebug</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Manufacturer: &quot;</span> <span class="sy0">&lt;&lt;</span> info.<span class="me1">manufacturer</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Example use QSerialPort</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; QSerialPort serial<span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; serial.<span class="me1">setPort</span><span class="br0">&#40;</span>info<span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>serial.<span class="me1">open</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/QIODevice.html"><span class="kw5">QIODevice</span></a><span class="sy0">::</span><span class="me2">ReadWrite</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; serial.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> a.<span class="me1">exec</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></p>

	<p><em><strong>Note:</strong> <span class="caps">CONFIG</span> += serialport must be the first or second line in your .pro file.</em></p>

	<a name="7868ff75ba2ba6671f178bc8fb7da0fd"></a>	<h2>Documentation generation</h2>

	<p>There is no need for documentation building, because snapshot of documentation is available <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtserialport/qtserialport-index.html">here</a> <em>[doc-snapshot.qt-project.org]</em>.</p>

	<a name="add6d404634ed235c77a955b320a66da"></a>	<h2>For those wishing to contribute to the development</h2>

	<p>All development is done through <a href="http://wiki.qt-project.org/Setting_up_Gerrit">Gerrit</a> <em>[wiki.qt-project.org]</em>. Therefore, those wishing to be involved in the development process must have a Qt developer account.</p>

	<p>More information about the registration process and development can be found <a href="http://wiki.qt-project.org/Code_Reviews">here</a> <em>[wiki.qt-project.org]</em></p>

	<a name="2143a8045361e2844da9e5975f593284"></a>	<h2>Possible problems</h2>

	<p>Fill up</p>

	<a name="7822a667a688ae9f2700195686abb4d6"></a>	<h2>Bug Tracking</h2>

	<p>Use <a href="https://bugreports.qt-project.org">bugreports.qt-project.org</a> <em>[bugreports.qt-project.org]</em>, Project &#8220;Qt Playground Projects&#8221;, Component &#8220;qtserialport&#8221;.</p>]]></description>
      <dc:subject>QtSerialPort</dc:subject>
      <dc:date>2013-05-14T07:30:10+00:00</dc:date>
    </item>

    <item>
      <title>Sanity Test Guidelines</title>
      <link>http://qt&#45;project.org/wiki/Sanity&#45;Test&#45;Guidelines</link>
      <guid>http://qt&#45;project.org/wiki/Sanity&#45;Test&#45;Guidelines</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#42cba3829fde40edd5be6241a3b6250a">Sanity Test </a><ul>
<li><a href="#33b581043656cf9bb46abb0291b8017c">Build checks</a></li>
<li><a href="#8e3c7c0bdb2c2688b9efe6d29b44d0aa">General checks</a></li>
<li><a href="#b4c975560500d0e04b23c5c463da00c7">Installer checks</a></li>
<li><a href="#4b20965bf6f93956cfdb09cc58b35954">Uninstaller checks</a></li>
<li><a href="#2ad82c3391e7c7ca199a3c4e2d0761a1">Both source/binary package checks</a></li>
<li><a href="#6134a22fa242b82ea0c506db1d954b60">Qt Creator Checks</a></li>
<li><a href="#2edf0c39136a2b7d30b5896787928be7">CMake Checks</a></li></ul>
</li>
<li><a href="#bd908db5ccb07777ced8023dffc802f4">Links</a></li></ul>
</div>

	<a name="42cba3829fde40edd5be6241a3b6250a"></a>	<h1>Sanity Test </h1>

	<p>Sanity Test is a part of the releasing cycle. The purpose is to ensure that the Qt <span class="caps">SDK</span> is ready for further testing.</p>

	<a name="33b581043656cf9bb46abb0291b8017c"></a>	<h2>Build checks</h2>

	<ul>
		<li><strong>Asks about license</strong></li>
		<li><strong>Compiles with minimal options (eg. -opensource -confirm-license)</strong><br />
Run configure command with the following options <br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure <span class="sy0">-</span>developer<span class="sy0">-</span>build <span class="sy0">-</span>opensource <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake tests <span class="sy0">-</span>confirm<span class="sy0">-</span>license</div></li>
</ol></div></li>
		<li><strong>Compiles as static build (where supported)</strong><br />
Run configure command with &#8216;-static&#8217;:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure <span class="sy0">-</span><span class="kw4">static</span> ...</div></li>
</ol></div></li>
		<li><strong>Compiles in namespace (where supported)</strong><br />
Run configure command with &#8216;-qtnamespace &lt;namespace&gt;&#8217;:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure <span class="sy0">-</span>qtnamespace CustomName ...</div></li>
</ol></div></li>
		<li><strong>Compiles with shadow build</strong><br />
Create a new folder. cd to the new folder. Run the configure command from the source directory.</li>
		<li><strong>Compiles cross-compiled</strong><br />
Use -xplatform parameter, e.g.<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">configure <span class="sy0">-</span>embedded arm <span class="sy0">-</span>xplatform qws<span class="sy0">/</span>linux<span class="sy0">-</span>arm<span class="sy0">-</span>g<span class="sy0">++</span> ...</div></li>
</ol></div></li>
	</ul>

	<a name="8e3c7c0bdb2c2688b9efe6d29b44d0aa"></a>	<h2>General checks</h2>

	<ul>
		<li><strong>Text files have the correct <span class="caps">EOL</span></strong><br />
Open a few text files (<span class="caps">README</span>, .cpp, .h, .pro, etc.) and check if they look OK.</li>
		<li><strong>Files/dirs have sane perm. and timestamps</strong></li>
		<li><strong>Tags have been replaced properly</strong><br />
The list of tags: qmake -query (???)</li>
		<li><strong><span class="caps">README</span> has valid information</strong><br />
Complete information on how to build Qt from sources should be given.</li>
	</ul>

	<a name="b4c975560500d0e04b23c5c463da00c7"></a>	<h2>Installer checks</h2>

	<ul>
		<li><strong>Fresh install works correctly</strong><br />
Install Qt <span class="caps">SDK</span> on a newly installed OS.</li>
		<li><strong>Upgrade install works correctly</strong><br />
Install higher version of Qt having older one, e.g. install Qt 5.0.2 on Qt 5.0.0.</li>
		<li><strong>Parallel install works correctly</strong><br />
Install two Qt <span class="caps">SDK</span> in parallel, e.g. Qt 4.8.4 and 5.0.2. Check that both packages work</li>
		<li><strong>Warns when installing over an installation</strong><br />
Run the installer the second time. A warning pop-up windows should be displayed.</li>
		<li><strong>Is correctly signed (vendor/certificate, not untrusted)</strong><br />
Check where applicable.</li>
		<li><strong>Displays appropriate gfx &amp; strings &amp; version no.</strong><br />
This check is about general look and correct package version number.</li>
		<li><strong>Offers the correct license(s)</strong></li>
		<li><strong>Offers sane default install directory (w/version number)</strong><br />
Check of the default folder is similar to ../Qt5.0.2/</li>
		<li><strong>Correctly installs to default directory</strong></li>
		<li><strong>Correctly installs to non-default loc.</strong><br />
Change the target folder during installation from ../Qt5.0.2/ to a different name.</li>
		<li><strong>Sanely reports progress and completion</strong><br />
Click on the Details button to see the progress. Wait for successful completion of the installation process.</li>
		<li><strong>Installs only selected components</strong><br />
Try to use Deselect All button, and select a few additional components. Component selector should works sanely. After installation is done, only selected components should be in the target folder.</li>
		<li><strong>Shortcuts from last page of installer works</strong><br />
Select/deselect two check boxes (to run Qt Creator and see notes) on the final screen.</li>
		<li><strong>Correctly creates Desktop shortcuts</strong></li>
		<li><strong>Correctly creates Start Menu shortcuts</strong><br />
Check if Qt Creator can be found by the OS (start menu, launcher, dash home, etc.). Check the icon.</li>
		<li><strong>Sets correct environment variables for shell</strong></li>
		<li><strong>Package shows up in Control Panel/Pkg. Manager</strong></li>
		<li><strong>Patching of files is done correctly</strong></li>
		<li><strong>Cancel button is available</strong><br />
Use cancel button. Check if there are no changes done by the installer when the installation is interrupted.</li>
		<li><strong>Cleans up after install failure</strong></li>
		<li><strong>Cleanly fails on insufficient disk space</strong></li>
	</ul>

	<a name="4b20965bf6f93956cfdb09cc58b35954"></a>	<h2>Uninstaller checks</h2>

	<ul>
		<li><strong>Uninstalls properly</strong></li>
		<li><strong>Removes installed files properly</strong></li>
		<li><strong>Removes empty directories</strong></li>
		<li><strong>Removes registry keys</strong></li>
		<li><strong>Reverses any other changes</strong></li>
	</ul>

	<a name="2ad82c3391e7c7ca199a3c4e2d0761a1"></a>	<h2>Both source/binary package checks</h2>

	<ul>
		<li><strong>License is correct</strong></li>
		<li><strong>Assistant works correctly</strong><br />
Run Assistant (e.g. ./5.0.2/gcc_64/bin/assistant). Check the basic functionality, browse through, search for documentation.</li>
		<li><strong>Designer works correctly</strong></li>
		<li><strong>Qt Creator works correctly</strong><br />
Qt Creator can be tested using the following test cases: <a href="http://qt-project.org/wiki/Category:Tools::QtCreator::QualityAssurance">Qt Creator Tests:</a> <em>[qt-project.org]</em></li>
		<li><strong>Demos and examples launch without crashing</strong><br />
<span style="color:blue;"><strong>Each example</strong></span> should be run with no error.</li>
		<li><strong>Demos and examples function acceptably</strong></li>
		<li><strong>Demos and examples can be rebuilt</strong></li>
		<li><strong>External apps build (Qt Creator and other applications)</strong><br />
Create your own application, compile it and run.</li>
		<li><strong>&#8220;<span class="caps">DLL</span> Swapping&#8221; work on an application</strong></li>
		<li><strong><span class="caps">GUI</span> stress-testing works ok</strong><br />
Try to perform many keystrokes, mouse clicks, etc.</li>
		<li><strong>Audio/Video w/QtMultimedia works</strong></li>
		<li><strong>Raster engine works</strong><br />
Run ./qtbase/examples/gui/rasterwindow example.</li>
		<li><strong>Image formats work</strong></li>
		<li><strong>GraphicsView works</strong></li>
		<li><strong>OpenGL works</strong><br />
Run ./qtbase/examples/gui/openglwindow example.<br />
This is also checked by most of the other examples.</li>
		<li><strong>Printing works</strong></li>
		<li><strong><span class="caps">QML</span> 1 apps work (qmlviewer)</strong></li>
		<li><strong><span class="caps">QML</span> 2 apps work (qmlscene)</strong></li>
		<li><strong>QtNetwork works</strong></li>
		<li><strong>QtSql works</strong></li>
		<li><strong>QtSvg works</strong></li>
		<li><strong>QtXml works</strong></li>
		<li><strong>QtWebKit 1 works</strong></li>
		<li><strong>QtWebkit 2 works</strong></li>
		<li><strong>Qt Script 2 works</strong><br />
Run ./qtscript/examples/script/qstetrix example. Use Debug option. context2d can be also run.</li>
	</ul>

	<a name="6134a22fa242b82ea0c506db1d954b60"></a>	<h2>Qt Creator Checks</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Category:Tools::QtCreator::QualityAssurance">Qt Creator Tests:</a> <em>[qt-project.org]</em></li>
	</ul>

	<a name="2edf0c39136a2b7d30b5896787928be7"></a>	<h2>CMake Checks</h2>

	<p>Ensure that the binary package was installed with the ‘source components’ checked.</p>

	<p>On Linux, install cmake from a repository (at least CMake version 2.8.3) and copy a script like this to your Qt installation and run it:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#!/bin/bash</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;</div></li>
<li class="li1"><div class="de1">QT_INSTALLATION_PREFIX<span class="sy0">=</span>$PWD<span class="sy0">/</span>gcc_64</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;</div></li>
<li class="li2"><div class="de2"><span class="kw1">for</span> d in `find . <span class="sy0">-</span>name <span class="st0">&quot;cmake.pro&quot;</span>`<span class="sy0">;</span> <span class="kw1">do</span></div></li>
<li class="li1"><div class="de1">&nbsp; b<span class="sy0">=</span>`dirname $d`</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; m<span class="sy0">=</span>`dirname $b`</div></li>
<li class="li1"><div class="de1">&nbsp; m<span class="sy0">=</span>`dirname $m`</div></li>
<li class="li2"><div class="de2">&nbsp; m<span class="sy0">=</span>`dirname $m`</div></li>
<li class="li1"><div class="de1">&nbsp; m<span class="sy0">=</span>`basename $m`</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> x$m <span class="sy0">!=</span> x<span class="st0">&quot;qtactiveqt&quot;</span> <span class="br0">&#93;</span><span class="sy0">;</span> then</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; pushd $b <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; rm <span class="sy0">-</span>rf build</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; mkdir build</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; pushd build <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; cmake .. <span class="sy0">-</span>DCMAKE_PREFIX_PATH<span class="sy0">=</span><span class="st0">&quot;$QT_INSTALLATION_PREFIX&quot;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; ctest <span class="sy0">--</span>output<span class="sy0">-</span>on<span class="sy0">-</span>failure <span class="sy0">||</span> <span class="kw3">exit</span> <span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; popd <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; popd <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li>
<li class="li1"><div class="de1">&nbsp; fi</div></li>
<li class="li1"><div class="de1">done</div></li>
</ol></div></p>

	<p>On Windows with msvc use a bat script instead (download cmake from <a href="http://www.cmake.org/cmake/resources/software.html">http://www.cmake.org/cmake/resources/software.html</a> ):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">set QT_INSTALLATION_PREFIX<span class="sy0">=%</span>cd<span class="sy0">:</span>\<span class="sy0">=/%/</span>msvc2010</div></li>
<li class="li1"><div class="de1">FOR <span class="sy0">%%</span>? IN <span class="br0">&#40;</span>qtbase qtdeclarative qtmultimedia qtquick1 <a href="http://qt-project.org/doc/QtScript.html"><span class="kw5">qtscript</span></a> <a href="http://qt-project.org/doc/QtSvg.html"><span class="kw5">qtsvg</span></a> qttools <a href="http://qt-project.org/doc/QtXmlPatterns.html"><span class="kw5">qtxmlpatterns</span></a> qtactiveqt<span class="br0">&#41;</span> DO <span class="br0">&#40;</span></div></li>
<li class="li1"><div class="de1">&nbsp; set scriptbase<span class="sy0">=%</span>cd<span class="sy0">%</span></div></li>
<li class="li1"><div class="de1">&nbsp; cd Src\<span class="sy0">%%</span>?\tests\<span class="kw4">auto</span>\cmake</div></li>
<li class="li2"><div class="de2">&nbsp; rd <span class="sy0">/</span>S <span class="sy0">/</span>Q build</div></li>
<li class="li1"><div class="de1">&nbsp; mkdir build</div></li>
<li class="li1"><div class="de1">&nbsp; cd build</div></li>
<li class="li1"><div class="de1">&nbsp; cmake .. <span class="sy0">-</span>DCMAKE_PREFIX_PATH<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALLATION_PREFIX%&quot;</span></div></li>
<li class="li1"><div class="de1">&nbsp; ctest <span class="sy0">--</span>output<span class="sy0">-</span>on<span class="sy0">-</span>failure</div></li>
<li class="li2"><div class="de2">&nbsp; cd <span class="sy0">%</span>scriptbase<span class="sy0">%</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">cd Src\<a href="http://qt-project.org/doc/QtWebKit.html"><span class="kw5">qtwebkit</span></a>\Source\WebKit\<a href="http://qt-project.org/doc/Qt.html"><span class="kw5">qt</span></a>\tests\cmake</div></li>
<li class="li1"><div class="de1">rd <span class="sy0">/</span>S <span class="sy0">/</span>Q build</div></li>
<li class="li1"><div class="de1">mkdir build</div></li>
<li class="li2"><div class="de2">cd build</div></li>
<li class="li1"><div class="de1">cmake .. <span class="sy0">-</span>DCMAKE_PREFIX_PATH<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALLATION_PREFIX%&quot;</span></div></li>
<li class="li1"><div class="de1">ctest <span class="sy0">--</span>output<span class="sy0">-</span>on<span class="sy0">-</span>failure</div></li>
<li class="li1"><div class="de1">cd <span class="sy0">%</span>scriptbase<span class="sy0">%</span></div></li>
</ol></div></p>

	<p>If testing with MinGW on Windows, use a script like this;</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">set QT_INSTALLATION_PREFIX<span class="sy0">=%</span>cd<span class="sy0">:</span>\<span class="sy0">=/%/</span>mingw47_32</div></li>
<li class="li1"><div class="de1">set scriptbase<span class="sy0">=%</span>cd<span class="sy0">%</span></div></li>
<li class="li1"><div class="de1">FOR <span class="sy0">%%</span>? IN <span class="br0">&#40;</span>qtactiveqt qtbase qtdeclarative qtmultimedia qtquick1 <a href="http://qt-project.org/doc/QtScript.html"><span class="kw5">qtscript</span></a> qtsensors qtserialport <a href="http://qt-project.org/doc/QtSvg.html"><span class="kw5">qtsvg</span></a> qttools <a href="http://qt-project.org/doc/QtXmlPatterns.html"><span class="kw5">qtxmlpatterns</span></a><span class="br0">&#41;</span> DO <span class="br0">&#40;</span></div></li>
<li class="li1"><div class="de1">&nbsp; cd Src\<span class="sy0">%%</span>?\tests\<span class="kw4">auto</span>\cmake</div></li>
<li class="li2"><div class="de2">&nbsp; rd <span class="sy0">/</span>S <span class="sy0">/</span>Q build</div></li>
<li class="li1"><div class="de1">&nbsp; mkdir build</div></li>
<li class="li1"><div class="de1">&nbsp; cd build</div></li>
<li class="li1"><div class="de1">&nbsp; cmake .. <span class="sy0">-</span>G <span class="st0">&quot;MinGW Makefiles&quot;</span> <span class="sy0">-</span>DCMAKE_PREFIX_PATH<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALLATION_PREFIX%&quot;</span></div></li>
<li class="li1"><div class="de1">&nbsp; ctest <span class="sy0">--</span>output<span class="sy0">-</span>on<span class="sy0">-</span>failure</div></li>
<li class="li2"><div class="de2">&nbsp; cd <span class="sy0">%</span>scriptbase<span class="sy0">%</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">cd Src\<a href="http://qt-project.org/doc/QtWebKit.html"><span class="kw5">qtwebkit</span></a>\Source\WebKit\<a href="http://qt-project.org/doc/Qt.html"><span class="kw5">qt</span></a>\tests\cmake</div></li>
<li class="li1"><div class="de1">rd <span class="sy0">/</span>S <span class="sy0">/</span>Q build</div></li>
<li class="li1"><div class="de1">mkdir build</div></li>
<li class="li2"><div class="de2">cd build</div></li>
<li class="li1"><div class="de1">cmake .. <span class="sy0">-</span>G <span class="st0">&quot;MinGW Makefiles&quot;</span> <span class="sy0">-</span>DCMAKE_PREFIX_PATH<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALLATION_PREFIX%&quot;</span></div></li>
<li class="li1"><div class="de1">ctest <span class="sy0">--</span>output<span class="sy0">-</span>on<span class="sy0">-</span>failure</div></li>
</ol></div></p>

	<p>On all platforms, the result should be output showing the cmake tests running and passing. Please report failures to the releasing mailing list.</p>

	<a name="bd908db5ccb07777ced8023dffc802f4"></a>	<h1>Links</h1>

	<ul>
		<li><a href="http://qt-project.org/wiki/Building-Qt-5-from-Git">Building Qt 5 from Git</a> <em>[qt-project.org]</em></li>
		<li><a href="http://www.qtcentre.org/wiki/index.php?title=Building_static_Qt_on_Windows">Building static Qt on Windows</a> <em>[qtcentre.org]</em></li>
		<li><a href="http://qt-project.org/faq/answer/what_is_the_usage_of_the_qtlibinfix_and_qtnamespace_configuration_options">What is the usage of the qtlibinfix and qtnamespace configuration options?</a> <em>[qt-project.org]</em></li>
		<li><a href="https://bugreports.qt-project.org/secure/Dashboard.jspa">Bugtracker</a> <em>[bugreports.qt-project.org]</em></li>
	</ul>]]></description>
      <dc:subject>Sanity Test Guidelines</dc:subject>
      <dc:date>2013-05-13T17:01:00+00:00</dc:date>
    </item>

    <item>
      <title>Qt Quick Controls for Tizen</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;Quick&#45;Controls&#45;for&#45;Tizen</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;Quick&#45;Controls&#45;for&#45;Tizen</guid>
      <description><![CDATA[<p>Assumptions:
	<ul>
		<li>Qt quick controls for Tizen should be derived from qtquickcontrols. It may be opportunity of merging Qt quick controls for Tizen to Qt Quick controls in the future</li>
		<li>Should have Tizen look and feel based on Tizen UI Controls( see UiControls sample app from Tizen <span class="caps">SDK</span> available at <a href="https://developer.tizen.org/documentation/dev-guide">https://developer.tizen.org/documentation/dev-guide</a>  under  Tizen Native App Programming-&gt;Sample applications-&gt;UiControls)</li>
	</ul></p>

	<p><img onload='imgFitOnLoad(this)'  src="https://developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/images/ui_controls.png" alt="" /> <img onload='imgFitOnLoad(this)'  src="https://developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/images/ui_touch_button.png" alt="" /> <img onload='imgFitOnLoad(this)'  src="https://developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/images/ui_controls_grouped_list.png" alt="" /> <img onload='imgFitOnLoad(this)'  src="https://developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/images/ui_controls_slider.png" alt="" /></p>

	<ul>
		<li>All content of osp libraries is licensed under <a href="http://qt-project.org/wiki/https%3Awww.tizen.orgcontent-license">Apache license</a> so images can be reused:</li>
	</ul>]]></description>
      <dc:subject>Qt Quick Controls for Tizen</dc:subject>
      <dc:date>2013-05-13T08:51:16+00:00</dc:date>
    </item>

    <item>
      <title>QMake top level srcdir and builddir</title>
      <link>http://qt&#45;project.org/wiki/QMake&#45;top&#45;level&#45;srcdir&#45;and&#45;builddir</link>
      <guid>http://qt&#45;project.org/wiki/QMake&#45;top&#45;level&#45;srcdir&#45;and&#45;builddir</guid>
      <description><![CDATA[<p>When working on complex qmake-based projects with multiple subdirectories, having a pair of top_srcdir and top_builddir variables is very convenient, so you can for example say:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">INCLUDEPATH <span class="sy0">+=</span> $$top_srcdir<span class="sy0">/</span>include</div></li>
</ol></div></p>

	<p>or</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">LIBS <span class="sy0">+=</span> <span class="sy0">-</span>L$$top_builddir<span class="sy0">/</span>lib <span class="sy0">-</span>lmylib</div></li>
</ol></div></p>

	<p>or</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">include<span class="br0">&#40;</span>$$top_srcdir<span class="sy0">/</span>path<span class="sy0">/</span>to<span class="sy0">/</span>config.<span class="me1">pri</span><span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>QMake provides to out-of-the-box variables <span class="caps">PWD</span> and <span class="caps">OUT</span>_PWD, however those variables point to the current .pro/.pri file being processed and its build dir, meaning that they will change when recursing into subdirectories.</p>

	<p>There are ways to workaround this limitation by defining top_srcdir and top_builddir yourself, or having them generated by a script before building. But all of those tricks require manual steps, which isn&#8217;t nice for users who just want to open the project in Qt Creator and hit the build button. It doesn&#8217;t play nice with CI systems and build farms either.</p>

	<p>Fortunately, there&#8217;s a way to make it work automatically, and even with support for in-source and out-of-source builds, using a couple of undocumented qmake features:</p>

	<a name="8a21e6a2188a54536e5a1141ec7089b2"></a>	<h2>the .qmake.cache file</h2>

	<p>The first feature is the .qmake.cache file, which is technically a .pri file that gets automatically included in every .pro file your project contains, including those in subdirectories. It&#8217;s the perfect place to define variables and settings that apply to all your .pro files, such as (you guessed it) top_srcdir and top_builddir.</p>

	<a name="7b808d72d8a56ddb23e1e41da0a6e7c7"></a>	<h2>the <span class="caps">QMAKE</span>_SUBSTITUTES variable</h2>

	<p>The second feature is the <span class="caps">QMAKE</span>_SUBSTITUTES qmake variable, which accepts files with a .in extension suffix in your srcdir and copies those files to the builddir by stripping the .in suffix, and most importantly by expanding (substituting) any qmake variable defined in the file. So for example if you had a file <strong>version.info.in</strong> containing:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Project version $$VERSION created with <a href="http://qt-project.org/doc/Qt.html"><span class="kw5">Qt</span></a> $$QT_VERSION</div></li>
</ol></div></p>

	<p>this file would be created as <strong>version.info</strong> in your build dir and containing:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">Project version 1.2.3 created with <a href="http://qt-project.org/doc/Qt.html"><span class="kw5">Qt</span></a> 4.8.2</div></li>
</ol></div></p>

	<a name="7e60ccdc7ad4a9dd45a72249a79e403d"></a>	<h2><span class="caps">SUBDIRS</span> with .pro files</h2>

	<p>Finally, the third undocumented feature we use is the possibility of executing arbitrary .pro files in a subdirs qmake project, rather than just recursing in subfolders. This allows you to do the following:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">TEMPLATE <span class="sy0">=</span>subdirs</div></li>
<li class="li1"><div class="de1">SUBDIRS <span class="sy0">=</span> foo.<span class="me1">pro</span> bar.<span class="me1">pro</span> subdir</div></li>
</ol></div></p>

	<p>With <strong>foo.pro</strong> and <strong>bar.pro</strong> being in the same folder as the .pro file above, and subdir containing a <strong>subdir.pro</strong> as usual.</p>

	<a name="49b21ad0d38942f635877e7bbc5d7a1e"></a>	<h1>Solution</h1>

	<p>With all this at hand, we can now put all the pieces together:</p>

	<p><strong>myproject.pro</strong><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">TEMPLATE <span class="sy0">=</span> subdirs</div></li>
<li class="li1"><div class="de1">SUBDIRS <span class="sy0">=</span> initvars.<span class="me1">pro</span> subdir1 subdir2 <span class="co2">#subdir1 and subdir2 are your project subdirs</span></div></li>
</ol></div></p>

	<p><strong>initvars.pro</strong><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">TEMPLATE<span class="sy0">=</span>subdirs</div></li>
<li class="li1"><div class="de1">SUBDIRS<span class="sy0">=</span> <span class="co2"># don't build anything, we're just generating the .qmake.cache file</span></div></li>
<li class="li1"><div class="de1">QMAKE_SUBSTITUTES <span class="sy0">+=</span> .<span class="me1">qmake</span>.<span class="me1">cache</span>.<span class="me1">in</span></div></li>
</ol></div></p>

	<p><strong>\.qmake.cache.in</strong><br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">top_srcdir<span class="sy0">=</span>$$PWD</div></li>
<li class="li1"><div class="de1">top_builddir<span class="sy0">=</span>$$OUT_PWD</div></li>
</ol></div></p>

	<p>Basically we create a .qmake.cache file in the top-level build dir, that contains the variables top_srcdir and top_builddir generated from <span class="caps">PWD</span> and <span class="caps">OUT</span>_PWD (which point to the right dirs when expanded at the top-level).</p>

	<p>You might wonder why we need a separate <strong>initvars.pro</strong>, instead of putting <span class="caps">QMAKE</span>_SUBSTITUTES directly in <strong>myproject.pro</strong>.  The reason is that Qt Creator processes .pro files recursively by default (qmake -r), which results in all the subdirs being generated <em>before</em> the .qmake.cache file is generated, thus defeating the purpose of the solution. Using a separate <strong>initvars.pro</strong> ensures that .qmake.cache is generated before qmake starts processing the other subdirs. And obviously we need to put that file at the top-level too so <span class="caps">PWD</span> and <span class="caps">PWD</span>_OUT have the correct values.</p>

	<p>So this solution works both for command-line-built projects and projects loaded in Qt Creator, for in-source and out-of-source builds (for in-source then top_srcdir == top_builddir). And it doesn&#8217;t require any manual step. Success! <span class="smiley">:)</span></p>]]></description>
      <dc:subject>QMake top level srcdir and builddir</dc:subject>
      <dc:date>2013-05-13T08:37:24+00:00</dc:date>
    </item>

    <item>
      <title>ReportingBugsInQt</title>
      <link>http://qt&#45;project.org/wiki/ReportingBugsInQt</link>
      <guid>http://qt&#45;project.org/wiki/ReportingBugsInQt</guid>
      <description><![CDATA[<p><strong>English</strong> <a href="http://qt-project.org/wiki/Kannada_ReportingBugsInQt">ಕನ್ನಡ</a></p>

<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#357f8a670a20fe63678f44f66a869d84">Reporting bugs in Qt</a><ul>
<li><a href="#9846e9fb82ed771127b8a2e7be460673">Step by step</a><ul>
<li><a href="#290612199861c31d1036b185b4e69b75">Summary</a></li>
<li><a href="#171e20c54986bfe67f6e1b951c129e16">Affects Version</a></li>
<li><a href="#05bbb43b3d923283e0b6ffafd088f41f">Components</a></li>
<li><a href="#b5a7adde1af5c87d7fd797b6245c2a39">Description</a></li>
<li><a href="#0ba29c6a1afacf586b03a26162c72274">Environment</a></li>
<li><a href="#e9cb217697088a98b1937d111d936281">Attachment</a></li>
<li><a href="#f2c2fe6dfaf8dd562ab315bdf62bc0ae">Source Req ID</a></li>
<li><a href="#f90da09ffa91c6fd8644ef568457e999">Followed By</a></li></ul>
</li>
<li><a href="#0c728bc4350ee4f69d547e1d13777bfc">In short</a></li>
<li><a href="#7fdfb42804c5e44eb6a000e5021d1a09">Bugs with confidential information</a></li>
<li><a href="#8799d8eccc2b59aafc42964bce63d5e0">Tips for dealing with difficult bugs</a><ul>
<li><a href="#97f896e5a78e0d560024bb42711113ed">Bugs that occur in a specific environment</a></li>
<li><a href="#e38f838eb11f9e9911a722c84d946b9e">Bugs that cannot be reproduced in a small example</a></li>
<li><a href="#e3136734a1505943c6f4fe2c95e278f4">Bugs that only happen occasionally</a></li>
<li><a href="#e76fa2d663246cc5414931d939ea4480">New bugs that used to work (regressions)</a></li></ul>
</li>
<li><a href="#73ea5953d68b2c20a82bb94240f6fe17">Feature requests</a></li></ul>
</li></ul>
</div>

	<a name="357f8a670a20fe63678f44f66a869d84"></a>	<h1>Reporting bugs in Qt</h1>

	<p>Bugs in Qt can be reported at <a href="http://bugreports.qt-project.org/">http://bugreports.qt-project.org/</a> <em>[bugreports.qt-project.org]</em>. The quality of the bug report can dramatically impact how likely it is that the bug will be fixed. This page describes how to report bugs, and tips for making high quality reports.</p>

	<a name="9846e9fb82ed771127b8a2e7be460673"></a>	<h2>Step by step</h2>

	<p>Here is a nutshell description of how to report a bug:</p>

	<ol>
		<li>Visit <a href="http://bugreports.qt-project.org/">bugreports.qt-project.org</a> <em>[bugreports.qt-project.org]</em></li>
		<li>If it&#8217;s your first time, create an account (which is separate from your DevNet account). Make sure to supply a valid email address; Qt developers sometimes need to ask for more details regarding a bug, and this is the only way they can reach you. Your email address will not be exposed; it is only possible to contact you by commenting on your reports (or commenting on bugs you&#8217;re watching).</li>
		<li>Use the “Quick Search” field in the top right to try to find any similar bugs. If you find one, then&#8230;
	<ul>
		<li>Leave a comment with any additional info you have.</li>
		<li>Click &#8220;Vote&#8221; &#8212; You will usually have a higher chance of having your bug fixed by voting on an already existing bug than creating a new one.</li>
		<li>Add yourself as a watcher, if you want to track the progress of the bug via email.</li>
	</ul></li>
		<li>If you don’t find a bug report which matches your issue, then click “Create New Issues”, and fill out the fields.</li>
	</ol>

	<a name="290612199861c31d1036b185b4e69b75"></a>	<h3>Summary</h3>

	<ul>
		<li>Enter a short but descriptive text explaining the bug in a sentence.</li>
		<li>This should include an overall overview over how the bug happens without going into too much detail. They key is to think about what other people might search for.
	<ul>
		<li>Bad example: QLineEdit always goes wrong</li>
		<li>Good example: QLineEdit crashes in paintEvent when using an input method in right-to-left mode.</li>
		<li>Too long: QLineEdit crashes in paintEvent at the for loop which draws characters. This happens if I use an input method based on <span class="caps">XIM</span> and then set it to Arabic, which also switches to right-to-left mode. Then I try to type something, and it crashes.</li>
		<li>A long text like the one above should be put in the description instead; the summary should be kept short.</li>
	</ul></li>
	</ul>

	<a name="171e20c54986bfe67f6e1b951c129e16"></a>	<h3>Affects Version</h3>

	<ul>
		<li>Select the Qt version where you’re able to reproduce the bug.</li>
	</ul>

	<a name="05bbb43b3d923283e0b6ffafd088f41f"></a>	<h3>Components</h3>

	<ul>
		<li>Select the component which best fits the location of the bug.</li>
		<li>You can select more than one component, using Ctrl-click. For example, if a widget problem is specific to Windows, you should select “Platform: Windows” and “Widgets”.</li>
	</ul>

	<a name="b5a7adde1af5c87d7fd797b6245c2a39"></a>	<h3>Description</h3>

	<ul>
		<li>A longer text describing, step by step, the minimum amount of actions required to reproduce the bug.</li>
		<li>A good form to follow is this:
	<ol>
		<li>What did you do?</li>
		<li>What did you expect to happen?</li>
		<li>What happened instead?</li>
	</ol></li>
		<li>If the bug is a crash, a vital piece of information in crash reports is the stacktrace. Retrieving a stracktrace is platform specific, however, all of them require that Qt be built with debug symbols. If you compiled Qt yourself, then make sure you supplied “-debug” during configure time. If you’re using binaries, then make sure you’ve installed the corresponding debug packages. Paste the stacktrace in the description if it’s not terribly long (surround it by <code>&#123;code&#125;My stack trace&#123;code&#125;</code> to make it stand out from the rest), else attach it as a text file.</li>
		<li>Finally, please supply any more details that you may have in this field. For instance “This bug only occurs if I have compositing enabled”, or “This is a regression from 4.6.1”.</li>
	</ul>

	<a name="0ba29c6a1afacf586b03a26162c72274"></a>	<h3>Environment</h3>

	<ul>
		<li>Input as detailed description of your operating system, window manager, compiler, and any other pertinent information needed to reproduce the bug.</li>
		<li>Also put the exact name of the package you used as well as the contents of the .tag file in the package if there is one. If using Git, please give the branch name and the commit ID.</li>
	</ul>

	<a name="e9cb217697088a98b1937d111d936281"></a>	<h3>Attachment</h3>

	<ul>
		<li>This often neglected field is perhaps one of the most important. Here is where you can make a simple application that reproduces the bug and attach it.</li>
		<li>Ideally, a stand-alone main.cpp file which only has the bare minimum amount of code needed to reproduce the bug should be attached. An application that reproduces the bug is the single most useful piece of information for a developer to try to identify and fix a bug.</li>
		<li>Remember that the application (referred to as the test case) should follow the <span class="caps">SSCCE</span> rule:
	<ul>
		<li><strong>Short</strong> – Make it as short as possible. It is much easier to spot a problem in short code.</li>
		<li><strong>Self Contained</strong> – Make sure you do not rely on any external libraries or files other than Qt. If you need extra nonstandard headers, copy paste what you need (but not more than you need) into the main.cpp file. If you need moc, you can put #include &#8220;main.moc&#8221; at the end of the file to force moc to include the metacode directly into your file.</li>
		<li><strong>Correct</strong> – Make sure your application compiles and is correct code. For example, dereferencing a zero-pointer in the example code, is clearly not a bug in Qt.</li>
		<li><strong>Example</strong> – Make sure that the application actually demonstrates the problem you are trying to solve.</li>
	</ul></li>
		<li>A unit test (of the kind you can find in the $QTDIR/tests/auto folder in the Git repository) is even better than a simple example, since we can add it to our automated tests to make sure this bug doesn’t regress later.</li>
		<li>A screen shot, or longer stacktrace is also incredibly useful.</li>
	</ul>

	<a name="f2c2fe6dfaf8dd562ab315bdf62bc0ae"></a>	<h3>Source Req ID</h3>

	<ul>
		<li>Leave blank</li>
	</ul>

	<a name="f90da09ffa91c6fd8644ef568457e999"></a>	<h3>Followed By</h3>

	<ul>
		<li>Not needed</li>
	</ul>

	<p><strong>Then click “Create”</strong></p>

	<p>You can now either start hacking on Qt to find a solution and file a merge request, or wait until a Troll prioritizes, schedules, and fixes the bug for a release.</p>

	<a name="0c728bc4350ee4f69d547e1d13777bfc"></a>	<h2>In short</h2>

	<p>Always provide as much information as possible together with your bug report. The more the better. Also, please specify if a bug is a regression or not. If it is, then specify what version it worked in last. Finally, supplying a testcase main.cpp is a sure-fire way to land in the “fasttrack” of bug resolution and into the hearts of the Trolls. Also, providing a testcase is a great means of preventing the same bug from cropping up in the future as a regression.</p>

	<p>By creating a high quality bug report, you will gain priority over those less descriptive, and your chances of a speedy resolution increased. If after all your hard work we still reject your bug, then please don’t take it personally. Instead, add a comment in the report and explain your situation so that we can re-evaluate it. After all, we also make mistakes.</p>

	<a name="7fdfb42804c5e44eb6a000e5021d1a09"></a>	<h2>Bugs with confidential information</h2>

	<p>If you are a Nokia developer and you need to submit a bug report that has confidential information in it, you should use <a href="https://qtrequirements.europe.nokia.com/">https://qtrequirements.europe.nokia.com/</a> <em>[qtrequirements.europe.nokia.com]</em> instead. However, we encourage everyone to use the public bug tracker whenever possible. That way a lot more people will have access to the bug report, preventing duplicates and giving external developers a chance to track or even fix those bugs as well.</p>

	<a name="8799d8eccc2b59aafc42964bce63d5e0"></a>	<h2>Tips for dealing with difficult bugs</h2>

	<p>Some bugs may be hard to reproduce, for example, it may happen only occasionally, it cannot be reproduced in a small example, or it only happens in a specific environment. However, for the Qt developers to be able to help you, it is still important that they are analyzed in enough detail so that the developer is able to see the problem for himself. This section describes some tips for dealing with such bugs.</p>

	<a name="97f896e5a78e0d560024bb42711113ed"></a>	<h3>Bugs that occur in a specific environment</h3>

	<p>This type of bug often follows this pattern:</p>

	<ol>
		<li>You identify a bug on your computer.</li>
		<li>You manage to create a test case for it and submit that to <a href="http://bugreports.qt-project.org/">http://bugreports.qt-project.org/.</a> <em>[bugreports.qt-project.org]</em></li>
		<li>A developer from Qt tries the example, but claims that he can not reproduce it.</li>
		<li>He/she may also close the bug with “Cannot reproduce” or “Need more info”.</li>
	</ol>

	<p><strong>At this point, it important not to lose hope.</strong> These bugs are tricky, and solving them typically requires a lot of back and forth communication, since the bug can only be reproduced on the reporter’s system.</p>

	<p>You should start by asking for pointers in the comment field. A typical question would be: “Where would be a good place in the code to start debugging or place some debug print statements?” Most developers should respond favorably to this, and suggest places to look at in detail, or specific variables that you can check for consistency while the code runs. This, in turn, may lead to additional questions being asked, which hopefully leads to either the bug being identified, or the Qt developer being able to reproduce the problem on his machine using the new information.</p>

	<a name="e38f838eb11f9e9911a722c84d946b9e"></a>	<h3>Bugs that cannot be reproduced in a small example</h3>

	<p>Typical for this type of bug is that in your big application, the bug can be easily triggered by enabling a certain attribute, for example <div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">widget<span class="sy0">-&gt;</span><span class="me3">setAttribute</span><span class="br0">&#40;</span><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">Qt</span></a><span class="sy0">::</span><span class="me2">WA_NativeWindow</span><span class="br0">&#41;</span></div></li>
</ol></div> However, when you try to reproduce the same thing in a small example, the bug cannot be seen anymore.</p>

	<p>One effective way of dealing with such bugs is the divide-and-conquer method. This method consists of a series of steps, where at each step, you remove a part of your program. Each time you remove something, you need to verify that the bug can still be reproduced, and if it can’t you have to go back to the previous step and choose a different part to remove.</p>

	<p>Start by removing code that is likely to be irrelevant to be bug, for example if the bug is a rendering bug, you should quite safely be able to remove networking code. Similarly, if your program has 20 QPushButtons, but only one is required to demonstrate the problem, remove the other 19.</p>

	<p>Eventually, your program may reach a point where you are not able to remove any more code without the bug disappearing. Such a program is an excellent candidate for a test case that you can submit to the bug report. This whole process can take quite some time, but is sometimes the only way of isolating the real cause of a bug.</p>

	<a name="e3136734a1505943c6f4fe2c95e278f4"></a>	<h3>Bugs that only happen occasionally</h3>

	<p>These are usually the hardest types of bugs. The key here is to be prepared when the bug does happen. This can mean several things, for example, if the bug is a crash, make sure that you are always running in a debugger so that you can look at the stack when the crash happens. If there is a behavioral bug, for example a visual problem or corrupt data, try to put debug prints in various key locations, printing the value of variables that may be relevant to the problem, and make sure you always log those values. Then, when the problem happens, you can see at which point the variables started to go wrong.</p>

	<p>Like the bugs that only happen in a certain environment, this is something that you can ask about in the bug comment field and most developers should give you some hints about which places and variables may be important to your type of problem. The Qt mailing lists are also a good place to ask, as well as the #qt-labs channel on the Freenode <span class="caps">IRC</span> network. (For a full list of <span class="caps">IRC</span> channels of interest to Qt developers, see  <a href="http://qt-project.org/wiki/OnlineCommunities">OnlineCommunities</a>.)</p>

	<a name="e76fa2d663246cc5414931d939ea4480"></a>	<h3>New bugs that used to work (regressions)</h3>

	<p>If you have a bug in Qt that is difficult to produce a test case for, but you know that the feature worked in the past, bisecting can be of a great help to pinpoint the problem. Bisection is a process in the Git version control tool that allows you to iteratively search for the exact commit that broke a given feature. A full description of the git-bisect process will not be given here, but this will give you an idea of the process involved:</p>

	<ol>
		<li><code>git bisect start</code></li>
		<li><code>git bisect good v4.6.2</code> (Mark the previous version you know about where the feature worked)</li>
		<li><code>git bisect bad</code> (Mark the current commit as broken)</li>
		<li>Git should produce: Bisecting: 675 revisions left to test after this (roughly 7 steps)</li>
		<li>Compile Qt as well as your application, and test if the bug is present.</li>
		<li><code>git bisect &lt;good|bad&gt;</code> (Good or bad depending on the outcome of the bug test)</li>
		<li>Repeat the previuos two steps.</li>
		<li>Eventually, git-bisect will tell you which commit introduced the problem. Include this commit in your bug report.</li>
	</ol>

	<p>For more information on bisecting, please see the <a href="http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html">git-bisect man page.</a> <em>[kernel.org]</em></p>

	<a name="73ea5953d68b2c20a82bb94240f6fe17"></a>	<h2>Feature requests</h2>

	<p>Feature requests are a bit different from bugs. They often (but not always) have a wider scope than bugs. For example, “Port Qt to platform X” is a feature request that sounds simple, but has a huge scope.</p>

	<p>The important thing to remember when submitting feature requests, particularly those with a big scope, is to be specific in the description:</p>

	<ul>
		<li>Bad example: Please add QWidget::nudgeWidget().</li>
		<li>Good example: Please add a function to QWidget that will make the window shake for a short period of time, like when the user enters a bad password. The function can be called something like nudgeWidget().</li>
	</ul>

	<p>In the second example, it is much clearer to the developer what the feature request actually means, since the meaning of “nudge” is ambiguous (it could also mean blink the colors of the window, like some advertisement popups do when browsing the Internet).</p>

	<p>Another very important piece of information in feature requests is to attach use cases. Use cases are concrete examples on situations where the feature will be used. For instance, the widget shaking in response to a bad password in the example above, is one such use case.</p>

	<p>Even though the use case may be crystal clear to the reporter, it may not be to the developer, so it is better to be explicit about it. If you have several distinct use cases, feel free to list more than one. That makes it more obvious that the feature can be useful for many people.</p>

	<p>And last, but not least, if a feature request depends on many small improvements, it is usually better to split it into several feature requests as long as it makes sense to implement them separately. This makes it easier to review each request independently, and each one can be assigned to the most appropriate team or person.</p>]]></description>
      <dc:subject>ReportingBugsInQt</dc:subject>
      <dc:date>2013-05-11T23:56:59+00:00</dc:date>
    </item>

    <item>
      <title>Qt_Quick_Controls_for_Tizen</title>
      <link>http://qt&#45;project.org/wiki/Qt_Quick_Controls_for_Tizen</link>
      <guid>http://qt&#45;project.org/wiki/Qt_Quick_Controls_for_Tizen</guid>
      <description><![CDATA[]]></description>
      <dc:subject>Qt_Quick_Controls_for_Tizen</dc:subject>
      <dc:date>2013-05-11T21:54:24+00:00</dc:date>
    </item>

    <item>
      <title>Build Qt 5 for Tizen Emulator</title>
      <link>http://qt&#45;project.org/wiki/Build&#45;Qt&#45;5&#45;for&#45;Tizen&#45;Emulator</link>
      <guid>http://qt&#45;project.org/wiki/Build&#45;Qt&#45;5&#45;for&#45;Tizen&#45;Emulator</guid>
      <description><![CDATA[<p>To build Qt 5 for Tizen emulator please use <a href="https://gitorious.org/tizenbuildtools">tizenbuildtools</a> <em>[gitorious.org]</em> repository and follow <a href="https://gitorious.org/tizenbuildtools/tizenbuildtools/blobs/master/emulator/README"><span class="caps">README</span></a> <em>[gitorious.org]</em> file</p>]]></description>
      <dc:subject>Build Qt 5 for Tizen Emulator</dc:subject>
      <dc:date>2013-05-11T21:48:42+00:00</dc:date>
    </item>

    <item>
      <title>Build_Qt_for_Tizen_Emulator</title>
      <link>http://qt&#45;project.org/wiki/Build_Qt_for_Tizen_Emulator</link>
      <guid>http://qt&#45;project.org/wiki/Build_Qt_for_Tizen_Emulator</guid>
      <description><![CDATA[]]></description>
      <dc:subject>Build_Qt_for_Tizen_Emulator</dc:subject>
      <dc:date>2013-05-11T21:48:31+00:00</dc:date>
    </item>

    <item>
      <title>OnlineCommunities</title>
      <link>http://qt&#45;project.org/wiki/OnlineCommunities</link>
      <guid>http://qt&#45;project.org/wiki/OnlineCommunities</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#77873c3e8c23d11e10581bdb640d413c">Online Communities</a><ul>
<li><a href="#8189ecf686157db0c0274c1f49373318">International</a></li>
<li><a href="#fd7cfb00ff818bba4ce97ae5291ae16a">IRC channels</a></li>
<li><a href="#ad225f707802ba118c22987186dd38e8">French</a></li>
<li><a href="#86bc3115eb4e9873ac96904a4a68e19e">German</a></li>
<li><a href="#4be8e06d27bca7e1828f2fa9a49ca985">Italian</a></li>
<li><a href="#cb5480c32e71778852b08ae1e8712775">Spanish</a></li>
<li><a href="#deba6920e70615401385fe1fb5a379ec">Russian</a></li>
<li><a href="#c730389bc8d99e59c867766babdd48b5">Polish</a></li>
<li><a href="#8032c149d0e48ad38ef6b60289f910cd">Persian</a></li>
<li><a href="#3b261136e3c33f35e0a58611b1f344cb">Chinese</a></li>
<li><a href="#f32ced6a9ba164c4b3c047fd1d7c882e">Japanese</a></li>
<li><a href="#d0bdb3cde477d82e766da05ebda50ccb">Korean</a></li>
<li><a href="#c1612bbdebfa45467e8ab814e08daff1">Turkish</a></li>
<li><a href="#272ccb8592bafde0baf1dedce0fd3ac2">Arabic</a></li>
<li><a href="#30e32c7c4cf434e9c75e60c14c442541">Portuguese</a></li>
<li><a href="#56b75ad7743f7dbb90d5167247b7ae9b">Qt Everywhere Meetups</a></li></ul>
</li></ul>
</div>

	<p><strong>English</strong> <a href="http://qt-project.org/wiki/OnlineCommunities_Bulgarian">Български</a>  <a href="http://qt-project.org/wiki/OnlineCommunities_SimplifiedChinese">简体中文</a></p>

	<a name="77873c3e8c23d11e10581bdb640d413c"></a>	<h1>Online Communities</h1>

	<p>Up here in the calm and peaceful hills of Norway, we have been browsing the web during the long, dark winter nights. We found resources ranging from small how-tos to extensive tutorials, from beginner forums to places for exchange between experts. The choice is yours!</p>

	<p>If you know about a site not listed here or happen to run your own community, feel free to add it.</p>

	<a name="8189ecf686157db0c0274c1f49373318"></a>	<h2>International</h2>

	<ul>
		<li><a href="/forums">Qt Developer Network Forums</a></li>
		<li><a href="http://lists.qt-project.org/">Qt mailing lists</a> <em>[lists.qt-project.org]</em></li>
		<li><a href="http://techbase.kde.org/"><span class="caps">KDE</span> Techbase</a> <em>[techbase.kde.org]</em></li>
		<li><a href="http://qtcentre.org/">QtCentre.org</a> <em>[qtcentre.org]</em></li>
		<li><a href="http://www.qtforum.org/">QtForum.org</a> <em>[qtforum.org]</em></li>
		<li><a href="http://www.digitalfanatics.org/projects/qt_tutorial/">The Independent Qt Tutorial</a> <em>[digitalfanatics.org]</em></li>
		<li><a href="http://gitorious.org/qt-examples/">qt-examples</a> <em>[gitorious.org]</em></li>
		<li><a href="http://qt-apps.org/">Qt-Apps</a> <em>[qt-apps.org]</em></li>
	</ul>

	<a name="fd7cfb00ff818bba4ce97ae5291ae16a"></a>	<h2><span class="caps">IRC</span> channels</h2>

	<p>Qt is present on <a href="irc://irc.freenode.net/">Freenode</a> <em>[irc.freenode.net]</em> </p>

<table class="infotable line"><tr style="background:#009900;"><th>Channel </th><th>Topic </th></tr><tr style="background:#ddd;"><td> #qt </td><td> General Qt discussion and help </td></tr><tr><td> #qt-qml </td><td> <span class="caps">QML</span> discussion and help </td></tr><tr style="background:#ddd;"><td> #qt-components </td><td>  QtQuick.Controls project(former Qt Quick components project) </td></tr><tr><td> #qt-creator </td><td>  Development of and with Qt Creator </td></tr><tr style="background:#ddd;"><td> #qt-mobility </td><td>  Qt Mobility <span class="caps">API</span>s </td></tr><tr><td> #qt-symbian </td><td>  Qt on Symbian </td></tr><tr style="background:#ddd;"><td> #qt-project </td><td> The <a href="http://qt-project.org/">Qt Project</a> <em>[qt-project.org]</em> &#8211; everything about open governance, etc. </td></tr><tr><td> #qt-labs </td><td>  Development of Qt itself </td></tr><tr style="background:#ddd;"><td> #qt-qa </td><td>  Qt Quality Assurance </td></tr><tr><td> #qtwebkit </td><td>  QtWebKit project </td></tr><tr style="background:#ddd;"><td> #qt-maemo </td><td>  Qt on Maemo/MeeGo </td></tr><tr><td> #qtjambi </td><td>  Qt for Java </td></tr><tr style="background:#ddd;"><td> #qt-lighthouse </td><td>  Qt Lighthouse project </td></tr><tr><td> #qt-3d </td><td>  Qt 3D project </td></tr><tr style="background:#ddd;"><td> #qt-fr </td><td>  French Qt community </td></tr><tr><td> #qt-ru </td><td>  Russian Qt community </td></tr><tr style="background:#ddd;"><td> #qt-ja </td><td>  Japanese Qt community </td></tr><tr><td> #qt-cn </td><td>  Chinese Qt community </td></tr><tr style="background:#ddd;"><td> #necessitas </td><td> <a href="http://qt-project.org/wiki/Necessitas">Necessitas</a> is a community-driven lighthouse-based port of Qt to Android. The Qt Project port of Qt 5 to Android is also discussed on this channel. </td></tr><tr><td> #qtjambi </td><td> <a href="http://qt-project.org/wiki/Qt-Jambi">Qt Jambi</a> is Qt for Java. </td></tr><tr style="background:#ddd;"><td> #pyside </td><td> <a href="http://qt-project.org/wiki/PySide">PySide</a> provides <span class="caps">LGPL</span>-licensed Python bindings for the Qt framework. </td></tr></table>

	<a name="ad225f707802ba118c22987186dd38e8"></a>	<h2>French</h2>

	<ul>
		<li><a href="http://qt.developpez.com/">qt.developpez.com</a> <em>[qt.developpez.com]</em></li>
		<li><a href="http://www.qtfr.org/">Qtfr.org</a> <em>[qtfr.org]</em></li>
		<li><a href="http://www.siteduzero.com/">Le Site du Zéro</a> <em>[siteduzero.com]</em></li>
	</ul>

	<a name="86bc3115eb4e9873ac96904a4a68e19e"></a>	<h2>German</h2>

	<ul>
		<li><a href="http://www.qtforum.de/">QtForum.de</a> <em>[qtforum.de]</em></li>
	</ul>

	<a name="4be8e06d27bca7e1828f2fa9a49ca985"></a>	<h2>Italian</h2>

	<ul>
		<li><a href="http://www.qt-italia.org/">Qt-Italia.org</a> <em>[qt-italia.org]</em></li>
	</ul>

	<a name="cb5480c32e71778852b08ae1e8712775"></a>	<h2>Spanish</h2>

	<ul>
		<li><a href="http://www.zonaqt.com/">Zona Qt</a> <em>[zonaqt.com]</em></li>
	</ul>

	<a name="deba6920e70615401385fe1fb5a379ec"></a>	<h2>Russian</h2>

	<ul>
		<li><a href="http://prog.org.ru/forum/index.php?action=forum">Russian Qt forum</a> <em>[prog.org.ru]</em></li>
		<li><a href="http://crossplatform.ru/">crossplatform.ru</a> <em>[crossplatform.ru]</em> &#8211; <a href="http://doc.crossplatform.ru/">Qt Documentation</a> <em>[doc.crossplatform.ru]</em>, <a href="http://www.forum.crossplatform.ru/">Forum</a> <em>[forum.crossplatform.ru]</em>, <a href="http://www.crossplatform.ru/sources/qt/">Sources</a> <em>[crossplatform.ru]</em></li>
		<li><a href="http://www.learnqt.com/">learnqt.com</a> <em>[learnqt.com]</em></li>
		<li><a href="http://forum.vingrad.ru/forum/c-c++QT-gtk-wxWidgets.html">Vingrad: cross-platform programming</a> <em>[forum.vingrad.ru]</em></li>
		<li><a href="http://qt-way-notes.blogspot.com">Qt Way Notes</a> <em>[qt-way-notes.blogspot.com]</em></li>
		<li><a href="http://va-sorokin.blogspot.com">C++, Qt, Nokia, Mobile devices blog</a> <em>[va-sorokin.blogspot.com]</em></li>
		<li><a href="http://qt-notes.rpod.ru/" title="Russian podcast">Qt Notes</a> <em>[qt-notes.rpod.ru]</em></li>
		<li><a href="http://qt.e-werest.org">Qt.E-WeREST</a> <em>[qt.e-werest.org]</em></li>
	</ul>

	<a name="c730389bc8d99e59c867766babdd48b5"></a>	<h2>Polish</h2>

	<ul>
		<li><a href="http://www.linux.rk.edu.pl/w/p/qt/">linux.rk.edu.pl</a> <em>[linux.rk.edu.pl]</em></li>
		<li><a href="http://www.devqt.pl">http://www.devqt.pl</a> <em>[devqt.pl]</em></li>
	</ul>

	<a name="8032c149d0e48ad38ef6b60289f910cd"></a>	<h2>Persian</h2>

	<ul>
		<li><a href="http://www.qtexperts.ir">QtExperts.ir</a> <em>[qtexperts.ir]</em> (or shortened <a href="http://qte.ir">qte.ir</a> <em>[qte.ir]</em>)</li>
	</ul>

	<a name="3b261136e3c33f35e0a58611b1f344cb"></a>	<h2>Chinese</h2>

	<ul>
		<li><a href="http://www.thisisqt.com/">thisisqt.com</a> <em>[thisisqt.com]</em></li>
		<li><a href="http://www.qtcn.org/">qtcn.org</a> <em>[qtcn.org]</em></li>
		<li><a href="http://qt.csdn.net/">qt.csdn.net</a> <em>[qt.csdn.net]</em></li>
	</ul>

	<a name="f32ced6a9ba164c4b3c047fd1d7c882e"></a>	<h2>Japanese</h2>

	<ul>
		<li><a href="http://labs.qt.nokia.co.jp/">Qt Labs Japan</a> <em>[labs.qt.nokia.co.jp]</em></li>
		<li><a href="https://groups.google.com/group/qtFukuoka">Qt at Fukuoka</a> <em>[groups.google.com]</em></li>
		<li><a href="http://groups.google.com/group/QtKanto">Qt at Kanto</a> <em>[groups.google.com]</em></li>
		<li><a href="http://groups.google.com/group/qt-nagoya">Qt at Nagoya</a> <em>[groups.google.com]</em></li>
	</ul>

	<a name="d0bdb3cde477d82e766da05ebda50ccb"></a>	<h2>Korean</h2>

	<ul>
		<li><a href="http://www.korone.net/">Korone.net</a> <em>[korone.net]</em></li>
		<li><a href="http://www.qt-dev.com/">qt-dev.com</a> <em>[qt-dev.com]</em></li>
	</ul>

	<a name="c1612bbdebfa45467e8ab814e08daff1"></a>	<h2>Turkish</h2>

	<ul>
		<li><a href="http://www.qtturkiye.com/">Qt Türkiye</a> <em>[qtturkiye.com]</em></li>
	</ul>

	<a name="272ccb8592bafde0baf1dedce0fd3ac2"></a>	<h2>Arabic</h2>

	<ul>
		<li><a href="http://qt-ar.org/">qt-ar.org</a> <em>[qt-ar.org]</em></li>
	</ul>

	<a name="30e32c7c4cf434e9c75e60c14c442541"></a>	<h2>Portuguese</h2>

	<ul>
		<li><a href="http://blog.qtlabs.org.br">qtlabs.org.br</a> <em>[blog.qtlabs.org.br]</em></li>
	</ul>

	<a name="56b75ad7743f7dbb90d5167247b7ae9b"></a>	<h2>Qt Everywhere Meetups</h2>

	<p>If you want to meet Qt developers and fellows in person please join <a href="http://developer.qt.nokia.com/meetups">Qt Meetups</a> <em>[developer.qt.nokia.com]</em>. Check the provided link for details and find out a Qt community near you!</p>]]></description>
      <dc:subject>OnlineCommunities</dc:subject>
      <dc:date>2013-05-11T19:20:38+00:00</dc:date>
    </item>

    <item>
      <title>Setting up Gerrit</title>
      <link>http://qt&#45;project.org/wiki/Setting&#45;up&#45;Gerrit</link>
      <guid>http://qt&#45;project.org/wiki/Setting&#45;up&#45;Gerrit</guid>
      <description><![CDATA[<a name="15d2bf90880a516b0ae3124d9560a903"></a>	<h1>Setting Up Gerrit</h1>

	<p>All projects under the Qt Open Governance umbrella are hosted at <a href="http://codereview.qt-project.org">codereview.qt-project.org</a> <em>[codereview.qt-project.org]</em>. These repositories are mirrored on <a href="http://qt.gitorious.org">Gitorious</a> <em>[qt.gitorious.org]</em>.</p>

	<a name="4270b7187ab2889b89d0f585d4c97bd1"></a>	<h2> How to get started &#8211; Gerrit registration   </h2>

	<p>Go to <a href="http://codereview.qt-project.org">codereview.qt-project.org</a> <em>[codereview.qt-project.org]</em>  </p>

	<ul>
		<li>Log in with your public <span class="caps">JIRA</span> credentials (see <a href="http://developer.qt.nokia.com/videos/watch/gerrit_account_set_up_and_getting_the_qt_source"><span class="caps">VIDEO</span>: Account set up and getting the source &#8211; 1min 55 sec</a> <em>[developer.qt.nokia.com]</em> )
	<ul>
		<li><strong>Note</strong>: Gerrit usernames are case-sensitive, but <span class="caps">JIRA</span> usernames are not. If you attempt to log into Gerrit with different capitalizations, you will end up with multiple accounts.</li>
	</ul></li>
		<li>Go to settings, configure username (under contact information), upload public <a href="https://help.github.com/articles/generating-ssh-keys"><span class="caps">SSH</span> key</a> <em>[help.github.com]</em></li>
		<li>Add an e-mail, confirm it by clicking the link in the e-mail
	<ul>
		<li>Both the e-mail and the username will be readable by everyone. Use an alias + a custom e-mail address if you want to stay anonymous (note that this is discouraged).</li>
	</ul></li>
	</ul>

	<a name="0c65d88ba55f29fbaf09826efcc59efa"></a>	<h2> Local Setup </h2>

	<p>Configure <span class="caps">SSH</span> properly (the <span class="caps">URL</span>s below rely on this). Add this to your <code>~/.ssh/config</code> (Windows: <code>C:\Users\%USERNAME%\.ssh\config</code>): </p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;Host codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; Port <span class="nu0">29418</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; User <span class="sy0">&lt;</span>Gerrit<span class="sy0">/</span>Jira username<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>If you are in a corporate environment (e.g. behind a firewall) which only allows Ports 80 (<span class="caps">HTTP</span>) and 443 (<span class="caps">HTTPS</span>), use the following configuration instead:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;Host codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; HostName ssh.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; Port <span class="nu0">443</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; User <span class="sy0">&lt;</span>Gerrit<span class="sy0">/</span>Jira username<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p><strong><span class="caps">NOTE</span>:</strong> The following steps need to be applied to every clone:</p>

	<p>Install the hook generating Commit-Id files into your top level project directory, as well as all sub-repositories (e.g. qtbase.git) either through</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ scp <span class="sy0">-</span>p codereview.<span class="me1">qt</span><span class="sy0">-</span>project.<span class="me1">org</span><span class="sy0">:</span>hooks<span class="sy0">/</span>commit<span class="sy0">-</span>msg .<span class="me1">git</span><span class="sy0">/</span>hooks</div></li>
</ol></div></p>

	<p>or by downloading the file via browser: <a href="http://codereview.qt-project.org/tools/hooks/commit-msg">commit-msg</a> <em>[codereview.qt-project.org]</em> and putting it into the <code>.git/hooks</code> directory (make sure it is executable).</p>

	<p>It is recommended to install the git_post_commit_hook from the <a href="https://qt.gitorious.org/qt/qtrepotools">qtrepotools</a> <em>[qt.gitorious.org]</em> repository. This gives you the checks of the <a href="http://qt-project.org/wiki/Early-Warning-System">Sanity Bot</a> locally. To do this, save the script<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#! /bin/sh</span></div></li>
<li class="li1"><div class="de1">exec <span class="st0">&quot;&lt;path to git clone&gt;/qtrepotools/git-hooks/git_post_commit_hook&quot;</span> <span class="st0">&quot;$@&quot;</span></div></li>
</ol></div><br />
into each &lt;path to git clone&gt;\.git\hooks\post-commit</p>

	<p><strong><span class="caps">NOTE</span>:</strong> Starting with git 1.7.8, if <code>&lt;module name&gt;/.git</code> contains <code>gitdir: ../.git/modules/&lt;module name&gt;</code>, you need to put the submodule hooks in <code>.git/modules/&lt;module name&gt;/hooks</code> instead of <code>&lt;module name&gt;/.git/hooks</code>.</p>

	<a name="975f72685a7cda84b36178cec7cd962e"></a>	<h3> Configuring Git  </h3>

	<p>We are developing in a heterogeneous environment with both Unix and Windows machines. Therefore it is imperative to have all files in the repository in the canonical LF-only format. Therefore, Windows users <strong>must</strong> run</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global core.<span class="me1">autocrlf</span> <span class="kw2">true</span></div></li>
</ol></div></p>

	<p>to automatically get <span class="caps">CRLF</span> line endings which are suitable for the native tools, and Unix users <em>should</em> use</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global core.<span class="me1">autocrlf</span> input</div></li>
</ol></div></p>

	<p>(this is a safety measure for the case where files with <span class="caps">CRLF</span> line endings get into the file system &#8211; this can happen when archives are unpacked, attachments saved, etc.).</p>

	<p>To be able to create commits which can be pushed to the server, you need to set up your committer information correctly:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global user.<span class="me1">name</span> <span class="st0">&quot;Your Name&quot;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global user.<span class="me1">email</span> <span class="st0">&quot;me@example.com&quot;</span></div></li>
</ol></div></p>

	<p>Please do not use nicknames or pseudonyms instead of the real name unless you have really good reasons.<br />
Gerrit will not accept your commits unless the committer information matches the email address(es) you registered.</p>

	<p>To facilitate following the style guide for commit messages, it is recommended to install the Qt commit message template:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global commit.<span class="kw2">template</span> <span class="sy0">&lt;</span>path to qt5.<span class="me1">git</span> or <a href="http://qt-project.org/doc/Qt.html"><span class="kw5">qt</span></a>.<span class="me1">git</span><span class="sy0">&gt;/</span>.<span class="me1">commit</span><span class="sy0">-</span><span class="kw2">template</span></div></li>
</ol></div></p>

	<p>A common mistake is forgetting to add new files to a commit. Therefore it is recommended to set up git to always show them in <code>git stat</code> and <code>git commit</code>, even if this is somewhat slower (especially on Windows):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global status.<span class="me1">showuntrackedfiles</span> all</div></li>
</ol></div></p>

	<p>Git has a somewhat stupid default that <code>git push</code> will push <em>all</em> branches to the upstream repository, which is almost never what you want. To fix this, use:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global push.<span class="kw1">default</span> tracking</div></li>
</ol></div></p>

	<p>This is not relevant for mainline branches under Gerrit control, as all pushing happens with refs anyway, but it may be important for your private clones.</p>

	<p>Sometimes it is necessary to resolve the same conflicts multiple times. Git has the ability to record and replay conflict resolutions automatically, but &#8211; surprise surprise &#8211; it is not enabled by default. To fix it, run:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global rerere.<span class="me1">enabled</span> <span class="kw2">true</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global rerere.<span class="me1">autoupdate</span> <span class="kw2">true</span> &nbsp; <span class="co2"># this saves you the git add, but you should verify the result with git diff --staged</span></div></li>
</ol></div></p>

	<p><code>git pull</code> will show a nice diffstat, so you get an overview of the changes from upstream. <code>git pull &#8212;rebase</code> does not do that by default. But you want it:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global rebase.<span class="me1">stat</span> <span class="kw2">true</span></div></li>
</ol></div></p>

	<p>To get nicely colored patches (from <code>git diff</code>, <code>git log -p</code>, <code>git show</code>, etc.), use this:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global color.<span class="me1">ui</span> <span class="kw4">auto</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global core.<span class="me1">pager</span> <span class="st0">&quot;less -FRSX&quot;</span></div></li>
</ol></div></p>

	<p>Git supports aliases which you can use to save yourself some typing. For example, these (any similarity with subversion command aliases is purely accidental ;)):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global alias.<span class="me1">di</span> diff</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global alias.<span class="me1">ci</span> commit</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global alias.<span class="me1">co</span> checkout</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global alias.<span class="me1">ann</span> blame</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; $ git config <span class="sy0">--</span>global alias.<span class="me1">st</span> status</div></li>
</ol></div></p>

	<a name="0287854fb98de436315b35ccfb617998"></a>	<h3> Using Existing clones  </h3>

	<p>Add a <code>gerrit</code> remote pointing to codereview.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git remote add gerrit ssh<span class="sy0">:</span><span class="co1">//codereview.qt-project.org/qt/&lt;qt5 or the submodule name you have checked out&gt;</span></div></li>
</ol></div></p>

	<p>For Qt 4.8, use</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git remote add gerrit ssh<span class="sy0">:</span><span class="co1">//codereview.qt-project.org/qt/qt</span></div></li>
</ol></div></p>

	<a name="bf8aa9648651d4dab8aafb6408a51427"></a>	<h3> Cloning repositories </h3>

	<p>You should clone from the repositories hosted at <a href="http://qt.gitorious.org/">qt.gitorious.org</a> <em>[qt.gitorious.org]</em> and track changes from there in order to keep the load on Gerrit down.</p>

	<a name="baa853ca8bfeaf08f22e93dc2d5f9df5"></a>	<h4> Cloning Qt4</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qt.git</span></div></li>
</ol></div></p>

	<p>Note that Qt4 does not have a <code>master</code> branch (since no 4.9 is planned). So, you should push changes to the <code>4.8</code> branch.</p>

	<a name="048a188815b56d32cb4c4a1427ad6f6d"></a>	<h4> Cloning Qt5  </h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qt5.git</span></div></li>
</ol></div></p>

	<p>It is recommended that, regardless of the server you use for the initial clone, you use the init-repository script in qt5 to set up the gerrit remote(s) pointing to codereview, and to clone the submodules.</p>

	<p>Alternatively, individual Qt5 submodules can be manually cloned as well. Follow Using Existing Clones above after cloning.</p>

	<a name="c64b3b1cc899afbc1872af81ebd02381"></a>	<h4> Cloning Qt Creator  </h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt-creator/qt-creator.git</span></div></li>
</ol></div></p>

	<a name="e948ac2dda3846bfff303f89c1ad266f"></a>	<h3>Pushing your local changes to gerrit</h3>

	<p>After you have committed your changes locally, you can push them to Gerrit like this (for example, <code>stable</code> branch):</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ git push gerrit HEAD<span class="sy0">:</span>refs<span class="sy0">/</span><span class="kw1">for</span><span class="sy0">/</span>stable</div></li>
</ol></div></p>

	<p>It is recommended you use the git-gpush script from the <a href="https://qt.gitorious.org/qt/qtrepotools">qtrepotools repository</a> <em>[qt.gitorious.org]</em>.</p>]]></description>
      <dc:subject>Setting up Gerrit</dc:subject>
      <dc:date>2013-05-10T13:25:44+00:00</dc:date>
    </item>

    <item>
      <title>CI_Failing_Tests</title>
      <link>http://qt&#45;project.org/wiki/CI_Failing_Tests</link>
      <guid>http://qt&#45;project.org/wiki/CI_Failing_Tests</guid>
      <description><![CDATA[<a name="5b752829c33d42f89dced0a2ca4eafbb"></a>	<h1>Most Commonly Failing Autotests in CI</h1>

	<p>This list is based on CI failures between April 9. to April 29., 2013.</p>

<table class="infotable line"><tr><td> <strong>Test name</strong> </td><td> <strong>Number of failures</strong> </td><td> <strong>Most common failure</strong> </td><td> <strong>Jira</strong> </td></tr><tr><td> tst_controls </td><td> 25 </td><td> Mainly crashes </td><td> seems to be real failures  </td></tr><tr><td> tst_qqmldebugjs  </td><td> 20 </td><td> Many different tests </td><td> <span class="caps">QTBUG</span>-28263 </td></tr><tr><td> tst_qmenubar  </td><td> 18 </td><td> tst_QMenuBar::task256322_highlight </td><td> <span class="caps">QTBUG</span>-30941 </td></tr><tr><td> tst_qfilesystemwatcher </td><td> 10 </td><td> tst_QFileSystemWatcher::watchFileAndItsDirectory(native backend) </td><td> <span class="caps">QTBUG</span>-30943 </td></tr><tr><td> tst_qsslsocket </td><td> 9 </td><td> Many different tests  </td><td> <span class="caps">QTBUG</span>-29941 </td></tr><tr><td> tst_qcamerabackend </td><td> 8 </td><td> tst_QCameraBackend::initTestCase() Received a fatal error. </td><td> <span class="caps">QTBUG</span>-29955 </td></tr><tr><td> tst_qquickloader </td><td> 7 </td><td> tst_QQuickLoader::asynchronous_clear() Compared values are not the same </td><td> <span class="caps">QTBUG</span>-30721 </td></tr><tr><td> tst_examples (qtquick1) </td><td> 6 </td><td>  </td><td>  </td></tr><tr><td> tst_qdeclarativeimage </td><td> 6 </td><td> tst_qdeclarativeimage::noLoading() </td><td> <del><span class="caps">QTBUG</span>-31065</del> </td></tr><tr><td> tst_qwidget </td><td> 4 </td><td> tst_QWidget::moveChild &amp; tst_QWidget::showAndMoveChild </td><td>  </td></tr><tr><td> tst_qtreeview </td><td> 3 </td><td> tst_QTreeView::clicked </td><td>  </td></tr><tr><td> tst_qgraphicssceneindex </td><td> 3 </td><td> tst_QGraphicsSceneIndex::clear </td><td>  </td></tr></table>

	<a name="abe0f141ac62ec2ab702aba9b52891fc"></a>	<h2>Autotests We Previously have had Focus on:</h2>

	<p>*CI failures (due to failing autotests) between March 25. to April 8., 2013.</p>

<table class="infotable line"><tr><td> <strong>Test name</strong> </td><td> <strong>Number of failures</strong> </td><td> <strong>Most common failure</strong> </td><td> <strong>Jira</strong> </td></tr><tr><td> tst_examples (qtquick1) </td><td> 23 </td><td> unexpected error talking to subprocess </td><td> <del><span class="caps">QTBUG</span>-30563</del> </td></tr><tr><td> tst_qsslsocket  </td><td> 23 </td><td> many different tests </td><td> <span class="caps">QTBUG</span>-29941 </td></tr><tr><td> tst_dialogs  </td><td> 16 </td><td> tst_dialogs::fileDialogNonModal() </td><td> <span class="caps">QTBUG</span>-30564 </td></tr><tr><td> tst_qmenubar </td><td> 16 </td><td> tst_QMenuBar::task256322_highlight()  </td><td> <del><span class="caps">QTBUG</span>-30565</del> </td></tr><tr><td> tst_qwidget </td><td> 16 </td><td> tst_QWidget::scroll(),  tst_QWidget::moveChild(&lt;<span class="caps">ALL</span> <span class="caps">DIRECTIONS</span>&gt;), tst_QWidget::showAndMoveChild()  </td><td> <del><span class="caps">QTBUG</span>-30566</del> </td></tr><tr><td> tst_qdockwidget </td><td> 14 </td><td> tst_QDockWidget::task169808_setFloating() </td><td> <span class="caps">QTBUG</span>-30567 </td></tr><tr><td> tst_qsslsocket_ onDemandCertificates_member </td><td> 13 </td><td> tst_QSslSocket_onDemandCertificates_member:: onDemandRootCertLoadingStaticMethods </td><td> <span class="caps">QTBUG</span>-30569 </td></tr><tr><td> tst_qsslsocket_ onDemandCertificates_static </td><td> 13 </td><td> tst_QSslSocket_onDemandCertificates_static:: onDemandRootCertLoadingStaticMethods </td><td> <span class="caps">QTBUG</span>-30570 </td></tr><tr><td> tst_qquickanimatedsprite </td><td> 12 </td><td> tst_qquickanimatedsprite::test_properties() </td><td> <span class="caps">QTBUG</span>-30571 </td></tr><tr><td> tst_xmlpatternsdiagnosticsts </td><td> 10 </td><td> QObject::connect: Cannot connect (null):: aboutToQuit() to QNativeWifiEngine::closeHandle() QtQA::App::TestRunner: Timed out after 450 seconds </td><td> <del><span class="caps">QTBUG</span>-30572</del> </td></tr><tr><td> tst_qcombobox </td><td> 9 </td><td> tst_QComboBox::task190205_setModelAdjustToContents() tst_QComboBox:: keyBoardNavigationWithMouse() &#8216;selection &gt; 3&#8217; returned <span class="caps">FALSE</span>. () </td><td> <del><span class="caps">QTBUG</span>-30573</del> </td></tr></table>

	<p><strong>CI failures (due to failing autotests) between 13.3.2013 to 18.3.2013.</strong></p>

<table class="infotable line"><tr><td> <strong>Test name</strong> </td><td> <strong>Number of failures</strong> </td><td> <strong>Most common failure</strong> </td><td> <strong>Jira</strong> </td></tr><tr><td> tst_qwidget </td><td> 19 </td><td> tst_QWidget::scroll() Compared values are not the same </td><td> <del><span class="caps">QTBUG</span>-30271</del> </td></tr><tr><td> tst_qdockwidget </td><td> 18 </td><td> tst_QDockWidget::task169808_setFloating() Compared values are not the same </td><td> <del><span class="caps">QTBUG</span>-30272</del> </td></tr><tr><td> tst_qsslsocket </td><td> 13 </td><td> tst_QSslSocket::setReadBufferSize_task_250027(WithoutProxy) </td><td> <span class="caps">QTBUG</span>-29941 </td></tr><tr><td> tst_controls </td><td> 7 </td><td> qtquickcontrols::tst_scrollview::compile() Type TextArea unavailable </td><td> <del><span class="caps">QTBUG</span>-30273</del> </td></tr><tr><td> tst_rendernode </td><td> 6 </td><td> tst_rendernode::messUpState() Compared values are not the same </td><td> <del><span class="caps">QTBUG</span>-30274</del> </td></tr><tr><td> tst_qtcpserver </td><td> 5 </td><td> tst_QTcpServer::invalidProxy(WithoutProxy:socks5-on-http) </td><td></td></tr><tr><td> tst_qmenubar </td><td> 5 </td><td> tst_QMenuBar::task256322_highlight() </td><td></td></tr><tr><td> tst_networkselftest </td><td> 5 </td><td></td><td></td></tr><tr><td> tst_dialogs </td><td> 5 </td><td> tst_dialogs::fileDialogDefaultModality() Received a fatal error </td><td></td></tr></table>

	<p><strong>CI failures (due to failing autotests) from 18.1.2013 to 25.2.2013.</strong></p>

	<p>The list does <strong>not</strong> give any hint if failure was real or happened due to bad autotest. However, it is likely that the test cases with this high count fail due to flakiness or that they could need a rewrite.</p>

<table class="infotable line"><tr><td> <strong>Test name</strong> </td><td> <strong>Number of failures</strong> </td><td> <strong>Link to example of failure</strong> </td><td> <strong>Jira</strong> </td></tr><tr><td> tst_qsslsocket </td><td> 29 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/002698.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/002698.html</a> </td><td> <span class="caps">QTBUG</span>-29941 </td></tr><tr><td> tst_qgl </td><td> 19 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003378.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003378.html</a> </td><td> <del><span class="caps">QTBUG</span>-29943</del> </td></tr><tr><td> tst_qscroller </td><td> 18 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003431.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003431.html</a> </td><td> <del><span class="caps">QTBUG</span>-29950</del> </td></tr><tr><td> tst_qclipboard </td><td> 16 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/002720.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/002720.html</a> </td><td> <del><span class="caps">QTBUG</span>-29951</del> </td></tr><tr><td> tst_qtooltip </td><td> 16 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003621.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003621.html</a> </td><td> <del><span class="caps">QTBUG</span>-29952</del> </td></tr><tr><td> tst_qquickmousearea </td><td> 14 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/002621.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/002621.html</a> </td><td><del><span class="caps">QTBUG</span>-29953</del> </td></tr><tr><td> scripts </td><td> 13 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003105.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003105.html</a> </td><td> </td></tr><tr><td> tst_qquicktextinput </td><td> 11 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003725.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003725.html</a> </td><td> <del><span class="caps">QTBUG</span>-29954</del> </td></tr><tr><td> tst_qcamerabackend </td><td> 10 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003178.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003178.html</a> </td><td> <span class="caps">QTBUG</span>-29955 </td></tr><tr><td> tst_qsharedmemory </td><td> 10 </td><td> <a href="http://lists.qt-project.org/pipermail/ci-reports/2013-January/003644.html">http://lists.qt-project.org/pipermail/ci-reports/2013-January/003644.html</a> </td><td> <span class="caps">QTBUG</span>-25655 </td></tr><tr><td> tst_qwidget </td><td> 10 </td><td> </td><td> </td></tr></table>]]></description>
      <dc:subject>CI_Failing_Tests</dc:subject>
      <dc:date>2013-05-10T12:16:55+00:00</dc:date>
    </item>

    <item>
      <title>Qt Creator for Tizen Analysis</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;Creator&#45;for&#45;Tizen&#45;Analysis</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;Creator&#45;for&#45;Tizen&#45;Analysis</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#525b96274ed4fc0ea8ef08aabe96c231">Steps required to create Qt Creator SDK for Tizen</a><ul>
<li><a href="#04aa3d9f2be827acd6cc15f8760ee012">General remarks</a></li>
<li><a href="#d03cbf063b0125881276987e9e53b79c">Objectives</a></li>
<li><a href="#f3a29486bed19a90f2da6d007818b427">Steps</a></li>
<li><a href="#9306a74e6913818e05ce18c2f5fe8097">Package creation build step</a></li>
<li><a href="#af06f224a3c1a8393f47f8c2a51ae691">Package deployment build step</a></li>
<li><a href="#fe0ec102109fd285fa0ce2c12a9b816a">Deployment configuration</a></li>
<li><a href="#0892dbe00a603c1553e3e5f9f5694c3e">Invoking the Smart Development Bridge</a></li>
<li><a href="#290612199861c31d1036b185b4e69b75">Summary</a></li></ul>
</li></ul>
</div>

	<a name="525b96274ed4fc0ea8ef08aabe96c231"></a>	<h1>Steps required to create Qt Creator <span class="caps">SDK</span> for Tizen</h1>

	<a name="04aa3d9f2be827acd6cc15f8760ee012"></a>	<h2>General remarks</h2>

	<p>When developing a Tizen plugin for Qt Creator the main rule is to help yourself by analyzing existing plugins. <a href="http://www.android.com/">Android</a> <em>[android.com]</em> and <a href="http://wiki.maemo.org/MADDE">Madde</a> <em>[wiki.maemo.org]</em> are the platforms closest to Tizen thus it is best to base your plugin on them.</p>

	<p>It is assumed that the user already has a working Qt version compiled for the Tizen platform and that he is able to build applications for Tizen by manually setting up appropriate kit in Qt Creator settings. It is also assumed he has Tizen-<span class="caps">SDK</span> installed or has otherwise obtained access to Tizen emulator and <a href="https://developer.tizen.org/help/topic/org.tizen.gettingstarted/html/dev_env/smart_development_bridge.htm" title="SDB">Smart Development Bridge</a> <em>[developer.tizen.org]</em> tool.</p>

	<a name="d03cbf063b0125881276987e9e53b79c"></a>	<h2>Objectives</h2>

	<ol>
		<li>be able to access Tizen runtime (aka &#8216;device&#8217;)</li>
		<li>be able to build applications for Tizen</li>
		<li>be able to deploy applications for Tizen</li>
		<li>be able to run/debug deployed applications from Tizen &#8216;device&#8217; (or emulator)</li>
	</ol>

	<a name="f3a29486bed19a90f2da6d007818b427"></a>	<h2>Steps</h2>

	<p>First create a new project in Qt Creator and choose to create a new Creator plugin. The skeleton code generated for you will be the plugin class itself with a demo action added to the Tools menu. You can start development by deleting the demo action.</p>

	<p>At this point you should update the pluginspec.in file for the plugin and make sure that <em>Core</em>, <em>ProjectExplorer</em> and <em>Qt4ProjectManager</em> are marked as dependencies of your plugin since the goal is to be able to manipulate qmake-based projects which is functionality delivered by <em>Qt4ProjectManger</em> plugin that handles both Qt4 and Qt5 projects. </p>

	<p>To obtain objective 1 you need to <strong>prepare a subclass of <em>ProjectExplorer::IDeviceFactory</em> that will manage a new device type</strong> – Tizen devices. This is so that all further steps can check whether they are working on a Tizen-compliant target and can bail out otherwise. Basically this class needs to handle two pairs of situations – one for creating new devices (handled by reimplementing <em>canCreate()</em> and <em>create()</em> methods) and the other for restoring devices created in previous sessions of Qt Creator (handled by reimplementing <em>canRestore()</em> and <em>restore()</em>). <br />
<em>create()</em> and <em>restore()</em> should return instances of a <strong>subclass of <em>ProjectExplorer::IDevice</em></strong> which is the second class that needs to be implemented. These two classes cooperate to set the device state, type, etc. – whether it is a real device or an emulator and how to access it using Smart Development Bridge tool. All settings are saved and loaded by reimplementing <em>toMap()</em> and <em>fromMap()</em> methods.</p>

	<p>To obtain objective 2, you don&#8217;t need to do anything apart from properly setting up kits in Qt Creator settings. It is possible to automate this from within the plugin but since it is additional work, it is suggested to ignore automatic setup and simply provide instructions to the user on how to do it manually, since it is then a one-time job.</p>

	<p>To obtain objective 3, you need to implement deployment steps for: 1) creating a <span class="caps">TPK</span> bundle and 2) installing it in the emulator/device. For this another factory class needs to be implemented and this time you need to base it on <em>ProjectExplorer::IBuildStepFactory</em>. The factory is to return instances of <em>ProjectExplorer::BuildStep</em> subclasses. Since you need two – one for package creation, another for package deployment, you need to have two factory classes and two build step classes.</p>

	<a name="9306a74e6913818e05ce18c2f5fe8097"></a>	<h2>Package creation build step</h2>

	<p>Implementing build steps boils down to reimplementing the <em>run()</em> method that performs a number of  actions and reports the result. <span class="caps">TPK</span> files are really <span class="caps">ZIP</span> archives with a predefined structure. The whole packaging process is described in <a href="https://developer.tizen.org/documentation/tizen-application-packaging-overview">Tizen Application Packaging Overview</a> <em>[developer.tizen.org]</em>. The most important part is that application binary goes to the bin directory, application data goes to data directory and application manifest file goes to info directory.</p>

	<a name="0dc4a7bb57c99337e2540da281b585e6"></a>	<h3>Manifest creation</h3>

	<p>Ideally the manifest should be created automatically when Creator detects the user wants to deploy the app in Tizen environment. The way to do that will be described later in this document. The manifest file is really an <span class="caps">XML</span> document. Its structure is presented in Tizen Application Packaging Overview. You can model the manifest editor after its counter part in Tizen <span class="caps">SDK</span> and embed it into Creator by making <em>ProjectExplorer::BuildConfigWidget</em> the base class of your editor and returning its instance from <em>createConfigWidget()</em>. Since the manifest is really an <span class="caps">XML</span> document, it is best to create and update it using <em>QXmlStreamWriter</em>.</p>

	<a name="00291d6514bd0859a6991882fc982960"></a>	<h3>Package creation</h3>

	<p>To create a <span class="caps">TPK</span> package, you need to make your plugin do the following steps:
	<ol>
		<li>create a temporary directory</li>
		<li>create <em>bin</em>, <em>info</em>, <em>data</em>, <em>icons</em>, <em>lib</em>, <em>res</em>, <em>setting</em> and <em>share</em> subdirectories in this directory</li>
		<li>copy the executable from build directory to <em>bin</em> with the <em>exe</em> extension appended to the application file name (so that <em>&lt;builddir&gt;/myapp</em> becomes <em>bin/myapp.exe</em>)</li>
		<li>copy application data to <em>data</em></li>
		<li>copy manifest file to <em>info</em></li>
		<li>optionally strip the binary to reduce its size</li>
		<li>invoke <em>zip</em> command on the temporary directory</li>
	</ol></p>

	<a name="af06f224a3c1a8393f47f8c2a51ae691"></a>	<h2>Package deployment build step</h2>

	<p>Package deployment is easy. You just need to invoke <em>sdb install</em> passing it your package name. This will unpack all the files into appropriate places in the runtime and create launcher icon for the project. Since no special configuration is required here, for the build config widget you can return an instance of <em>ProjectExplorer::SimpleBuildStepConfigWidget</em>.</p>

	<a name="fe0ec102109fd285fa0ce2c12a9b816a"></a>	<h2>Deployment configuration</h2>

	<p>Both deployment steps can be created automatically for a target. For that the plugin needs to implement a <em>ProjectExplorer::DeploymentConfiguration</em> interface (and a factory for it). The configuration itself doesn&#8217;t have to do anything special apart holding any configuration data that is needed (e.g. data needed to regenerate the manifest) and serialization methods for storing the data (<em>fromMap</em> and <em>toMap</em>). When creating the configuration, the factory class should attach both build steps defined earlier to the configuration object. </p>

	<p>At this point the plugin can also generate the initial manifest for the project. To add the manifest file to the project, <em>ProjectExplorer::ProjectExplorerPlugin::addExistingFiles()</em> should be called. The caveat when calling this method is that it needs to be done only when the project file is already parsed by Creator (which happens only some time after the deployment configuration is created). To work around this, the plugin should connect to <em>fileListChanged()</em> signal of the project (accessible via <em>target()-&gt;project()</em>) and then perform the processing. The slot invoked from this signal should disconnect itself from the signal to avoid being called again and again when files are added to the project.</p>

	<p>To obtain objective 4, you have to first make sure the emulator is running (if targeting an emulated device) and then launch the application via sdb shell. The former can be modeled after Android plugin. For the latter you need to implement subclasses of <em>ProjectExplorer::RunControl</em> and <em>ProjectExplorer::RunConfiguration</em> and their respective factory classes.</p>

	<a name="586d6374fab88886da0251118c1f154d"></a>	<h3>Running applications on Tizen</h3>

	<p>Tizen contains a special security layer that allows the system to control applications. This is done by not executing application binaries directly but rather launching a special proxy (installed automatically during <em>sdb install</em>) that then loads the application binary into its own memory space using <em>dlopen</em>, locates and executes a function in the application object called <em>OspMain(int, char*[])</em>. For that applications that are going to be launched this way need to comply to the following two requirements:
	<ol>
		<li>Application is loadable into another process via <em>dlopen()</em> – this is achieved by passing the <em>-pie -rdynamic</em> options to the linker while building the application (e.g. via <em><span class="caps">QMAKE</span>_LFLAGS+=-pie -rdynamic</em>).</li>
		<li>Application contains a <em>OspMain</em> symbol resolvable via <em>dlsym() (extern &#8220;C&#8221;)</em> that behaves like a regular main function.<br />
If needed for reference, code for the loader can be found in <em>framework/osp/loader.git</em> repository (file <em>osp-ui-app-loader/uiapp_loader.c</em>) on <em><a href="https://review.tizen.org/git">https://review.tizen.org/git</a></em>.<br />
The whole launching process can be repeated by calling the following command from within sdb shell:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp;$ launch_app <span class="sy0">&lt;</span>appId<span class="sy0">&gt;</span>.<span class="sy0">&lt;</span>appBinary<span class="sy0">&gt;</span></div></li>
</ol></div><br />
where <em>&lt;appId&gt;</em> is the 10 characters-long application code and <em>&lt;appBinary&gt;</em> is the application name (without <em>.exe</em>). The current working directory of the application is set to the data subdirectory inside the application installation (which resides in <em>/opt/usr/apps/AppId/</em>)</li>
	</ol></p>

	<a name="0892dbe00a603c1553e3e5f9f5694c3e"></a>	<h2>Invoking the Smart Development Bridge</h2>

	<p><span class="caps">SDB</span> tool is a part of Tizen <span class="caps">SDK</span>. It simplifies development tasks therefore it is recommended that the Creator plugin makes use of it. It is suggested that a dedicated class is implemented that calls <span class="caps">SDB</span> through <em>QProcess</em> synchronously or asynchronously depending on the task for easy calling from within different parts of the plugin. The class can be modeled after its Android counterpart.</p>

	<a name="290612199861c31d1036b185b4e69b75"></a>	<h2>Summary</h2>

	<p>The plugin should expose the following interfaces to QtCreator:
	<ul>
		<li>&rarr; <em>ProjectExplorer::IDeviceFactory</em>
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::IDevice</em>
	<ul>
		<li>&rarr; holds device settings (e.g. arguments for sdb -d/-e)</li>
	</ul></li>
	</ul></li>
		<li>&rarr; <em>ProjectExplorer::DeployConfigurationFactory</em>
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::DeployConfiguration</em>
	<ul>
		<li>&rarr; holds manifest data and other info useful during whole deployment process</li>
		<li>&rarr; manages the manifest file</li>
	</ul></li>
	</ul></li>
		<li>&rarr; <em>ProjectExplorer::IBuildStepFactory</em>
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::BuildStep</em> (for package creation)
	<ul>
		<li>&rarr; copies files into temporary directory and zips it into a tpk file</li>
	</ul></li>
	</ul></li>
		<li>&rarr; <em>ProjectExplorer::IBuildStepFactory</em>
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::BuildStep</em> (for package deployment)
	<ul>
		<li>&rarr; calls <em>sdb install</em> passing the tpk file created in previous step</li>
	</ul></li>
	</ul></li>
		<li>&rarr; <em>ProjectExplorer::IRunConfigurationFactory</em> (or directly <em>Qt4ProjectManager::QmakeRunConfigurationFactory</em>)
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::RunConfiguration</em>
	<ul>
		<li>&rarr; holds settings for running the application in emulator/device</li>
	</ul></li>
	</ul></li>
		<li>&rarr; <em>ProjectExplorer::IRunControlFactory</em>
	<ul>
		<li>&rarr; creates <em>ProjectExplorer::RunControl</em>
	<ul>
		<li>&rarr; calls <em>&#8216;sdb shell launch_app AppId.AppExe&#8217;</em> or <em>&#8216;sdb shell /opt/usr/apps/AppId/bin/AppExe.exe&#8217;</em> (the latter does not set the current working directory properly)</li>
	</ul></li>
	</ul></li>
	</ul></p>]]></description>
      <dc:subject>Qt Creator for Tizen Analysis</dc:subject>
      <dc:date>2013-05-09T22:44:26+00:00</dc:date>
    </item>

    <item>
      <title>Build_Qt_for_Tizen_Developer_Device</title>
      <link>http://qt&#45;project.org/wiki/Build_Qt_for_Tizen_Developer_Device</link>
      <guid>http://qt&#45;project.org/wiki/Build_Qt_for_Tizen_Developer_Device</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#88ceccccf1a89417073e3688dfad28f2">How to build Qt 4.8.1 for Tizen 1.0 Larkspur on RD-210</a><ul>
<li><a href="#3b878279a04dc47d60932cb294d96259">Overview</a></li>
<li><a href="#1445650302f377af43ee1f7738dc7b50">How-to</a></li>
<li><a href="#d95867deadfe690e40f42068d6b59df8">References</a></li></ul>
</li></ul>
</div>

	<a name="88ceccccf1a89417073e3688dfad28f2"></a>	<h1>How to build Qt 4.8.1 for Tizen 1.0 Larkspur on RD-210</h1>

	<a name="3b878279a04dc47d60932cb294d96259"></a>	<h2>Overview</h2>

	<p>This article demonstrates how to build Qt 4.8.1 in Scratchbox2 (&#8220;<span class="caps">SBS</span>&#8221;) and copy the files over to Tizen 1.0 Larkspur  Ref.Device-210 (RD-210) for testing. Be aware that this does not include any source code changes, so the build might still need lots of work (and porting) for it to become fully usable. </p>

	<a name="1445650302f377af43ee1f7738dc7b50"></a>	<h2>How-to</h2>

	<ol>
		<li>Install <span class="caps">SBS</span>: <a href="https://source.tizen.org/platform/development-sbs">https://source.tizen.org/platform/development-sbs</a></li>
		<li>Install the Tizen <span class="caps">SDK</span>: <a href="https://developer.tizen.org/sdk">https://developer.tizen.org/sdk</a> (alternatively, get &#8220;sdb&#8221; through some other means)</li>
		<li>Get the Qt sources: <a href="http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.1.tar.gz">http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.1.tar.gz</a></li>
		<li>Unpack the sources somewhere: tar xzvf qt-everywhere-opensource-src-4.8.1.tar.gz</li>
		<li>Run &#8220;sbs -e&#8221; and then run &#8220;./configure -opensource -confirm-license&#8221; inside the extracted folder</li>
		<li>Run: make</li>
		<li>Run: mkdir tmp &amp;&amp; <span class="caps">INSTALL</span>_ROOT=$(pwd)/tmp/ make install</li>
		<li>Pack up everything: cd tmp &amp;&amp; tar czvf ../qt_tizen.tgz *</li>
		<li>Copy it to the device: sdb push ../qt_tizen.tgz /root/</li>
		<li>Get a shell and extract it: sdb shell &amp;&amp; tar xzvf /root/qt_tizen.tgz -C /</li>
	</ol>

	<p>After that, you should be able to run it using /usr/local/Trolltech/Qt-4.8.1/bin/qtdemo</p>

	<a name="d95867deadfe690e40f42068d6b59df8"></a>	<h2>References</h2>

	<p><a href="http://tizentalk.com/forum/threads/build-qt-4-8-1-for-the-tizen-developer-device.4/">Build Qt 4.8.1 for the Tizen Developer Device</a> <em>[tizentalk.com]</em></p>]]></description>
      <dc:subject>Build_Qt_for_Tizen_Developer_Device</dc:subject>
      <dc:date>2013-05-09T22:00:30+00:00</dc:date>
    </item>

    <item>
      <title>Qt Creator with BlackBerry 10</title>
      <link>http://qt&#45;project.org/wiki/Qt&#45;Creator&#45;with&#45;BlackBerry&#45;10</link>
      <guid>http://qt&#45;project.org/wiki/Qt&#45;Creator&#45;with&#45;BlackBerry&#45;10</guid>
      <description><![CDATA[<div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#f66127ba734a8d6ec3f15c99d2415d61">Using Qt Creator for Qt Development on BlackBerry 10</a><ul>
<li><a href="#3b878279a04dc47d60932cb294d96259">Overview</a></li>
<li><a href="#bf647454e36069fd16f1a7a35cf6a865">Getting Started</a></li>
<li><a href="#aeb0c0416dc24c861ae55212ae19338b">Configuring QtCreator</a></li>
<li><a href="#9502a243840645c318c087ca6b94d95d">Creating Your First BlackBerry 10 Qt Project</a></li>
<li><a href="#8fa28b05d31e74cd12b175baf566c90f">Editing Your Bar Descriptor File </a></li>
<li><a href="#97454c0726341cf8ad42e1e97a316b2e">Package and Deploy Your Application Using Command line.</a></li>
<li><a href="#51c7304bd3980f2b870985901f0a9b65">Building and running Cascades based applications from Qt Creator</a></li>
<li><a href="#cfa140eb22c34af8bd53f41472bf8d32">How to make Qt Creator work with the Simulator</a></li>
<li><a href="#dac3b8df193bdec1ea930b49e73cb3a5">Application permission</a></li></ul>
</li></ul>
</div>

	<a name="f66127ba734a8d6ec3f15c99d2415d61"></a>	<h1>Using Qt Creator for Qt Development on BlackBerry 10</h1>

	<a name="3b878279a04dc47d60932cb294d96259"></a>	<h2>Overview</h2>

	<p>Qt is one of the application development frameworks available on BlackBerry 10 platform. Using Qt, you deploy your Qt C++ or Qt Quick application on BlackBerry 10 after rewriting all you graphical code. The current release of the <a href="http://developer.blackberry.com/native/download/">BlackBerry 10 Gold <span class="caps">NDK</span></a> <em>[developer.blackberry.com]</em> includes Qt 4.8.4 for both simulator target (x86) and device target (arm) available for development. Compared to the development for the PlayBook, Qt is integrated in the <a href="https://developer.blackberry.com/blackberry10devalpha/">BlackBerry DevAlpha</a> <em>[developer.blackberry.com]</em> device firmware and can be used by Qt applications as shared libraries.</p>

	<p>This page explains how to get started with the <a href="http://developer.blackberry.com/native/download/">BlackBerry 10 <span class="caps">NDK</span></a> <em>[developer.blackberry.com]</em> and setup your tool chain, how to use QtCreator with the <a href="http://developer.blackberry.com/native/download/">BlackBerry 10 <span class="caps">NDK</span></a> <em>[developer.blackberry.com]</em></p>

	<p><strong><em>Note:</em></strong> this page is tailored to the Gold release of the <span class="caps">NDK</span>. The <span class="caps">NDK</span> is still in development. We will update this page in the course of development to cover new releases of <span class="caps">NDK</span> and QtCreator. The following steps were tested using Ubuntu 12.04 <span class="caps">LTS</span> 64 Bit but should work in a similar way on Windows/Mac.</p>

	<a name="bf647454e36069fd16f1a7a35cf6a865"></a>	<h2>Getting Started</h2>

	<p>Before starting with developing for BlackBerry 10 you need to download the following tools:</p>

	<ul>
		<li><a href="http://developer.blackberry.com/native/download/">The BlackBerry 10 Native <span class="caps">SDK</span></a> <em>[developer.blackberry.com]</em></li>
		<li>The <a href="http://developer.blackberry.com/native/downloads/">BlackBerry 10 Dev Alpha Simulator</a> <em>[developer.blackberry.com]</em> if you don&#8217;t have a <a href="https://developer.blackberry.com/blackberry10devalpha/">BlackBerry DevAlpha device</a> <em>[developer.blackberry.com]</em>]</li>
		<li><a href="https://www.blackberry.com/SignedKeys/codesigning.html">BlackBerry signing code keys</a> <em>[blackberry.com]</em> , not necessary for first steps into development using BlackBerry 10 Simulator</li>
		<li>QtCreator 2.7 (the required <span class="caps">QNX</span> plugin should be enabled by default). You can either <a href="http://qt.gitorious.org/qt-creator">clone it</a> <em>[qt.gitorious.org]</em> or <a href="http://qt-project.org/downloads#qt-creator">download a binary installer from</a> <em>[qt-project.org]</em>. You can also download a recent build from <a href="http://builds.qt-project.org">Jenkins</a> <em>[builds.qt-project.org]</em>.</li>
	</ul>

	<a name="2f6c700a368b3813c2f4b27b422a7fff"></a>	<h3>Enabling development mode</h3>

	<p>First of all, you have to enable development mode to be able to access your device to deploy and test software on it.</p>

	<p>Refer to this article to see how to do that: <a href="http://developer.blackberry.com/native/documentation/bb10/enable_development_mode.html/">http://developer.blackberry.com/native/documentation/bb10/enable_development_mode.html/</a></p>

	<p><em>Note:</em> if you&#8217;re under Linux, there&#8217;s one more step to be able to connect to the target machine: go to Settings-&gt;Storage and set &#8220;Usb connection&#8221; to &#8220;Connect to Windows&#8221; or &#8220;Connect to Mac&#8221;.</p>

	<a name="2c2e067a0b345f5f8be5afd5237c9149"></a>	<h3>Getting the BlackBerry code signing keys</h3>

	<p>You need to obtain the BlackBerry signing code keys in order to sign your application, or to create a <em>debugToken</em> to run unsigned applications in development mode. The <em>debugToken</em> enables you to test your application on the device before signing it. Once your application is ready for publishing you should sign it.</p>

	<p><em>Note:</em> if  you are using the BlackBerry 10 Dev Alpha Simulator, you don&#8217;t need to use  the <em>debugToken</em>. So you can skip related steps below.</p>

	<p>After you submitted a request to get the BlackBerry code signing keys, you should receive two &#8220;.cjs&#8221; registration files by email within the next few hours.</p>

	<ul>
		<li>&#8220;client-<span class="caps">RDK</span>-*.csj&#8221; &#8211; used to sign your applications and publish to the BlackBerry App World storefront.</li>
		<li>&#8220;client-<span class="caps">PBDT</span>-*.csj&#8221; &#8211; used to generate a debug token that you can use to test your application on a device.</li>
	</ul>

	<p><em>Note:</em> if you are using Qt Creator 2.7 or higher, you can register directly using the new BlackBerry Settings page as explained in the next section. So you can skip the instructions below.</p>

	<p>Once you receive those files, register them with the <span class="caps">RIM</span> Signing Authority using the following command line:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>signer <span class="sy0">-</span><span class="kw4">register</span> <span class="sy0">-</span>csjpin <span class="sy0">&lt;</span>csj pin<span class="sy0">&gt;</span> <span class="sy0">-</span>storepass <span class="sy0">&lt;</span>KeystorePassword<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>client<span class="sy0">-</span>RDK<span class="sy0">-</span>xxxxxx.<span class="me1">csj</span> file<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>client<span class="sy0">-</span>PBDT<span class="sy0">-</span>xxxxx.<span class="me1">csj</span> file<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>where the &#8220;&lt;cjs pin&gt;&#8221; is the <span class="caps">PIN</span> you specified on the web form when requesting the code signing keys and the &#8220;&lt;KeystorePassword&gt;&#8221; is a password you specify for the keystore.</p>

	<p>For more details about signing please refer to <a href="https://developer.blackberry.com/html5/documentation/signing_setup_bb10_apps_2008396_11.html">Signing Setup Guide</a> <em>[developer.blackberry.com]</em></p>

	<p>Then you create a <em>debugToken</em> file for your device as follows:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>debugtokenrequest <span class="sy0">-</span>storepass <span class="sy0">&lt;</span>KeystorePassword<span class="sy0">&gt;</span> <span class="sy0">-</span>devicepin <span class="sy0">&lt;</span>device PIN<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>debug_token_file_name.<span class="me1">bar</span><span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>﻿You can find the &#8220;&lt;device <span class="caps">PIN</span>&gt;&#8221; on your device or in simulator under &#8220;Settings \-&gt; About \-&gt; Hardware&#8221;</p>

	<p>Your next steps are to install the new <em>debugToken</em> into your device :</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>deploy <span class="sy0">-</span>installDebugToken <span class="sy0">&lt;</span>path to debug token<span class="sy0">&gt;</span> <span class="sy0">-</span>device <span class="sy0">&lt;</span>IP address of device<span class="sy0">&gt;</span> <span class="sy0">-</span>password <span class="sy0">&lt;</span>device password<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>For more details on the <em>debugToken</em> please refer to <a href="https://developer.blackberry.com/html5/documentation/runnning_unsigned_apps_using_a_debug_token_1866987_11.html">this article</a> <em>[developer.blackberry.com]</em></p>

	<a name="aeb0c0416dc24c861ae55212ae19338b"></a>	<h2>Configuring QtCreator</h2>

	<p>The QtCreator 2.7 brings new features for the BlackBerry 10 plugin (currently called &#8220;Qnx&#8221;) that enables you to easily create, build, deploy and debug your application directly from the <span class="caps">IDE</span>. Please make sure you use the 2.7 version or a recent build of QtCreator. Here are the new features that the BlackBerry 10 plugin provides for 2.7:</p>

	<ul>
		<li>Easy setup of the your BlackBerry 10 development environment (Kits, Qt Version, Compiler, &#8230;).</li>
		<li>Support for the BlackBerry Signing code process to register and create a developer certificate and generate a <em>debugToken</em> to upload your apps into the device.</li>
		<li>UI editor for the bar descriptor file to easily manage the application&#8217;s appearance and behavior when running on the device.</li>
	</ul>

	<a name="fa57be3ea85737787113865905d852b4"></a>	<h3>Using QtCreator 2.7</h3>

	<p>As previously mentioned you can either <a href="http://qt-project.org/downloads#qt-creator">download a binary installer</a> <em>[qt-project.org]</em> or <a href="http://qt.gitorious.org/qt-creator">clone and build it on your own</a> <em>[qt.gitorious.org]</em>.</p>

	<p><em>Note:</em> If you are using QtCreator 2.6 we highly recommend you to download the version 2.7 which hugely simplifies the setup of your BlackBerry 10 plugin. By consequence, we won&#8217;t cover the use of QtCreator 2.6 in the current article.</p>

	<p>If you already have a QtCreator 2.7 installed on you machine, please follow the steps below:</p>

	<ul>
		<li>Select <em>Tools</em> &gt; <em>Options</em> &gt; <em>BlackBerry</em> &gt; <em><span class="caps">NDK</span></em>  (on Mac: <em>Preferences</em> &gt; <em>BlackBerry</em> &gt; <em><span class="caps">NDK</span></em>) and set the path to your <span class="caps">NDK</span>. This will generate  a Qt version, a Compiler and two Kits (one for the device and another for the simulator) based on your <span class="caps">NDK</span>.</li>
	</ul>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/NDK.png" alt="" /></p>

	<ul>
		<li>Select <em>Tools</em> &gt; <em>Options</em> &gt; <em>BlackBerry</em> &gt; <em>Keys</em> (on Mac: <em>Preferences</em> &gt; <em>BlackBerry</em> &gt; <em>Keys</em>) to register and create a developer certificate. To register you need to set the path to your registration files and the <span class="caps">PIN</span> code you specified when requesting the signing keys.</li>
	</ul>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/KeysPage.png" alt="" /></p>

	<ul>
		<li>Select <em>Tools</em> &gt; <em>Options</em> &gt; <em>Devices</em> &gt; <em>Add</em> &gt; <em>Blackberry Device</em> (on Mac: <em>Preferences</em> &gt; <em>Devices</em> &gt; <em>Add</em> &gt; <em>Blackberry Device</em>) to add a BlackBerry Device. You can add either the physical device or the simulator.</li>
	</ul>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/DBTKUpload.png" alt="" /></p>

	<ul>
		<li>Create and upload a debug token bar file when adding the device from the wizard.</li>
	</ul>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/DBTKRequest.png" alt="" /></p>

	<p><em>Note:</em> The signing code support in QtCreator is under development and will be improved in the future. </p>

	<a name="cf6c23147c9bbdcadc373e4e238042d2"></a>	<h3>Using a recent QtCreator build</h3>

	<p>You can also download a nightly build of QtCreator from <a href="http://builds.qt-project.org.">http://builds.qt-project.org.</a></p>

	<p>Unix (Mac/Linux): <a href="http://builds.qt-project.org./job/qt-creator-unix-snapshot/">http://builds.qt-project.org./job/qt-creator-unix-snapshot/</a><br />
Windows: <a href="http://builds.qt-project.org./job/qt-creator-windows-snapshot/">http://builds.qt-project.org./job/qt-creator-windows-snapshot/</a></p>

	<p>It contains some improvements planned for 2.8 which are not available in the 2.7.x release versions.</p>

	<a name="7ecd7bd36a293cf1952de9d00dd9acf7"></a>	<h3>Known issues with QtCreator 2.7</h3>

	<p>Below are few known issues with the Qnx plugin in QtCreator 2.7 release, which should be fixed in the next 2.7.1 release:</p>

	<ul>
		<li>If you create a new project, select a BlackBerry Kit and build in a release mode only, QtCreator will fail to create the package as it will try to find the bar-descriptor file in a debug build repository. Make sure you selected a debug build to avoid this issue.</li>
	</ul>

	<ul>
		<li>If you create a Qt5 project, QtCreator will generate a bar descriptor in order to create the application&#8217;s package. You need to add the following lines to your bar descriptor in order for the application to run correclty:<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>arg<span class="sy0">&gt;-</span>platform<span class="sy0">&lt;/</span>arg<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>arg<span class="sy0">&gt;</span>qnx<span class="sy0">&lt;/</span>arg<span class="sy0">&gt;</span></div></li>
</ol></div></li>
	</ul>

	<p>We recommend to use a nightly Qt Creator build which already contains fixes for the issues above.</p>

	<a name="9502a243840645c318c087ca6b94d95d"></a>	<h2>Creating Your First BlackBerry 10 Qt Project</h2>

	<p>You can create a Qt application by selecting one of project templates in the &#8220;new project&#8221; wizard. Additionally, The BlackBerry plugin provides extra templates for Cascades projects and Qt <span class="caps">GUI</span> applications using BlackBerry 10 custom styles.  </p>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/QtAppTemplates.png" alt="" /></p>

	<p>For example, if you create a Qt Quick Application and use the Kit you defined for BlackBerry Qt Creator will automatically generate a bar descriptor file and ask you if you want to add it into your project. You can then use the bar descriptor UI editor to edit your application&#8217;s bar descriptor file. </p>

	<a name="e26de5dce105e1b1ea7f0fdfca2ad598"></a>	<h3>Deploying Qt5 Applications</h3>

	<p>If you are using Qt5, Qt Creator will generate a bar descriptor file to deploy your Qt5 libraries and create the application&#8217;s package. As currenlty Qt5 libraries are not shipped in the BlackBerry 10 devices, you need to deploy them into your package.</p>

	<p>The following lines in the generated bar descriptor will copy and deploy your Qt5 libraries, imports and plugins automatically from your Qt5 installation directory:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/imports&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;QML2_IMPORT_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/plugins&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;QT_PLUGIN_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/lib&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;LD_LIBRARY_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; ...</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALL_PLUGINS%&quot;</span><span class="sy0">&gt;</span>plugins<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALL_QML%&quot;</span><span class="sy0">&gt;</span>imports<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALL_LIBS%&quot;</span><span class="sy0">&gt;</span>lib<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span> </div></li>
</ol></div></p>

	<p>Note that, for security reasons, the <em>nativepackager</em> doesn&#8217;t consider symbolic links. This will cause each Qt library to be copied four times and increase significantly the package size. We will provide in the near future a bar file containing the Qt5 libraries, so that you don&#8217;t have to deploy them into your packages.</p>

	<p><em>Note:</em> You can exclude the Qt libraries you don&#8217;t use to decrease your package size. For that, you can use the <em>&lt;exclude&gt;</em> element and sepcify the libraries to exclude as shown in the example below: </p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/lib&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;LD_LIBRARY_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; ...</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%QT_INSTALL_LIBS%&quot;</span><span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>exclude name<span class="sy0">=</span><span class="st0">&quot;libQt5Xml.so.5.1.0&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>exclude name<span class="sy0">=</span><span class="st0">&quot;libQt5QuickParticles.so.5.1.0&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>exclude name<span class="sy0">=</span><span class="st0">&quot;libQt5Test.so.5.1.0&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="me1">lib</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<a name="8fa28b05d31e74cd12b175baf566c90f"></a>	<h2>Editing Your Bar Descriptor File </h2>

	<p>The &#8220;bar-descriptor.xml&#8221; file specifies the parameters for identifying, installing, and launching native applications on BlackBerry 10. It mainly contains information about the application author, id, icons and other properties and is used to create the <em><span class="caps">BAR</span></em> file or <em><span class="caps">BAR</span> package</em>. A <span class="caps">BAR</span> package is a installation package of an application for the BlackBerry 10 platform. &#8220;<span class="caps">BAR</span>&#8221; stands for &#8220; <strong>B</strong> lackberry <strong>A</strong> pplication a <strong>R</strong> chive&#8221;. For more details please refer to <a href="http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/c_about_bar_app_descriptor_file.html">this page</a> <em>[developer.blackberry.com]</em></p>

	<p>QtCreator 2.7 provides a new UI editor to easily edit your bar descriptor and manage your application&#8217;s behavior and appearance.</p>

	<p><img onload='imgFitOnLoad(this)'  src="https://raw.github.com/blackberry/Qt/codedrop_20120109/screenshots/BDUIEditor.png" alt="" /></p>

	<p><em>Note:</em> the generated bar descriptor file will be called <strong>bar-descriptor.xml</strong> and will be used by QtCreator to generate a final bar descriptor in the build directory to package your application.</p>

	<p>If you run the application now, QtCreator will create the bar package, connect to the device or to the simulator and launch your application. You can also do these steps using commands in a shell, see the next section for more details.</p>

	<p>For performance reasons, the log output from qWarning, qDebug, etc is captured by the &#8220;slog2&#8221; logging system on BlackBerry 10 instead of plain text files in the file system. In the actual release the messages will appear unfiltered in the &#8220;Application Output&#8221;.</p>

	<a name="97454c0726341cf8ad42e1e97a316b2e"></a>	<h2>Package and Deploy Your Application Using Command line.</h2>

	<p>You can use <span class="caps">NDK</span> command line tools to package and deploy your application instead QtCreator if needed:</p>

	<ul>
		<li>create the package in devMode:</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>nativepackager &nbsp;<span class="sy0">-</span>devMode &nbsp;<span class="sy0">-</span>package <span class="sy0">&lt;</span>package_name.<span class="me1">bar</span><span class="sy0">&gt;</span> <span class="sy0">&lt;</span>bar<span class="sy0">-</span>descriptor.<span class="me1">xml</span><span class="sy0">&gt;</span> <span class="sy0">-</span>debugToken <span class="sy0">&lt;</span>debug_Token_file.<span class="me1">bar</span><span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<ul>
		<li>create the package in Signing mode:</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>nativepackager <span class="sy0">-</span>package &nbsp;<span class="sy0">&lt;</span>package_name.<span class="me1">bar</span><span class="sy0">&gt;</span> <span class="sy0">&lt;</span>bar<span class="sy0">-</span>descriptor.<span class="me1">xml</span><span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<ul>
		<li>sign your application (not needed in the devMode):</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>signer <span class="sy0">-</span>storepass <span class="sy0">&lt;</span>KeyStorePassword<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>package_name.<span class="me1">bar</span><span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<ul>
		<li>deploy on the device:</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>deploy <span class="sy0">-</span>installApp <span class="sy0">-</span>package <span class="sy0">&lt;</span>package_name.<span class="me1">bar</span><span class="sy0">&gt;</span> <span class="sy0">-</span>device <span class="sy0">&lt;</span>device_ip<span class="sy0">&gt;</span> <span class="sy0">-</span>password <span class="sy0">&lt;</span>device_password<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<ul>
		<li>in case you don&#8217;t like what you see, you can remove the application:</li>
	</ul>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">$ blackberry<span class="sy0">-</span>deploy <span class="sy0">-</span>uninstallApp <span class="sy0">-</span>package <span class="sy0">&lt;</span>package_name.<span class="me1">bar</span><span class="sy0">&gt;</span> <span class="sy0">-</span>device <span class="sy0">&lt;</span>device_ip<span class="sy0">&gt;</span> <span class="sy0">-</span>password <span class="sy0">&lt;</span>device_password<span class="sy0">&gt;</span></div></li>
</ol></div></p>

 Or just deploy the next version.

	<a name="51c7304bd3980f2b870985901f0a9b65"></a>	<h2>Building and running Cascades based applications from Qt Creator</h2>

	<p>These configuration has been tested on Linux Debian Wheezy (64 bits) and Opensuse 12.2 with BB10 Gold <span class="caps">NDK</span> and deployment on a Simulator and device.</p>

	<p>In order to build Cascades applications, you need to adapt your <em>bar-descriptor.xml</em> file, as well as tweaking Qt Creator settings a bit. From now, we assume that you are able to build a Qt Quick application, and able to deploy it. Those using simulator and that are unable to launch the application, even if it compiles and is deployed, should refer to the next section.</p>

	<p>Note that using Cascades in your application is more involved than just adding &#8220;import bb.cascades 1.0&#8221; to your <span class="caps">QML</span> files. See the <a href="https://developer.blackberry.com/cascades/">Cascades Documentation</a> <em>[developer.blackberry.com]</em> to learn how to write Cascades based applications.</p>

	<a name="a0cd4235b35b34151cf04b5e8a49698e"></a>	<h3>Packaging and deployment options</h3>

	<p>When using cascades, some precautions have to be taken for packaging your application. You first have to respect a specific folder layout, where all shipped files, that includes images files like icons, and <span class="caps">QML</span> files, should be in a subfolder called <em>assets</em>.</p>

	<p>The <em>bar-descriptior.xml</em> file should also be adapted to take the different targets in account. Here is an example of descriptor file including only the simulator as a debug target</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">&lt;</span>?xml version<span class="sy0">=</span><span class="st0">'1.0'</span> encoding<span class="sy0">=</span><span class="st0">'utf-8'</span> standalone<span class="sy0">=</span><span class="st0">'no'</span>?<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="sy0">&lt;</span>qnx <span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>id<span class="sy0">&gt;</span>com.<span class="me1">example</span>.<span class="me1">app</span><span class="sy0">&lt;/</span>id<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>name<span class="sy0">&gt;</span>app<span class="sy0">&lt;/</span>name<span class="sy0">&gt;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="sy0">&lt;</span>versionNumber<span class="sy0">&gt;</span>1.0.0<span class="sy0">&lt;/</span>versionNumber<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>description<span class="sy0">&gt;</span>DESCRIPTION<span class="sy0">&lt;/</span>description<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>initialWindow<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>systemChrome<span class="sy0">&gt;</span>none<span class="sy0">&lt;/</span>systemChrome<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>transparent<span class="sy0">&gt;</span><span class="kw2">false</span><span class="sy0">&lt;/</span>transparent<span class="sy0">&gt;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>autoOrients<span class="sy0">&gt;</span><span class="kw2">true</span><span class="sy0">&lt;/</span>autoOrients<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>aspectRatio<span class="sy0">&gt;</span>landscape<span class="sy0">&lt;/</span>aspectRatio<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>initialWindow<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/imports&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;QML_IMPORT_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/qml&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;QML2_IMPORT_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/plugins:/usr/lib/qt4/plugins&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;QT_PLUGIN_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>env value<span class="sy0">=</span><span class="st0">&quot;app/native/lib:/usr/lib/qt4/lib/&quot;</span> var<span class="sy0">=</span><span class="st0">&quot;LD_LIBRARY_PATH&quot;</span><span class="sy0">/&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>action <span class="kw3">system</span><span class="sy0">=</span><span class="st0">&quot;true&quot;</span><span class="sy0">&gt;</span>run_native<span class="sy0">&lt;/</span>action<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>configuration name<span class="sy0">=</span><span class="st0">&quot;Simulator-Debug&quot;</span><span class="sy0">&gt;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">&lt;</span>platformArchitecture<span class="sy0">&gt;</span>x86<span class="sy0">&lt;/</span>platformArchitecture<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%SRC_DIR%/path/to/build/folder/o-g/app&quot;</span> entry<span class="sy0">=</span><span class="st0">&quot;true&quot;</span> type<span class="sy0">=</span><span class="st0">&quot;Qnx/Elf&quot;</span><span class="sy0">&gt;</span>app<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>configuration<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;!--</span> omit the above <span class="st0">&quot;Simulator-Debug&quot;</span> configuration section and add the line below <span class="kw1">if</span> <span class="kw2">using</span> device only</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;app&quot;</span> entry<span class="sy0">=</span><span class="st0">&quot;true&quot;</span> type<span class="sy0">=</span><span class="st0">&quot;Qnx/Elf&quot;</span><span class="sy0">&gt;</span>app<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">--&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>asset path<span class="sy0">=</span><span class="st0">&quot;%SRC_DIR%/assets&quot;</span><span class="sy0">&gt;</span>assets<span class="sy0">&lt;/</span>asset<span class="sy0">&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="sy0">&lt;/</span>qnx<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>You can take inspiration on descriptor files that the <span class="caps">SDK</span> generates to get other targets. But take care of the <em>o-g</em> folder in which the debug binaries will be compiled for the simulator. Other binaries have their own folder.</p>

	<p>In the project file, you needs to add cascades options. You can also add import path, that provides autocompletion in C++ editor. <span class="caps">QML</span> autocompletion does not work out of box for now, but <a href="http://qt-project.org/forums/viewthread/26372/">a workaround exists</a> <em>[qt-project.org]</em>. The following template contains all the settings that should be added.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">TEMPLATE <span class="sy0">=</span> app</div></li>
<li class="li1"><div class="de1">TARGET <span class="sy0">=</span> app</div></li>
<li class="li1"><div class="de1"><a href="http://qt-project.org/doc/Qt.html"><span class="kw5">QT</span></a> <span class="sy0">=</span> ...</div></li>
<li class="li1"><div class="de1"><span class="me1">CONFIG</span> <span class="sy0">+=</span> cascades10</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2"># Horrible workaround because INCLUDEPATH do not work with</span></div></li>
<li class="li1"><div class="de1"><span class="co2"># absolute path under Linux + QtCreator 2.6 ???</span></div></li>
<li class="li1"><div class="de1">INCLUDEPATH <span class="sy0">+=</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span>relative<span class="sy0">/</span>path<span class="sy0">/&lt;</span>target<span class="sy0">&gt;/</span>qnx6<span class="sy0">/</span>usr<span class="sy0">/</span>include</div></li>
<li class="li1"><div class="de1">INCLUDEPATH <span class="sy0">+=</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span>relative<span class="sy0">/</span>path<span class="sy0">/&lt;</span>target<span class="sy0">&gt;/</span>qnx6<span class="sy0">/</span>usr<span class="sy0">/</span>include<span class="sy0">/</span>qt4</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">HEADERS <span class="sy0">=</span> &nbsp; ...</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="me1">SOURCES</span> <span class="sy0">+=</span> &nbsp;...</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="me1">OTHER_FILES</span> <span class="sy0">+=</span> &nbsp;bar<span class="sy0">-</span>descriptor.<span class="me1">xml</span> \</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; assets<span class="sy0">/</span>main.<span class="me1">qml</span> \</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
</ol></div></p>

	<a name="55ec03edd8ce8d0c6b5faf1ba99f8533"></a>	<h3>QMake settings</h3>

	<p>Some additional settings have to be passed to qmake in order to make the compilation to work. First, if you didn&#8217;t add the BB10 kit, you should add it. It will provide automatically the compilation recipe and the testing on a device. In order to compile cascades based applications, you need to add a QMake option, that is</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">CONFIG<span class="sy0">+=</span>device</div></li>
</ol></div></p>

	<p>for a device, or</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">-</span>spec blackberry<span class="sy0">-</span>x86<span class="sy0">-</span>qcc CONFIG<span class="sy0">+=</span>simulator</div></li>
</ol></div></p>

	<p>for the simulator.</p>

	<p>With these options, compiling a cascades based application, and deploying it should work.</p>

	<a name="cfa140eb22c34af8bd53f41472bf8d32"></a>	<h2>How to make Qt Creator work with the Simulator</h2>

	<p>Setting the simulator as a device is easy, and can be done as if it was a real device. However, the simulator is X86-based, and the default settings for compiling a Qt project with Qt Creator are those for arm devices. In order to compile for X86, you have to change the <span class="caps">MKSPEC</span>, and it is done by passing</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">-</span>spec blackberry<span class="sy0">-</span>x86<span class="sy0">-</span>qcc</div></li>
</ol></div></p>

	<p>to the QMake additionnal arguments. With this spec set, it will override the default spec and compile for X86.</p>

	<a name="dac3b8df193bdec1ea930b49e73cb3a5"></a>	<h2>Application permission</h2>

	<p>You can add some permission to the application by tweaking the <i>bar-description.xml</i> file by adding the line</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">&lt;</span>permission<span class="sy0">&gt;</span>permission_identifier<span class="sy0">&lt;/</span>permission<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>or the following line for permission identifier that is mark * in the list below</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="sy0">&lt;</span>permission <span class="kw3">system</span><span class="sy0">=</span><span class="st0">&quot;true&quot;</span><span class="sy0">&gt;</span>permission_identifier<span class="sy0">&lt;/</span>permission<span class="sy0">&gt;</span></div></li>
</ol></div></p>

	<p>Here&#8217;s a list of permission identifier</p>

	<ul>
		<li><strong>Permission</strong> &#8211; <strong>Identifier</strong></li>
		<li>Internet &#8211; access_internet</li>
		<li>Location &#8211; access_location_services</li>
		<li>Microphone &#8211; record_audio</li>
		<li>Notebooks &#8211; access_pimdomain_notebooks</li>
		<li>Post Notifications &#8211; post_notification</li>
		<li>Push &#8211; _sys_use_consumer_push *</li>
		<li>Run when background &#8211; run_when_backgrounded</li>
		<li>Shared Files &#8211; access_shared</li>
		<li>Text Messages &#8211; access_sms_mms</li>
		<li>Blackberry Messenger &#8211; bbm_connect</li>
		<li>Calender &#8211; access_pimdomain_calendars</li>
		<li>Camera &#8211; use_camera</li>
		<li>Contacts &#8211; access_pimdomain_contacts</li>
		<li>Device Identifying Information &#8211; read_device_identifying_information</li>
		<li>Email and <span class="caps">PIN</span> messages &#8211; access_pimdomain_messages</li>
		<li><span class="caps">GPS</span> Location &#8211; read_geolocation</li>
	</ul>]]></description>
      <dc:subject>Qt Creator with BlackBerry 10</dc:subject>
      <dc:date>2013-05-09T11:24:21+00:00</dc:date>
    </item>

    <item>
      <title>QtWayland_SimplifiedChinese</title>
      <link>http://qt&#45;project.org/wiki/QtWayland_SimplifiedChinese</link>
      <guid>http://qt&#45;project.org/wiki/QtWayland_SimplifiedChinese</guid>
      <description><![CDATA[<p><a href="http://qt-project.org/wiki/QtWayland">English</a> | <strong>简体中文</strong></p>

	<a name="aab4e66888473463c542750a76d8eb39"></a>	<h1>什么是QtWayland?</h1>

	<p>QtWayland是封装了Wayland功能的Qt 5模块。QtWayland被分为一个客户端(client)和一个服务端(server)。客户端是wayland平台插件，提供了运行Wayland客户端Qt程序的方法。服务端是QtCompositor应用程序接口(<span class="caps">API</span>)，允许用户编写自己的compositors。</p>

	<a name="b7c2deed8a537ecfadd98b406e6fb629"></a>	<h2>什么是Wayland</h2>

	<p>Wayland是一个用C库实现的为了使Compositor和Client沟通的协议。要获得更多详细信息，请访问 <a href="http://wayland.freedesktop.org/">Wayland项目主页</a> <em>[wayland.freedesktop.org]</em></p>

	<a name="f9ba7e277ecfd0e6f579989d94252b84"></a>	<h1>从哪里找到QtWayland代码？</h1>

	<p><a href="http://qt.gitorious.org/qt/qtwayland">Gitorious仓库</a> <em>[qt.gitorious.org]</em></p>

	<a name="06f3e0a7f83b23c2e217b037999ad781"></a>	<h1>怎样构建QtWayland？</h1>

	<a name="88d39d6c15f7cd1085a10e70eaa3cc70"></a>	<h2>桌面构建指令</h2>

	<a name="73e4123a12b67584a44f9b2c16b0891c"></a>	<h3>设置构建环境</h3>

	<p>第一步，选择一个合适的新的Linux发行版。我使用Ubuntu 12.04，比这个新的更好。</p>

	<p>下面的指南基于 <a href="http://wayland.freedesktop.org/building.html">http://wayland.freedesktop.org/building.html</a> 上的提示</p>

	<p>我做的第一件事是创建一个Wayland安装目录和一个设置环境的文件:</p>

	<p>~/Apps/Wayland/wayland.sourceme</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#wayland.sourceme</span></div></li>
<li class="li1"><div class="de1">WLD<span class="sy0">=</span>$HOME<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland &nbsp;<span class="co2"># change this to another location if you prefer</span></div></li>
<li class="li1"><div class="de1">LD_LIBRARY_PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>lib</div></li>
<li class="li1"><div class="de1">PKG_CONFIG_PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>lib<span class="sy0">/</span>pkgconfig<span class="sy0">/:</span>$WLD<span class="sy0">/</span>share<span class="sy0">/</span>pkgconfig<span class="sy0">/</span></div></li>
<li class="li2"><div class="de2">ACLOCAL<span class="sy0">=</span><span class="st0">&quot;aclocal -I $WLD/share/aclocal&quot;</span></div></li>
<li class="li1"><div class="de1">PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>bin<span class="sy0">:</span>$PATH</div></li>
<li class="li1"><div class="de1">XDG_RUNTIME_DIR<span class="sy0">=/</span>tmp</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;</div></li>
<li class="li1"><div class="de1">export WLD LD_LIBRARY_PATH PKG_CONFIG_PATH ACLOCAL PATH XDG_RUNTIME_DIR</div></li>
</ol></div></p>

	<p>之后用这个文件设置您的工作环境：<br />
<em>source ~/Apps/Wayland/wayland.sourceme</em></p>

	<a name="2fa59555cf2bcd34a18bcaff9538b175"></a>	<h3>编译依赖的库</h3>

	<p>您需要的大部分依赖库都已经发布了。但是仍然没有包含在最新的Linux发行版中。所以您需要编译它们。这里是编译它们的指南：</p>

	<a name="98af75d93de9f6bace5ed47c2512d9c1"></a>	<h4>wayland</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/wayland/wayland</span></div></li>
<li class="li1"><div class="de1">cd wayland</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>1.0.3 1.0.3</div></li>
<li class="li1"><div class="de1"><span class="co2">#this prevents autogen.sh to fail while testing for exiting folders</span></div></li>
<li class="li2"><div class="de2">mkdir <span class="sy0">-</span>p $WLD<span class="sy0">/</span>share<span class="sy0">/</span>aclocal</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li1"><div class="de1">make</div></li>
<li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<a name="0abf1b964ca65062ac36a5ff6f3820f8"></a>	<h4>drm</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/git/mesa/drm</span></div></li>
<li class="li1"><div class="de1">cd drm</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>2.4.40 2.4.40</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li2"><div class="de2">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="85770ae9def3473f559e0dbe0609060a"></a>	<h4>mesa</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/mesa/mesa</span></div></li>
<li class="li1"><div class="de1">cd mesa</div></li>
<li class="li1"><div class="de1">git checkout <span class="nu16">9.0</span></div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD <span class="sy0">--</span>enable<span class="sy0">-</span>gles2 <span class="sy0">--</span>disable<span class="sy0">-</span>gallium<span class="sy0">-</span>egl \</div></li>
<li class="li2"><div class="de2"><span class="sy0">--</span>with<span class="sy0">-</span>egl<span class="sy0">-</span>platforms<span class="sy0">=</span>x11<span class="sy0">,</span>wayland<span class="sy0">,</span>drm <span class="sy0">--</span>enable<span class="sy0">-</span>gbm <span class="sy0">--</span>enable<span class="sy0">-</span>shared<span class="sy0">-</span>glapi \</div></li>
<li class="li1"><div class="de1"><span class="sy0">--</span>with<span class="sy0">-</span>gallium<span class="sy0">-</span>drivers<span class="sy0">=</span>r300<span class="sy0">,</span>r600<span class="sy0">,</span>swrast<span class="sy0">,</span>nouveau</div></li>
<li class="li1"><div class="de1">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="4ea880be9aea57a19e29d15444b5245f"></a>	<h4>libxkbcommon</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//people.freedesktop.org/xorg/lib/libxkbcommon.git</span></div></li>
<li class="li1"><div class="de1">cd libxkbcommon<span class="sy0">/</span></div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>0.2.0 xkbcommon<span class="sy0">-</span>0.2.0</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD <span class="sy0">--</span>with<span class="sy0">-</span>xkb<span class="sy0">-</span>config<span class="sy0">-</span>root<span class="sy0">=/</span>usr<span class="sy0">/</span>share<span class="sy0">/</span>X11<span class="sy0">/</span>xkb</div></li>
<li class="li2"><div class="de2">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="f7f67070378bd1c518a0f7172736be04"></a>	<h4>weston(可选)</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/wayland/weston</span></div></li>
<li class="li1"><div class="de1">cd weston</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>1.0.3 1.0.3</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li2"><div class="de2">make</div></li>
<li class="li1"><div class="de1">make install <span class="sy0">-</span>k</div></li>
</ol></div></p>

	<a name="a3ee12ba3237eeab4b13194f34e62a00"></a>	<h3>Qt 5.0.0依赖</h3>

	<p>对于Qt，您可以使用于预编译的5.0.0二进制文件，或者从最新的Qt 5.0.0(stable分支)构建，这里不使用wayland.source环境。您至少需要的Qt 5.0.0模块有：<br />
qtbase<br />
qtjsbackend<br />
qtdeclarative</p>

	<p>如果您遇到了关于libGL和undefined references链接错误，可能是需要编译Qt5并且链接自己编译的mesa库，可能是由于编译和安装mesa的方式，配置脚本需要明确的定义openGL的版本，使用： ./configure -opengl es2</p>

	<a name="0f178cfec9ff508a793243827eaab643"></a>	<h3>构建QtWayland模块</h3>

	<p>一旦您构建好了Qt 5，之后获取最新的QtWayland模块代码，使用qmake配置，这次是用wanyland.source环境。确定您使用的qmake是刚构建好的Qt 5中的。这将确定您使用了特别的OpenGL和Wayland版本来构建Wayland平台插件和QtCompositor API。</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtwayland.git</span></div></li>
<li class="li1"><div class="de1">cd qtwayland</div></li>
<li class="li1"><div class="de1">qmake</div></li>
<li class="li2"><div class="de2">make</div></li>
<li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<a name="18ca52ea0f14dba367c1cf327cdac51b"></a>	<h2>Raspberry Pi编译指南</h2>

	<p>敬请期待。</p>

	<a name="911c39c08d2099aeef0a7a5f11e93ef4"></a>	<h1>怎样使用QtWayland？</h1>

	<a name="65f476410114df931e377908ede29726"></a>	<h2>作为Wayland客户端运行Qt程序</h2>

	<p>当您编译完QtWayland模块，您将得到一个新的wayland平台插件。要使用它，您首先需要有一个已经运行的Wayland compositor。这可以是一个Wayland项目提供的Weston reference compositor，或是QtWayland提供的Qt example compositor。不管怎样，作为一个应用程序开发者，您需要做的唯一一件事是把您的程序作为wayland客户端运行：</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>application <span class="sy0">-</span>platform wayland</div></li>
</ol></div></p>

	<a name="19be451e214e574ab5e3ff92da48b40d"></a>	<h2>创建和运行您自己的Qt5 Wayland Compositor</h2>

	<a name="11629d1dc0fb3cc0735989065a5b7d81"></a>	<h3>运行例子中的compositor</h3>

	<p>QtWayland模块中提供了几个compositor样例，演示了QtCompositor是如何工作的。这些样例在QtWayland模块的example目录中，如果您使用qmake时添加了&#8220;wayland-compositor&#8220;到CONFIG变量。</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">qmake CONFIG<span class="sy0">+=</span>wayland<span class="sy0">-</span>compositor</div></li>
</ol></div></p>

	<p>这些例子示范了服务器端(server side)的Wayland，所以您不需要使用wayland平台插件，不管您是在那个平台运行。通常这些平台是eglfs、 kms或者您想运行于X11 xcb。</p>

	<p>如果您想在X11中运行qml-compositor: 您需要按下面的方式运行：</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">cd qtwayland<span class="sy0">/</span>examples<span class="sy0">/</span>qml<span class="sy0">-</span>compositor</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>qml<span class="sy0">-</span>compositor <span class="sy0">-</span>platform xcb</div></li>
</ol></div></p>

	<p>现在，您的Wayland compositor运行了，您可以连接和显示Wayland客户端了。</p>

	<a name="bd705de846ec0d63817faa8ad52805a5"></a>	<h3>创建您自己的compositor</h3>

	<p>创建Wayland compositor和控制相关事件的应用程序接口在QtWayland类的WaylandCompositor中。它的构造函数需要QWindow对象指针作为主参数。这使实现compositor更加灵活。</p>

	<p>由于这种设计，实现compositor有3中不同的方法：</p>

	<ul>
		<li>基于QWidow：实例将会用于配置WaylandCompositor对象。</li>
		<li>基于QWidget：这种情况中，基础的widget窗体句柄将被使用。</li>
		<li>基于QML：您的C++程序将使用一个QQuickView对象类配置WaylandCompositor。直到些这篇文章的时候，还没有仅使用QML创建compositor的方法。</li>
	</ul>

	<p>WaylandCompositor是纯抽象虚类，它不能用来创建实例。实现compositor的通用方法是继承自WaylandCompositor并实现这个方法*void surfaceCreated(WaylandSurface *surface)*。</p>

	<p>这个方法会在每次新客户端连接的时候执行(例如程序启动请求compositor服务时)。作为一个WaylandSurface对象。这里有一些这个对象生成的信号，被compositor处理，叫做：</p>

	<ul>
		<li>mapped(): 当client连接到compositor时发射。</li>
	</ul>

	<ul>
		<li>damaged(): <span class="caps">TODO</span></li>
	</ul>

	<ul>
		<li>destroyed(): 当client退出时发射(即应用程序退出时)</li>
	</ul>

	<ul>
		<li>unmapped(): <span class="caps">TODO</span></li>
	</ul>

	<ul>
		<li>extendedSurfaceReady(): <span class="caps">TODO</span></li>
	</ul>

	<p>工程文件需要使用compositor模块(即在.pro文件中添加QT += compositor)。有趣的是在写这篇文章的时候，需要注意的是有些QML相关的API只能在工程文件中添加宏定义(即DEFINES += QT_COMPOSITOR_QUICK)。</p>

	<a name="075c553c5922283ef52e91922af5d3ae"></a>	<h3>独立运行compositor</h3>

	<p><span class="caps">TODO</span></p>]]></description>
      <dc:subject>QtWayland_SimplifiedChinese</dc:subject>
      <dc:date>2013-05-08T14:15:33+00:00</dc:date>
    </item>

    <item>
      <title>QtWayland</title>
      <link>http://qt&#45;project.org/wiki/QtWayland</link>
      <guid>http://qt&#45;project.org/wiki/QtWayland</guid>
      <description><![CDATA[<p><strong>English</strong> | <a href="http://qt-project.org/wiki/QtWayland_SimplifiedChinese">简体中文</a></p>

	<a name="9700702217eb584341a336d0667dee0a"></a>	<h1>What is QtWayland?</h1>

	<p>QtWayland is a Qt 5 module that wraps the functionality of Wayland.  QtWayland is separated into a client and server side.  The client side is the wayland platform plugin, and provides a way to run Qt applications as Wayland clients.  The server side is the QtCompositor <span class="caps">API</span>, and allows users to write their own Wayland compositors.</p>

	<a name="9f27ad300326c74e42576feed6559993"></a>	<h2>What is Wayland</h2>

	<p>Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol.  For more detailed information you should visit the <a href="http://wayland.freedesktop.org/">Wayland project homepage</a> <em>[wayland.freedesktop.org]</em></p>

	<a name="57d91de6a928538fd2bdd06f3d3eb8c2"></a>	<h1>Where can I find the code for QtWayland?</h1>

	<p><a href="http://qt.gitorious.org/qt/qtwayland">Gitorious Repo</a> <em>[qt.gitorious.org]</em></p>

	<a name="3582c926bef72a88b954073843c21879"></a>	<h1>How do I build QtWayland?</h1>

	<a name="0b36e2127ed5e1fab8217074235681ef"></a>	<h2>Desktop build instructions</h2>

	<a name="e17bd8440cbd5b91eca70b83edd6a53c"></a>	<h3>Setup build environment</h3>

	<p>The first step is to start with a reasonably modern Linux distribution.  I use Ubuntu 12.04, so anything newer is just gravy.<br />
The following instructions are based off of the tips on: <a href="http://wayland.freedesktop.org/building.html">http://wayland.freedesktop.org/building.html</a></p>

	<p>The first thing I do is start by creating an install directory for my Wayland dependencies and create an environment file to source:</p>

	<p>So if I wanted to install my Wayland dependencies into the folder $HOME/Apps/Wayland I would create the folder, and then create the file:<br />
<em>~/Apps/Wayland/wayland.sourceme</em></p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1"><span class="co2">#wayland.sourceme</span></div></li>
<li class="li1"><div class="de1">WLD<span class="sy0">=</span>$HOME<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland &nbsp;<span class="co2"># change this to another location if you prefer</span></div></li>
<li class="li1"><div class="de1">LD_LIBRARY_PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>lib</div></li>
<li class="li1"><div class="de1">PKG_CONFIG_PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>lib<span class="sy0">/</span>pkgconfig<span class="sy0">/:</span>$WLD<span class="sy0">/</span>share<span class="sy0">/</span>pkgconfig<span class="sy0">/</span></div></li>
<li class="li2"><div class="de2">ACLOCAL<span class="sy0">=</span><span class="st0">&quot;aclocal -I $WLD/share/aclocal&quot;</span></div></li>
<li class="li1"><div class="de1">PATH<span class="sy0">=</span>$WLD<span class="sy0">/</span>bin<span class="sy0">:</span>$PATH</div></li>
<li class="li1"><div class="de1">XDG_RUNTIME_DIR<span class="sy0">=/</span>tmp</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">export WLD LD_LIBRARY_PATH PKG_CONFIG_PATH ACLOCAL PATH XDG_RUNTIME_DIR</div></li>
</ol></div></p>

	<p>So then source that file to set up your work environment:<br />
<em>source ~/Apps/Wayland/wayland.sourceme</em></p>

	<a name="e6eb1f817b9feb22de1f2d0082d66b7d"></a>	<h3>Build dependencies</h3>

	<p>Most of the dependencies you need are released, but not yet available in the latest Linux distributions, so you will need to build them.  Here are the instructions for each in the order that they need to be built:</p>

	<a name="98af75d93de9f6bace5ed47c2512d9c1"></a>	<h4>wayland</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/wayland/wayland</span></div></li>
<li class="li1"><div class="de1">cd wayland</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>1.0.3 1.0.3</div></li>
<li class="li1"><div class="de1"><span class="co2">#this prevents autogen.sh to fail while testing for exiting folders</span></div></li>
<li class="li2"><div class="de2">mkdir <span class="sy0">-</span>p $WLD<span class="sy0">/</span>share<span class="sy0">/</span>aclocal</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li1"><div class="de1">make</div></li>
<li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<a name="0abf1b964ca65062ac36a5ff6f3820f8"></a>	<h4>drm</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/git/mesa/drm</span></div></li>
<li class="li1"><div class="de1">cd drm</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>2.4.40 2.4.40</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li2"><div class="de2">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="85770ae9def3473f559e0dbe0609060a"></a>	<h4>mesa</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/mesa/mesa</span></div></li>
<li class="li1"><div class="de1">cd mesa</div></li>
<li class="li1"><div class="de1">git checkout <span class="nu16">9.0</span></div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD <span class="sy0">--</span>enable<span class="sy0">-</span>gles2 <span class="sy0">--</span>disable<span class="sy0">-</span>gallium<span class="sy0">-</span>egl \</div></li>
<li class="li2"><div class="de2"><span class="sy0">--</span>with<span class="sy0">-</span>egl<span class="sy0">-</span>platforms<span class="sy0">=</span>x11<span class="sy0">,</span>wayland<span class="sy0">,</span>drm <span class="sy0">--</span>enable<span class="sy0">-</span>gbm <span class="sy0">--</span>enable<span class="sy0">-</span>shared<span class="sy0">-</span>glapi \</div></li>
<li class="li1"><div class="de1"><span class="sy0">--</span>with<span class="sy0">-</span>gallium<span class="sy0">-</span>drivers<span class="sy0">=</span>r300<span class="sy0">,</span>r600<span class="sy0">,</span>swrast<span class="sy0">,</span>nouveau</div></li>
<li class="li1"><div class="de1">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="4ea880be9aea57a19e29d15444b5245f"></a>	<h4>libxkbcommon</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//people.freedesktop.org/xorg/lib/libxkbcommon.git</span></div></li>
<li class="li1"><div class="de1">cd libxkbcommon<span class="sy0">/</span></div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>0.2.0 xkbcommon<span class="sy0">-</span>0.2.0</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD <span class="sy0">--</span>with<span class="sy0">-</span>xkb<span class="sy0">-</span>config<span class="sy0">-</span>root<span class="sy0">=/</span>usr<span class="sy0">/</span>share<span class="sy0">/</span>X11<span class="sy0">/</span>xkb</div></li>
<li class="li2"><div class="de2">make <span class="sy0">&amp;&amp;</span> make install</div></li>
</ol></div></p>

	<a name="102c169ebc3b439a5bc130124b0604f9"></a>	<h4>weston (optional)</h4>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//anongit.freedesktop.org/wayland/weston</span></div></li>
<li class="li1"><div class="de1">cd weston</div></li>
<li class="li1"><div class="de1">git checkout <span class="sy0">-</span>b branch<span class="sy0">-</span>1.0.3 1.0.3</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>autogen.<span class="me1">sh</span> <span class="sy0">--</span>prefix<span class="sy0">=</span>$WLD</div></li>
<li class="li2"><div class="de2">make</div></li>
<li class="li1"><div class="de1">make install <span class="sy0">-</span>k</div></li>
</ol></div></p>

	<a name="98e17053b4c2da414f8a757ea3835266"></a>	<h3>Qt 5.0.0 dependency</h3>

	<p>For Qt you can use either the pre-built binaries of 5.0.0, or build the latest Qt 5.0.0 (stable branch) <span class="caps">WITHOUT</span> using the wayland.sourceme environment.  The Qt 5.0.0 modules you need at the very least are:<br />
qtbase<br />
qtjsbackend<br />
qtdeclarative</p>

	<p>If you face linker errors related to libGL and undefined references, it may be necessary to compile Qt5 and link it with the self compiled mesa. Maybe due to the way that mesa was compiled and installed, the configure script will require to explicitly define the version of OpenGL to be used with: ./configure -opengl es2</p>

	<a name="2d55be24b7c0d127878e3fe832900a48"></a>	<h3>Building the QtWayland module</h3>

	<p>Once you have a working build of Qt 5, then pull down the latest QtWayland module code and configure with &#8220;qmake&#8221; this time using the wayland.sourceme environment.  Make sure that you use the version of qmake that you get with Qt 5 here.  This will make sure that the Wayland platform plugin and QtCompositor <span class="caps">API</span> are build using your special versions of OpenGL and Wayland.</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">git clone git<span class="sy0">:</span><span class="co1">//gitorious.org/qt/qtwayland.git</span></div></li>
<li class="li1"><div class="de1">cd qtwayland</div></li>
<li class="li1"><div class="de1">qmake</div></li>
<li class="li2"><div class="de2">make</div></li>
<li class="li1"><div class="de1">make install</div></li>
</ol></div></p>

	<a name="c6540a17435dfe13e3c86fd258f4cfaf"></a>	<h2>Raspberry Pi build instructions</h2>

	<p>Coming soon&#8230;</p>

	<a name="b6b8a211e6c0b89781f113defcfb5168"></a>	<h1>How do I use QtWayland?</h1>

	<a name="ead9e45682b1d6c22d1cf2bffeebf56e"></a>	<h2>Run Qt applications as Wayland clients</h2>

	<p>When you build the QtWayland module, you should get a new platform plugin for wayland.  To use it you must first already have a Wayland compositor running.  This could be either the Weston reference compositor provided by the Wayland project, or a Qt example compositor provided by QtWayland.  Regardless the only thing you need to do as an application developer to run your <span class="caps">GUI</span> application as a wayland client is:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>application <span class="sy0">-</span>platform wayland</div></li>
</ol></div></p>

	<a name="09a23b5888b05855341cc0073b67c4e1"></a>	<h2>Create and Run your own Wayland Compositor with Qt5</h2>

	<a name="59c0238403b6016980ca7d54eca26b4c"></a>	<h3>Running example compositors</h3>

	<p>The QtWayland module provides a couple of example compositors that demonstrate how the QtCompositor <span class="caps">API</span> works.  These are built in the examples folder of the QtWayland module if you add &#8220;wayland-compositor&#8221; to the <span class="caps">CONFIG</span> variable when starting qmake, as in :<br />
<div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">qmake CONFIG<span class="sy0">+=</span>wayland<span class="sy0">-</span>compositor</div></li>
</ol></div></p>

	<p>These examples represent the server side of Wayland, so they do not use the wayland platform plugin, but rather whatever platform you need to run on.  Generally this is going to be either <em>eglfs</em>, <em>kms</em>, or if you want to run in X11 <em>xcb</em>.</p>

	<p>If you wanted to run the qml-compositor in X11 you would run the following:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">source ~<span class="sy0">/</span>Apps<span class="sy0">/</span>Wayland<span class="sy0">/</span>wayland.<span class="me1">sourceme</span></div></li>
<li class="li1"><div class="de1">cd qtwayland<span class="sy0">/</span>examples<span class="sy0">/</span>qml<span class="sy0">-</span>compositor</div></li>
<li class="li1"><div class="de1">.<span class="sy0">/</span>qml<span class="sy0">-</span>compositor <span class="sy0">-</span>platform xcb</div></li>
</ol></div></p>

	<p>And now that you have a Wayland compositor running, you can connect and display Wayland clients. </p>

	<a name="da152c299f1a2604fc0af7852457ee74"></a>	<h3>Creating your own compositor</h3>

	<p>The <span class="caps">API</span> to create a Wayland compositor and control associated events (e.g. a new client connected) is exposed through the QtWayland class WaylandCompositor. Its constructor expects as the primary parameter a pointer to a QWindow object, which allows some flexibility when implementing your compositor.</p>

	<p>Thanks to this, there are 3 different approaches while implementing a compositor:</p>

	<ul>
		<li>QWindow based: the instance will be used to setup the WaylandCompositor object.</li>
	</ul>

	<ul>
		<li>QWidget based: in this case, the base widget window handle will be used.</li>
	</ul>

	<ul>
		<li><span class="caps">QML</span> based: your C++ application will use a QQuickView object to setup the WaylandCompositor. At the time of writing, there is no way to create a compositor using only <span class="caps">QML</span>.</li>
	</ul>

	<p>WaylandCompositor is a pure abstract virtual class, which means that it is not possible to create instances of it. A common pattern while implementing a compositor is inherit from WaylandCompositor and implement the function method <strong>void surfaceCreated(WaylandSurface *surface)</strong>.</p>

	<p>This method will be executed every time a new client connects (i.e. an application was started and requests the services of the compositor), being represented as a WaylandSurface object. There are some signals that this object can generate and must be treated by the compositor, namely:</p>

	<ul>
		<li>mapped(): emitted when the client has connected to the compositor.</li>
	</ul>

	<ul>
		<li>damaged(): <span class="caps">TODO</span></li>
	</ul>

	<ul>
		<li>destroyed(): emitted when the client quits (i.e. the application has exited)</li>
	</ul>

	<ul>
		<li>unmapped(): <span class="caps">TODO</span></li>
	</ul>

	<ul>
		<li>extendedSurfaceReady(): <span class="caps">TODO</span></li>
	</ul>

	<p>The project file will need to use the compositor module (i.e. add in the .pro file <strong>QT += compositor</strong>). It is interesting to comment that at time of writing, there are some <span class="caps">QML</span> related <span class="caps">API</span>s only available by adding a define in the project file &#40;i.e. <strong><span class="caps">DEFINES</span> += QT_COMPOSITOR_QUICK</strong>&#41;.</p>

	<a name="70f500be8e4207b6bffe636e842f1233"></a>	<h3>Starting the compositor standalone</h3>

	<p><span class="caps">TODO</span></p>]]></description>
      <dc:subject>QtWayland</dc:subject>
      <dc:date>2013-05-08T13:32:10+00:00</dc:date>
    </item>

    <item>
      <title>Qt5_platform_configurations</title>
      <link>http://qt&#45;project.org/wiki/Qt5_platform_configurations</link>
      <guid>http://qt&#45;project.org/wiki/Qt5_platform_configurations</guid>
      <description><![CDATA[<a name="6517c77e6aa6229036ec36462b51ddd6"></a>	<h1>List of Qt5 configuration parameters for different platforms with references</h1>

	<p>This page aggregates configuration parameters of Qt5 for different platforms in one place. If you need more information for specific platform, please check the reference link. Before calling the configuration, setup $QTDIR_PREFIX variable, which should point to directory where the Qt should be installed to.</p>

	<p>Feel free to add other platforms. </p>

	<a name="d10403c4c9248c270af55ddd0d8a9485"></a>	<h2>Blackberry 10</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $QTDIR_PREFIX <span class="sy0">-</span>xplatform blackberry<span class="sy0">-</span>armv7le<span class="sy0">-</span>qcc <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>nomake docs <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake demos <span class="sy0">-</span>nomake tests &nbsp;<span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>release <span class="sy0">-</span>no<span class="sy0">-</span>neon <span class="br0">&#91;</span><span class="sy0">-</span>no<span class="sy0">-</span>c<span class="sy0">++</span><span class="nu0">11</span><span class="br0">&#93;</span></div></li>
</ol></div></p>

	<p><a href="http://qt-project.org/wiki/Building-Qt5-for-Blackberry">Building Qt5 for Blackberry</a> <em>[qt-project.org]</em></p>

	<a name="1bdf605991920db11cbdf8508204c4eb"></a>	<h2>iOS</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $QTDIR_PREFIX <span class="sy0">-</span>xplatform unsupported<span class="sy0">/</span>macx<span class="sy0">-</span>ios<span class="sy0">-</span>clang <span class="sy0">-</span>nomake examples <span class="sy0">-</span>nomake tests <span class="sy0">-</span>release <span class="br0">&#91;</span><span class="sy0">-</span>sdk iphonesimulator<span class="br0">&#93;</span></div></li>
</ol></div></p>

	<p><a href="http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/">Qt for iOS Preview</a> <em>[blog.qt.digia.com]</em></p>

	<a name="e84e30b9390cdb64db6db2c9ab87846d"></a>	<h2>Android</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>configure <span class="sy0">-</span>prefix $QTDIR_PREFIX <span class="sy0">-</span>xplatform android<span class="sy0">-</span>g<span class="sy0">++</span> <span class="sy0">-</span>nomake tests <span class="sy0">-</span>nomake examples <span class="sy0">-</span>android<span class="sy0">-</span>ndk <span class="sy0">&lt;</span>path<span class="sy0">/</span>to<span class="sy0">/</span>ndk<span class="sy0">&gt;</span> <span class="sy0">-</span>android<span class="sy0">-</span>sdk <span class="sy0">&lt;</span>path<span class="sy0">/</span>to<span class="sy0">/</span>sdk<span class="sy0">&gt;</span> <span class="sy0">-</span>android<span class="sy0">-</span>ndk<span class="sy0">-</span>host <span class="sy0">&lt;</span>e.<span class="me1">g</span>. <span class="me1">linux</span><span class="sy0">-</span>x86_64<span class="sy0">&gt;</span> <span class="sy0">-</span>skip qttools <span class="sy0">-</span>skip qttranslations <span class="sy0">-</span>skip <a href="http://qt-project.org/doc/QtWebKit.html"><span class="kw5">qtwebkit</span></a> <span class="sy0">-</span>skip qtserialport <span class="sy0">-</span>skip qtwebkit<span class="sy0">-</span>examples</div></li>
</ol></div></p>

	<p><a href="http://qt-project.org/wiki/Qt5ForAndroidBuilding">Building Qt 5 for Android</a> <em>[qt-project.org]</em></p>

	<a name="e941ab0a40b3ca731335ce3483c5a817"></a>	<h2>RaspberryPi</h2>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">.<span class="sy0">/</span>configure <span class="sy0">-</span>opengl es2 <span class="sy0">-</span>device linux<span class="sy0">-</span>rasp<span class="sy0">-</span>pi<span class="sy0">-</span>g<span class="sy0">++</span> <span class="sy0">-</span>device<span class="sy0">-</span>option CROSS_COMPILE<span class="sy0">=</span>~<span class="sy0">/</span>opt<span class="sy0">/</span>gcc<span class="sy0">-</span><span class="nu16">4.7</span><span class="sy0">-</span>linaro<span class="sy0">-</span>rpi<span class="sy0">-</span>gnueabihf<span class="sy0">/</span>bin<span class="sy0">/</span>arm<span class="sy0">-</span>linux<span class="sy0">-</span>gnueabihf<span class="sy0">-</span> <span class="sy0">-</span>sysroot <span class="sy0">/</span>mnt<span class="sy0">/</span>rasp<span class="sy0">-</span>pi<span class="sy0">-</span>rootfs <span class="sy0">-</span>opensource <span class="sy0">-</span>confirm<span class="sy0">-</span>license <span class="sy0">-</span>optimized<span class="sy0">-</span>qmake <span class="sy0">-</span>reduce<span class="sy0">-</span>relocations <span class="sy0">-</span>reduce<span class="sy0">-</span>exports <span class="sy0">-</span>release <span class="sy0">-</span>make libs <span class="sy0">-</span>prefix $QTDIR_PREFIX</div></li>
</ol></div></p>

	<p><a href="http://qt-project.org/wiki/RaspberryPi_Beginners_guide">Beginner’s guide to cross-compile Qt5 on RaspberryPi</a> <em>[qt-project.org]</em></p>]]></description>
      <dc:subject>Qt5_platform_configurations</dc:subject>
      <dc:date>2013-05-08T09:54:38+00:00</dc:date>
    </item>

    <item>
      <title>Qt_Quick</title>
      <link>http://qt&#45;project.org/wiki/Qt_Quick</link>
      <guid>http://qt&#45;project.org/wiki/Qt_Quick</guid>
      <description><![CDATA[<p><div class="factbox right"><h3>Table of Content</h3><ul>
<li><a href="#a8879e590a2172a7c0e72bea59099914">Qt Quick (Qt User Interface Creation Kit)</a><ul>
<li><a href="#60efea20524f0578630c5954422a1ce4">Scope (Qt Creator 2.1 and Quick)</a></li>
<li><a href="#b1daa18259a4fca1766e0285ce843d08">QML vs. Widget-based GUI</a></li>
<li><a href="#bd908db5ccb07777ced8023dffc802f4">Links</a></li></ul>
</li></ul>
</div><br />
<strong>English</strong> <a href="http://qt-project.org/wiki/Qt_Quick_Russian">Русский</a> <a href="http://qt-project.org/wiki/Qt_Quick_es">Castellano</a> <a href="http://qt-project.org/wiki/Qt_Quick_ca">Català</a> <a href="http://qt-project.org/wiki/Qt_Quick_Portuguese">Português</a> <a href="http://qt-project.org/wiki/Qt_Quick_Hungarian">Magyar</a> <a href="http://qt-project.org/wiki/Qt_Quick_Arabic">عربي</a> <a href="http://qt-project.org/wiki/Qt_Quick_Japanese">日本語</a> <a href="http://qt-project.org/wiki/Qt_Quick_Persian">فارسی</a> <a href="http://qt-project.org/wiki/Qt_Quick_Greek">Ελληνικά</a> <a href="http://qt-project.org/wiki/Qt_Quick_Georgian">ქართულად</a> <a href="http://qt-project.org/wiki/Qt_Quick_Bulgarian">Български</a></p>

	<a name="a8879e590a2172a7c0e72bea59099914"></a>	<h1>Qt Quick (Qt User Interface Creation Kit)</h1>

	<p><a href="http://qt-project.org/doc/qt-5.0/qtquick/qtquick-index.html">Qt Quick</a> <em>[qt-project.org]</em>, first introduced in <a href="http://qt-project.org/doc/qt-4.7">Qt 4.7</a> <em>[qt-project.org]</em> and in <a href="http://qt-project.org/wiki/Category:Tools::QtCreator">Qt Creator</a> 2.1, is a high-level UI technology that allows developers and UI designers to work together to create animated, touch-enabled UIs and lightweight applications. It includes:</p>

	<ol>
		<li>New Tools in the Qt Creator <span class="caps">IDE</span>: including a visual editor that allows UI designers and developers to cooperate, working on the same code in an iterative approach</li>
		<li><span class="caps">QML</span> (Qt Meta-Object Language): an easy to use, declarative language</li>
		<li>QtDeclarative: a new module in the Qt library that enables a new declarative programming approach</li>
	</ol>

	<p>And while no C++ programming skills are needed to use Qt Quick, it is 100% based on Qt and can be extended from C++ (and other languages, thanks to <a href="http://qt-project.org/wiki/Category:LanguageBindings">the bindings</a>), limited only by your creativity.</p>

	<a name="60efea20524f0578630c5954422a1ce4"></a>	<h2>Scope (Qt Creator 2.1 and Quick)</h2>

	<ul>
		<li><span class="caps">QML</span> project wizard and project management (new file format for pure <span class="caps">QML</span> applications)</li>
		<li>Advanced <span class="caps">QML</span> editor with syntax highlighting, code completion, integrated help features and more</li>
		<li>Qt Quick Designer: Visual <span class="caps">WYSIWYG</span> editor to create Qt Quick user interfaces (technical preview)</li>
		<li>Qt Quick Components: Common UI Elements that fit into platform Look &amp; Feel</li>
	</ul>

	<a name="b1daa18259a4fca1766e0285ce843d08"></a>	<h2><span class="caps">QML</span> vs. Widget-based <span class="caps">GUI</span></h2>

	<p>Qt beginners often ask: What option will be the best for creating my user interface. With Qt there are 3 techniques (which can be integrated):
	<ul>
		<li>using Qt Designer to create *.ui files, a <span class="caps">XML</span>-based UI description</li>
		<li>coding the setup of your UI in C++ with Qt widgets classes</li>
		<li>write or visually design (or modeling with Qt Creator 2.1) <span class="caps">QML</span> files</li>
	</ul></p>

	<p><em>The HowTo is still to be done</em> but use the <a href="http://qt-project.org/wiki/Tagging">tag</a> <a href="http://qt-project.org/search/tag/qml~vs~widget">qml vs widget</a> <em>[qt-project.org]</em> when searching and finding, thx <span class="smiley">:)</span></p>

	<a name="bd908db5ccb07777ced8023dffc802f4"></a>	<h2>Links</h2>

	<ul>
		<li><a href="http://qt-project.org/wiki/Introduction_to_Qt_Quick">Introduction_to_Qt_Quick</a></li>
		<li><a href="http://qt-project.org/doc/qt-5.0/qtquick/qtquick-index.html">Getting Started</a> <em>[qt-project.org]</em></li>
		<li><a href="http://qt-project.org/doc/qtcreator-2.7/creator-visual-editor.html">Developing Qt Quick Applications</a> <em>[qt-project.org]</em></li>
		<li><span class="caps">OLD</span>: <a href="http://doc.qt.nokia.com/qtcreator-2.1-snapshot/quick-components.html">Creating <span class="caps">QML</span> Components</a> <em>[doc.qt.nokia.com]</em></li>
		<li><span class="caps">OLD</span>: <a href="http://developer.qt.nokia.com/wiki/QtQuickOpenComponents">Open Qt Quick Components</a> <em>[developer.qt.nokia.com]</em></li>
		<li><span class="caps">OLD</span>: <a href="http://developer.qt.nokia.com/wiki/QtQuickMinutes">Qt Quick sync meeting minutes</a> <em>[developer.qt.nokia.com]</em></li>
		<li><span class="caps">OLD</span>: <a href="labs.qt.nokia.com/2010/10/19/exporting-qml-from-photoshop-and-gimp/">Exporting <span class="caps">QML</span> from photoshop and <span class="caps">GIMP</span></a> &#8211; <strong><span class="caps">WIP</span></strong></li>
		<li><span class="caps">OLD</span>: <a href="https://projects.forum.nokia.com/qmluiexamples"><span class="caps">QML</span> UI examples on Forum Nokia</a> <em>[projects.forum.nokia.com]</em></li>
		<li><span class="caps">OLD</span>: <a href="http://developer.qt.nokia.com/wiki/Qt_Quick_Tutorial" title="not yet complete">Qt Quick Tutorial</a> <em>[developer.qt.nokia.com]</em></li>
	</ul>]]></description>
      <dc:subject>Qt_Quick</dc:subject>
      <dc:date>2013-05-08T08:27:47+00:00</dc:date>
    </item>

    <item>
      <title>Category:Developing_with_Qt &#45;&gt; Ports</title>
      <link>http://qt&#45;project.org/wiki/Category:Developing_with_Qt::Ports</link>
      <guid>http://qt&#45;project.org/wiki/Category:Developing_with_Qt::Ports</guid>
      <description><![CDATA[<p>Qt Ports</p>]]></description>
      <dc:subject>Category:Developing_with_Qt &#45;&gt; Ports</dc:subject>
      <dc:date>2013-05-08T06:26:31+00:00</dc:date>
    </item>

    <item>
      <title>Setting_up_PySide</title>
      <link>http://qt&#45;project.org/wiki/Setting_up_PySide</link>
      <guid>http://qt&#45;project.org/wiki/Setting_up_PySide</guid>
      <description><![CDATA[<p><strong>English</strong> <a href="http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/#LIII-A">French</a> <em>[qt-devnet.developpez.com]</em> <a href="http://qt-project.org/wiki/Setting_up_PySide_Korean">한국어</a> <a href="http://qt-project.org/wiki/Setting_up_PySide_Japanese">日本語</a></p>

	<a name="2da7e9549aa0cb18cadd4b621e9043e7"></a>	<h1>Setting up PySide</h1>

	<p>Before you can work with PySide, download and install the following:</p>

	<ul>
		<li><a href="http://qt-project.org/downloads">Qt</a> <em>[qt-project.org]</em></li>
		<li><a href="http://python.org/download/">Python</a> <em>[python.org]</em></li>
		<li><a href="http://qt-project.org/wiki/PySideDownloads">PySide</a> <em>[qt-project.org]</em></li>
	</ul>

	<p><strong>Note</strong>: PySide is not yet compatible with Qt 5.x.  Please use Qt 4.8 instead.</p>

	<a name="d8748815ce364e6a066bfb362edab881"></a>	<h1>Verify PySide Installation</h1>

	<p>To check if PySide is installed correctly, launch a python console and type:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">import PySide</div></li>
</ol></div></p>

	<p>If no error is returned, you have successfully installed  PySide, and can start developing with Qt and Python.<br />
You can also check the version of your PySide installation:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">import PySide</div></li>
<li class="li1"><div class="de1">print<span class="br0">&#40;</span>PySide.__version__<span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>The result should be something like <em>1.0.0</em>.</p>

	<a name="de393d2eb78d851604a71db62f9c39ce"></a>	<h1>Verify Qt Installation</h1>

	<p>To check what version of Qt is used to compile PySide, launch a python console and type:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">import PySide.<a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a></div></li>
<li class="li1"><div class="de1">print<span class="br0">&#40;</span>PySide.<a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a>.__version__<span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>The result should be something like <em>4.7.4</em>.</p>

	<p>Since the Qt version used to compile PySide may differ from the one used to run it, you might also want to check the current running version of Qt:</p>

	<p><div class="cpp-qt geshi"><ol><li class="li1"><div class="de1">print<span class="br0">&#40;</span>PySide.<a href="http://qt-project.org/doc/QtCore.html"><span class="kw5">QtCore</span></a>.<span class="me1">qVersion</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>
</ol></div></p>

	<p>The result could also be <em>4.7.4</em>.</p>]]></description>
      <dc:subject>Setting_up_PySide</dc:subject>
      <dc:date>2013-05-08T03:25:24+00:00</dc:date>
    </item>

    <item>
      <title>LanguageGuidelines</title>
      <link>http://qt&#45;project.org/wiki/LanguageGuidelines</link>
      <guid>http://qt&#45;project.org/wiki/LanguageGuidelines</guid>
      <description><![CDATA[<a name="d365a979b267c7e579518ecaf554e320"></a>	<h1>Language Guidelines</h1>

	<a name="d48be1470c52fab2aaa6676dfe8aec0a"></a>	<h2>Spelling</h2>

	<p>Qt documentation follows the American spelling.</p>

	<a name="5a32d44e74a159a8bcdd1494f8407fd5"></a>	<h3>Latin expressions commonly used in English</h3>

	<p>i.e. (that is)<br />
e.g. (for example)<br />
cf. (compare)<br />
etc. (and so forth)<br />
vs.(versus)<br />
et al. (and others)</p>

	<p>It is advisable to use the English equivalent for better readibility.</p>

	<a name="f4b431f98bafb371052a2e0ef27d39dd"></a>	<h2>Punctuation</h2>

	<a name="872b5a72529add02b16a968b462a4388"></a>	<h3>Oxford comma</h3>

	<p>In punctuation, a serial comma (also called Oxford comma) needs to be placed immediately before the conjunction (often &#8220;and&#8221; or &#8220;or&#8221;) in a series of three or more terms.</p>

	<p>Example:</p>

	<p>I would like crackers, cheese, and garlic.</p>

	<a name="ac8bc47d9875d160a319d15758435c42"></a>	<h3>The comma as a separator between compound sentences.</h3>

	<p>Use commas to separate independent clauses when they are joined by any of these seven coordinating conjunctions: and, but, for, or, nor, so, yet.</p>

	<p>However, the comma can be dropped in the following cases:</p>

	<ul>
		<li>if both independent clauses are quite short, especially if the two clauses are very closely related, and even more so if the subject of both clauses is the same, or</li>
	</ul>

	<ul>
		<li>if only the first clause is quite short, especially if the two clauses are very closely related, and even more so if the subject of both clauses is the same.</li>
	</ul>

	<a name="61362ae288ce1e905a28d9cd321ab762"></a>	<h3>Periods and spaces</h3>

	<p>The period ending a sentence should be followed by 1 space.</p>

	<p>An exception to this rule is the legal text in the beginning of Qt code, which can have 2 spaces after a period.</p>

	<a name="b5f5683c4bf68f57586dd4ed0a3116a6"></a>	<h2>Grammar issues</h2>

	<a name="e9e7238eefd440bebe89f0d533e0bbf1"></a>	<h3>Genitive</h3>

	<p>Can we use the possessive &#8216;s if the owner is not a person ?</p>

	<p>Example:
	<ul>
		<li>the item&#8217;s width</li>
		<li>the width of the item</li>
	</ul></p>

	<p>Both are correct.  There is presently no rule stating that the owner cannot be an inanimate object.</p>

	<a name="af4c41016d47e177b5ab4730535dca7e"></a>	<h3>An <span class="caps">URL</span> or a <span class="caps">URL</span> ?</h3>

	<p>A <span class="caps">URL</span>.</p>

	<p>If the &#8220;u&#8221; is long, the article is &#8220;a&#8221;. For example, a uniform, a university, a Ugandan man.</p>

	<p>If it is short, the article is &#8220;an&#8221;. For example, an understatement, an undermining comment, an underdog team.</p>

	<a name="ee79f2b9e5b88dd740ea9ce8dd0ea986"></a>	<h2>Usage and idioms</h2>

	<a name="99bb00dfdc701484973a9e53a7bf927c"></a>	<h3>Using the second personal pronoun in manuals</h3>

	<p>Avoid using &#8220;you&#8221; in technical documents.  </p>

	<p>When correcting this, use the passive voice, an imperative, and/or rephrase the sentence.</p>

	<p>For example:<br />
You can override this function for your delegate if you need extra logic to decide which transition to return.<br />
==&gt; This function can be overridden for the delegate if extra logic is required to decide which transition to return.</p>

	<a name="fb61758d0f0fda4ba867c3d5a46c16a7"></a>	<h2>Sources</h2>

	<p>The Chicago Manual of Style, 14th edition. The University of Chicago Press.<br />
&#8220;English Language &amp; Usage&#8221;: <a href="http://english.stackexchange.com/about.">http://english.stackexchange.com/about.</a></p>]]></description>
      <dc:subject>LanguageGuidelines</dc:subject>
      <dc:date>2013-05-07T12:57:32+00:00</dc:date>
    </item>

    
    </channel>
</rss>