<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Qt Blog</title>
	<atom:link href="http://blog.qt.digia.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.qt.digia.com</link>
	<description></description>
	<lastBuildDate>Thu, 23 May 2013 13:06:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Introducing Boot to Qt &#8211; A Technology Preview</title>
		<link>http://blog.qt.digia.com/blog/2013/05/21/introducing-boot-to-qt-a-technology-preview/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-boot-to-qt-a-technology-preview</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/21/introducing-boot-to-qt-a-technology-preview/#comments</comments>
		<pubDate>Tue, 21 May 2013 11:29:12 +0000</pubDate>
		<dc:creator>Gunnar Sletta</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35644</guid>
		<description><![CDATA[<br/>For a few months now, we have been working on a new project under the codename Boot to Qt, and today we launch it as a technology preview. Boot to Qt is a commercial offering that provides a fully integrated solution for the creation of slick user interfaces on embedded devices. The offering includes: A light-weight [...]]]></description>
			<content:encoded><![CDATA[<br/><p>For a few months now, we have been working on a new project under the codename <em>Boot to Qt</em>, and today we launch it as a technology preview.</p>
<p><em>Boot to Qt</em> is a commercial offering that provides a fully integrated solution for the creation of slick user interfaces on embedded devices. The offering includes:</p>
<ul>
<li>A light-weight UI stack for embedded linux, based on the <a href="http://qt.digia.com/">Qt Framework</a> - <em>Boot to Qt</em> is built on an Android kernel/baselayer and offers an elegant means of developing beautiful and performant embedded devices.</li>
<li>Ready-made images &#8211; We have images for several different devices which include the <em>Boot to Qt</em> software stack, making it possible to get up and running with minimal effort from day one.</li>
<li>Full Qt Creator Integration &#8211; One-click deploy and run on hardware and a fully featured development environment.</li>
<li>Simulator &#8211; A VirtualBox based simulator which allows device development without hardware and opens up for simulating hardware input, such as GPS and  connectivity.</li>
</ul>
<p>This technology preview focuses on the stack built on an Android baselayer. We also want to provide a similar software stack and the same convenience with ready-made images and IDE integration also for traditional embedded Linux, hopefully with a preview coming some time this summer.</p>
<p>We are expecting to have an official release towards the end of this year.</p>
<p>The following video shows Boot to Qt in action on our reference hardware:</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/7TIgk8rpD5s?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>And the following video show the Boot to Qt SDK works:</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/zk0E2PMLcMs?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h2>Scope of <em>Boot to Qt</em></h2>
<p>The software stack includes most of the Qt Framework:</p>
<ul>
<li>Qt Core, Qt Gui, Qt Network, Qt Widgets, Qt Xml</li>
<li>Qt QML and Qt Quick</li>
<li>Qt Quick Controls</li>
<li>Qt Graphical Effects</li>
<li>Boot to Qt specific additions, including virtual keyboard, brightness control and power off/reboot functionality</li>
</ul>
<p>The hardware devices supported in the Technology Preview are:</p>
<ul>
<li><a title="Google Nexus 7" href="http://www.google.com/nexus/7/specs/">Google Nexus 7</a> - 1.2 GHz Quad-Core ARM Cortex A9, Tegra 3 GPU, 1GB RAM</li>
<li><a title="Beagle Board xM" href="http://beagleboard.org/hardware-xM">Beagle Board xM</a> - 1GHz ARM Cortex A8, PowerVR SGX530 GPU, 512MB RAM</li>
<li><a title="Boundary Devices SabreLite" href="http://boundarydevices.com/products/sabre-lite-imx6-sbc/">Boundary Devices SabreLite</a> (Freescale i.MX 6) &#8211; 1 GHz Quad-Core ARM Cortex A9, Vivante GC2000 GPU, 1GB RAM</li>
</ul>
<p>This is not a fixed set, but a place for us to start. If you have suggestions for other devices, let us know. The stack can also run on x86 hardware.</p>
<div>
<p>Right now, the stack is single-process. The launcher is a QML application which launches other QML applications in-process. We have looked briefly into using Android Gralloc APIs to do multiprocess sharing of hardware buffers, and we know it can be done, but we consider this out of the 1.0 scope.</p>
<p>We have also had similar discussions around Multimedia and Webkit, we want to have them in place, but maybe not in the initial release. The current software stack is already quite powerful and serves a number of different use cases.</p>
</div>
<h2>Performance</h2>
<p>Qt 5 introduced a new OpenGL ES 2.0 based scene graph to power Qt Quick 2. This makes Qt Quick very suitable for running on embedded hardware, even those with moderate specs. The demo launcher we ship with the images for instance, runs velvet at 60 FPS on all our hardware devices.</p>
<p>We were looking at CPU usage while playing around in the application launcher on the Nexus 7. When idle, it uses a shader to add a glow on the currently selected item and has a small particle system on the Qt logo in the corner. We found that when the launcher was just animating the glow on the active item and running the small particle system on the Qt logo, the CPU load was running at about 50%. When we flicked it, it dropped to 30% and when the finger was down and we were moving the list via touch, it dropped to below 20%. So it seemed that the more we did, the less the CPU load became. What we were observing was CPU <a title="CPU Frequency Scaling" href="http://en.wikipedia.org/wiki/Dynamic_frequency_scaling">frequency scaling</a>. The CPU is a Quad-core clocked at 1.2GHz (with a special 1.3Ghz single-core operating mode), but when idle, it had disabled 3 cores and had scaled the one remaining core to 102Mhz. <strong>So we were able to animate a large part of a 1280&#215;800 screen at 60FPS on a CPU clocked at 102Mhz, and were still only using half of that. </strong></p>
<p><em>For reference, the same animation runs at 2% CPU on the i.MX6 and 15% on the Beagle, none of which does do frequency scaling.</em></p>
<p>We also have pretty decent startup times. Below is a diagram comparing <em>Boot to Qt </em>to native Android. Now of course, full Android brings in a lot of additional stuff, but that is also the point. Most embedded devices do not need that.</p>
<p><a href="http://blog.qt.digia.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-13-at-12.20.12-PM.png"><img class="aligncenter size-full wp-image-35726" src="http://blog.qt.digia.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-13-at-12.20.12-PM.png" alt="" width="653" height="229" /></a></p>
<p style="text-align: center"><em>Startup times, in seconds, from power-on until device reaches the B2Qt launcher or the Android Homescreen.<br />
Lower is better</em></p>
<p>This is not too shabby, but we believe we can cut this down a bit more, at least when we start exploring various embedded Linux configurations. As an example,  <a title="Qt 5 on Raspberry Pi" href="http://bsquask.com">Qt 5 on Raspberry Pi</a> can start rendering after as little as 3 seconds.</p>
<h2>Getting Access</h2>
<p>For more information, see the <a title="Boot to Qt" href="http://qt.digia.com/boot-to-qt">product page</a>.</p>
<p>Boot to Qt is available for evaluation upon request. If you want to try it out or if you are just interested in the software, please use the contact form on the product page and we will be happy to get you started. Of course, feel free to leave comments and questions on this blog too.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/21/introducing-boot-to-qt-a-technology-preview/feed/</wfw:commentRss>
		<slash:comments>60</slash:comments>
		</item>
		<item>
		<title>Qt in World&#8217;s Fastest Electric Car</title>
		<link>http://blog.qt.digia.com/blog/2013/05/17/qt-in-worlds-fastest-electric-car/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-in-worlds-fastest-electric-car</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/17/qt-in-worlds-fastest-electric-car/#comments</comments>
		<pubDate>Fri, 17 May 2013 12:59:12 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Qt in Education]]></category>
		<category><![CDATA[Qt in use]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35896</guid>
		<description><![CDATA[<br/>Digia has supported Metropolia University of Applied Sciences in their electric car project called Electric Raceabout (E-RA). This cool research project has produced a street legal electric sports car, which not only has the World record on ice, but also runs Qt. Metropolia University, located in Helsinki, Finland, does extensive research on electric vehicles, one [...]]]></description>
			<content:encoded><![CDATA[<br/><p><em><strong>Digia has supported Metropolia University of Applied Sciences in their electric car project called Electric Raceabout (E-RA). This cool research project has produced a street legal electric sports car, which not only has the World record on ice, but also runs Qt.</strong></em></p>
<p><a href="http://www.metropolia.fi/en/" target="_blank">Metropolia University</a>, located in Helsinki, Finland, does extensive research on electric vehicles, one example being <a href="http://www.raceabout.fi/era/" target="_blank">E-RA</a> &#8211; an electric sports car built primarily by automotive engineering students.</p>
<p>With 4-wheel drive and well designed handling E-RA is a really capable sports car with impressive specs:</p>
<ul>
<li>Top speed of over 260 km/h</li>
<li>Motor power of 282 kW</li>
<li>Peak torque of 800 Nm &#8211; in each wheel</li>
</ul>
<p>And all this provided by an electric vehicle that is fully street legal (and rest assured, the Finnish road inspection is surely one of the toughest in the world to pass).</p>
<p>E-RA has achieved lap time of 8 minutes 42,72 seconds at Nürburgring Nordschleife, which was electric vehicle track record for quite a while, as well as World record as the fastest electric vehicle on ice with average speed of 252,09 km/h. Nicely driven E-RA has operating range of over 200 kilometers.</p>
<p>The students have built both the IVI system and the instrument cluster with Qt 4.8 running on top of Linux. I think the whole E-RA project is a really great proof of the skills the soon-to-graduate engineers have, and certainly the Qt parts are no less impressive.</p>
<p><strong>Have a look on the enclosed video produced by the students at Metropolia University to hear the full story:</strong></p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/8XxPaaOObmk?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/17/qt-in-worlds-fastest-electric-car/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Introducing Qt Quick Layouts</title>
		<link>http://blog.qt.digia.com/blog/2013/05/16/introducing-qt-quick-layouts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-qt-quick-layouts</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/16/introducing-qt-quick-layouts/#comments</comments>
		<pubDate>Thu, 16 May 2013 14:29:05 +0000</pubDate>
		<dc:creator>jan-arve</dc:creator>
				<category><![CDATA[Declarative UI]]></category>
		<category><![CDATA[Layouts]]></category>
		<category><![CDATA[Qt Quick]]></category>
		<category><![CDATA[Qt Quick 2]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35704</guid>
		<description><![CDATA[<br/>If you want to create a QML application where the UI responds well to window resizing, the toolbox that Qt Quick offers has been somewhat limited. Qt 5.1 will offer the new Qt Quick types RowLayout, ColumnLayout and GridLayout for this purpose. Background Up until Qt 5.1, positioners and anchors have been the only Qt Quick [...]]]></description>
			<content:encoded><![CDATA[<br/><p><span style="font-size: 13px">If you want to create a QML application where the UI responds well to window resizing, the toolbox that Qt Quick offers has been somewhat limited. Qt 5.1 will offer the new Qt Quick types <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-rowlayout.html">RowLayout</a>, <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-columnlayout.html">ColumnLayout</a> and <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-gridlayout.html">GridLayout</a> for this purpose.<br />
</span></p>
<h3>Background</h3>
<p>Up until Qt 5.1, positioners and anchors have been the only Qt Quick tools available for arranging items in the UI.</p>
<p><a href="http://qt-project.org/doc/qt-5.0/qtquick/positioners.html">Positioners</a> are convenient for adding many items, but not always helpful for creating a resizable UI since they (as the name implies &#8211; surprise, surprise) only positions the items &#8211; the widths and heights are kept the same.</p>
<p><a href="http://qt-project.org/doc/qt-5.0/qtquick/qtquick-positioning-anchors.html">Anchors</a> allows a bit more flexibility, at the price of verbosity. With anchors you can make an item stretch by binding one edge to the corresponding edge of the parent, and you set up a similar binding on the items&#8217; opposite edge. However, you cannot make several items distribute themselves evenly if the window is resized.</p>
<p>The last option is to do the manual layouting yourself. This offers great flexibility, but it can be verbose, cumbersome and error-prone. During the development of Qt Quick Controls, we wanted to improve this and decided to provide a better and more convenient layout system.</p>
<h3>import QtQuick.Layouts 1.0</h3>
<p>By including the above import you will have RowLayout, ColumnLayout and GridLayout available in your toolbox. These layouts behave very much like their sisters found in the QtWidgets module: QHBoxLayout, QVBoxLayout and QGridLayout. It also tries to match the API of the Row, Grid and Column QML elements where it makes sense. So, if you are familiar with any of these APIs, you will find Qt Quick Layouts easy to grasp.</p>
<p><strong>Alignment</strong> of items inside a cell can be specified with the <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#alignment-prop">Layout.alignment</a> property.</p>
<p><strong>Spans</strong> across rows or columns can be specified with the <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#rowSpan-prop">Layout.rowSpan</a> and <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#columnSpan-prop">Layout.columnSpan</a> properties.</p>
<p><strong>Grid coordinates</strong> can be specified with the <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#row-prop">Layout.row</a> and <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#column-prop">Layout.column</a> properties.</p>
<p><strong>Resizable items</strong> can be specified with the <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#fillWidth-prop">Layout.fillWidth</a> and <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#fillHeight-prop">Layout.fillHeight</a> properties. This was the main goal of the Qt Quick Layouts.</p>
<p><strong>Minimum, Preferred and Maximum</strong> sizes can be specified with <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#minimumWidth-prop">Layout.minimumWidth</a>, <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#preferredWidth-prop">Layout.preferredWidth</a> and <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquicklayouts/qml-qtquick-layouts1-layout.html#maximumWidth-prop">Layout.maximumWidth</a>  properties (&#8220;Width&#8221; can be replaced with &#8220;Height&#8221; for specifying similar constraints to the height).</p>
<div>The feature set it adds might not look like a lot, but the fact that you can have both non-stretching items and stretching items in the same layout makes things easier and more intuitive in many cases.</div>
<div></div>
<h3>Example</h3>
<p><a href="http://blog.qt.digia.com/wp-content/uploads/2013/05/toolbar1.png"><img src="http://blog.qt.digia.com/wp-content/uploads/2013/05/toolbar1.png" alt="" width="446" height="47" /></a></p>
<div>Suppose we need to create a ToolBar with two buttons and a slider that occupies the remaining space. When resizing, the extra space will be allocated to the slider.</div>
<div></div>
<div>Without Qt Quick Layouts, the solution with least code would probably be a mix between using a Row and using anchors:</div>
<div></div>
<div>
<pre>ToolBar {
    Row {
        id: row
        spacing: 2
        anchors.verticalCenter: parent.verticalCenter
        ToolButton { iconSource: "images/go-previous.png" }
        ToolButton { iconSource: "images/go-next.png" }
    }
    Slider {
        anchors.left: row.right
        anchors.leftMargin: 2
        anchors.verticalCenter: parent.verticalCenter
        anchors.right: parent.right
    }
}</pre>
</div>
<div></div>
<div>With Qt Quick Layouts, all items can be added to the same layout:</div>
<div>
<pre>ToolBar {
    RowLayout {
        anchors.fill: parent
        spacing: 2
        ToolButton { iconSource: "images/go-previous.png" }
        ToolButton { iconSource: "images/go-next.png" }
        Slider { Layout.fillWidth: true }
    }
}</pre>
<div>Notice how much shorter the declaration for the Slider element is. Also note that when using Qt Quick Layouts, the spacing only needs to be specified once. Code is reduced from 288 to 172 characters (whitespace excluded), which is a 40% reduction.</div>
<div></div>
<h3>Summary</h3>
<div>In this example, by using Qt Quick Layouts we got 40% less code, improved readability (not only because the code got shorter, but also because the structure of the code became closer to the structure of the UI).</div>
<div></div>
<div>If you want a resizable UI, you will probably find that Qt Quick Layouts are easier to use than anchors, positioners and manual layouting.</div>
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/16/introducing-qt-quick-layouts/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Qtified JavaScript</title>
		<link>http://blog.qt.digia.com/blog/2013/05/16/qtified-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qtified-javascript</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/16/qtified-javascript/#comments</comments>
		<pubDate>Thu, 16 May 2013 13:45:56 +0000</pubDate>
		<dc:creator>Jörg Bornemann</dc:creator>
				<category><![CDATA[Qt Quick]]></category>
		<category><![CDATA[Qt Quick 2]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35729</guid>
		<description><![CDATA[<br/>When writing JavaScript code, it doesn&#8217;t take long until I&#8217;m missing some function which is available in Qt&#8217;s C++ API. One very simple example is QList::contains. Checking whether an array contains a certain element works like this in JavaScript: var names = ["Egon", "Peter", "Raymond", "Waldo"]; if (names.indexOf("Waldo") !== -1) print("We've found him!"); It would [...]]]></description>
			<content:encoded><![CDATA[<br/><p>When writing JavaScript code, it doesn&#8217;t take long until I&#8217;m missing some function which is available in Qt&#8217;s C++ API. One very simple example is <code>QList::contains</code>. Checking whether an array contains a certain element works like this in JavaScript:</p>
<pre>var names = ["Egon", "Peter", "Raymond", "Waldo"];
if (names.indexOf("Waldo") !== -1)
    print("We've found him!");</pre>
<p>It would be nice if we could express the condition using a <em>contains</em> method but <em>Array</em> doesn&#8217;t provide one.<br />
Luckily, JavaScript enables us to add methods to inbuilt types by modifiying the corresponding prototype object.</p>
<pre>Array.prototype.contains = function(e) {
    return this.indexOf(e) !== -1;
}
if (names.contains("Waldo"))
    print("We've found him!");</pre>
<p>Yay! Now we can use the <em>contains</em> method for all arrays!<br />
But wait &#8211; there&#8217;s a surprise lurking right around the corner once you&#8217;re trying to iterate over the keys of the array.</p>
<pre>for (var i in names)
    print(i);</pre>
<p>This will print:</p>
<pre>0
1
2
3
contains</pre>
<p>I know, iterating over arrays should be done with an index variable&#8230;but still&#8230;this additional key is unexpected and asking for trouble.</p>
<p>The solution for this problem is to mark the property <em>contains</em> as non-enumerable. We can use the <a title="Object.defineProperty documentation" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a> function for that which is available since JavaScript 1.8.5.</p>
<pre>Object.defineProperty(Array.prototype, "contains", {
    value: function(e) { return this.indexOf(e) !== -1; },
    enumerable: false    // This is the default and can be omitted.
})</pre>
<p>We&#8217;re passing to <em>Object.defineProperty</em> the object we want to enhance, the name of the property we want to add and a descriptor object that contains the attributes of our new property.<br />
The value of  <em>contains</em> will be the function that we formerly passed directly to the prototype. Setting the <em>enumerable</em> property to false in the descriptor object will hide <em>contains</em> when using a <code>for (... in ...)</code> loop.</p>
<p>This way we can create a nice Qtish API for the inbuilt JavaScript types <em>Array</em> and <em>String</em>. This can be put into a .js file and used it in QML/JS or in qbs project files.</p>
<p>What do you think? Would such an API be helpful for your QML code? Which QList or QString method are you missing most?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/16/qtified-javascript/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Qt 5.1 Beta Released</title>
		<link>http://blog.qt.digia.com/blog/2013/05/14/qt-5-1-beta-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-5-1-beta-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/14/qt-5-1-beta-released/#comments</comments>
		<pubDate>Tue, 14 May 2013 11:00:41 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35668</guid>
		<description><![CDATA[<br/>I am happy to announce that we have today released Qt 5.1 Beta. We are now a major step closer to release Qt 5.1.0, which is expected before the summer. With the Beta release, binary installers for Qt 5.1 are available making it easier for you to get started with Qt. Let’s take a quick [...]]]></description>
			<content:encoded><![CDATA[<br/><p><em><strong>I am happy to announce that we have today released Qt 5.1 Beta. We are now a major step closer to release Qt 5.1.0, which is expected before the summer. With the Beta release, binary installers for Qt 5.1 are available making it easier for you to get started with Qt. Let’s take a quick look at what is in the package.</strong></em></p>
<h3>Key functionality</h3>
<p>The main driver for Qt 5.1 has been to increase the maturity of the new features introduced with Qt 5.0. We have improved the functionality and performance based on the feedback received from real-world use cases of Qt 5.0 and porting applications from Qt 4.x. We are able to meet your needs with Qt 5 because of the feedback and contributions from our growing ecosystem of about 500,000 developers in over 70 industries using Qt on numerous platforms and configurations.</p>
<p>The key new features of Qt 5.1 Beta include:</p>
<ul>
<li>Qt Quick Controls module providing a set of reusable UI components especially for desktop applications created with Qt Quick</li>
<li>Qt Quick Layouts module bringing an easier, more intuitive, way to manage scalable UIs by ensuring that items are consistently arranged, and that the UI as a whole remains usable across different screen sizes.</li>
<li>Qt Serial Port module providing a cross-platform interface for using hardware and virtual serial ports in Qt applications</li>
<li>Possibility to use Qt Quick and Widgets together in the same application window</li>
<li>Qt Creator 2.7.1 bundled into the package, providing, for example, Qt Quick Designer for rapid prototyping, as well as improved C++11 code editing</li>
<li>Support for static Qt builds making it possible to address those use cases that cannot use dynamic linking</li>
<li>Introducing Qt Sensors as an officially supported module</li>
</ul>
<p>For a more detailed look, please take a look to <a href="http://qt-project.org/wiki/New-Features-in-Qt-5.1" target="_blank">the Wiki article listing the new features of Qt 5.1 Beta</a>, refer to the <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtdoc/index.html" target="_blank">Qt 5.1 Documentation Snapshot</a> as well as <a href="http://qt-project.org/wiki/Qt510beta1KnownIssues" target="_blank">the Known Issues page</a> in the wiki.</p>
<h3>Binary installers</h3>
<p>For most users the big thing with Qt 5.1 Beta compared to Qt 5.1 Alpha is binary installers that provide a convenient way of installing all you need to start developing with Qt without needing to build Qt yourself. With Qt 5.1 we are introducing some new configurations such as 64bit VS2012 with OpenGL, which is already available with the Beta. Soon after the Beta we are upgrading MinGW to version 4.8 and aim to bring also 32bit VS2012 with ANGLE configuration by the time we are releasing Qt 5.1.0.</p>
<p>Qt 5.1 Beta comes as an offline installer, but we will also be providing online installers before the release of Qt 5.1.0 final. The offline installer contains all you need to get started with Qt – tools, documentation, examples and pre-built Qt libraries. Source packages are available for those who wish to build Qt (or need to use a configuration that is not available as a pre-built binary). In addition to the desktop binaries, Qt 5.1 Beta comes with pre-built binaries for Android that can be bundled in with your application.</p>
<h3>New platforms</h3>
<p>Qt 5.1 Beta provides technology-preview level implementation of the new Android and iOS ports. In addition, Qt 5.1.0 final is planned to re-introduce Windows Embedded Compact 7 support that has earlier been available with Qt 4.8. We have added all these new platforms into the CI system so that each change that goes into Qt is verified to work on these as well as the other platforms and configurations already in the CI. At the moment, the CI for Android and iOS only tests for building, but we are gradually also adding the automated tests to be run on these new platforms, to decrease the possibility of regressions.</p>
<p>There is quite a lot of buzz around the new mobile ports and many are interested in knowing what is possible already with the Qt 5.1 Beta. In general, it can be stated that you can create stunning applications that run smoothly on both of the new platforms, but with limitations in supported functionality and the developer experience of getting your masterpiece into these devices.</p>
<p>With Android the following functionality works quite well in the Qt 5.1 Beta:</p>
<ul>
<li>Widgets, Graphics View, Qt Quick 1 and Qt Quick 2 applications</li>
<li>OpenGL, networking and other core functionalities of Qt</li>
<li>Some parts of Qt Multimedia, for example QML media player</li>
<li>A set of commonly used sensors with Qt Sensors</li>
<li>Deploying your application to a device from Qt Creator</li>
<li>Debugging your application from Qt Creator</li>
<li>Qt 5.1 Beta comes with pre-built binaries for Android that can be bundled in with your application</li>
</ul>
<p>With iOS the main issue is Qt Quick 2 not being available, as it needs a new QML engine, but the following functionality works quite well in the Qt 5.1 Beta:</p>
<ul>
<li>Widgets, Graphics View and Qt Quick 1 applications</li>
<li>OpenGL, networking and other core functionalities of Qt</li>
<li>A set of commonly used sensors with Qt Sensors</li>
<li>Deploying your application to a device from Xcode / iTunes</li>
</ul>
<h3>Next steps</h3>
<p>With the release of Qt 5.1 Beta we are one step closer to the Qt 5.1.0 final release, which we aim to have out before summer. Based on the feedback we receive from the Beta, there will be a Release Candidate created in a few weeks time, or alternatively a second Beta.</p>
<p>Please test out Qt 5.1 Beta and send us feedback:</p>
<ul>
<li>File a bug report to <a href="http://bugreports.qt-project.org" target="_blank">bugreports.qt-project.org</a> in case you find a new bug</li>
<li>Send e-mail to Qt Project mailing lists or contact us via IRC</li>
<li>If you have a commercial license, please contact Digia Qt Support via the Customer Portal</li>
</ul>
<p>Qt 5.1 Beta release can be downloaded from <a href="http://qt.digia.com/Log-in-Customer-Portal/" target="_blank">the Digia Qt Customer Portal</a> or from <a href="http://download.qt-project.org/development_releases/qt/5.1/5.1.0-beta1/" target="_blank">download.qt-project.org</a> for open-source users.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/14/qt-5-1-beta-released/feed/</wfw:commentRss>
		<slash:comments>111</slash:comments>
		</item>
		<item>
		<title>Qt Contributors Summit 2013 &#8211; Please register</title>
		<link>http://blog.qt.digia.com/blog/2013/05/14/qt-cs-please-register/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-cs-please-register</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/14/qt-cs-please-register/#comments</comments>
		<pubDate>Tue, 14 May 2013 06:00:21 +0000</pubDate>
		<dc:creator>Knut Yrvin</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Contributors]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35655</guid>
		<description><![CDATA[<br/>Guggenheim mirror balls Registration for the Qt Contributors Summit 2013 is now open. Before going into details, I&#8217;ve added a photo of the The Guggenheim mirror balls right outside the famous Guggenheim Museum in Bilbao. It can symbolise how every Qt contributor is linked together, working on the same project, using the summit to reflect [...]]]></description>
			<content:encoded><![CDATA[<br/><table class="image" align="right">
<caption align="bottom">Guggenheim mirror balls</caption>
<tbody>
<tr>
<td><img style="float: right;" src="http://d.skolelinux.no/~knuty/bilder/registration_QtCS_Bilbao_s.jpg" alt="Guggenheim mirror balls" width="200" /></td>
</tr>
</tbody>
</table>
<p><strong>Registration for the Qt Contributors Summit 2013 is now open.</strong></p>
<p>Before going into details, I&#8217;ve added a photo of the The Guggenheim mirror balls right outside the famous Guggenheim Museum in Bilbao. It can symbolise how every Qt contributor is linked together, working on the same project, using the summit to reflect on how Qt can be developed even better. Ok, Knut, snap out of it. Over to the practicalities.</p>
<p>Qt Contributors Summit 2013 registration is easy. Just use the <a title="Akademy Registration System" href="https://www.webropolsurveys.com/S/38DD9EFBC60A1760.par" target="_blank">Qt CS registration form</a>.</p>
<p>Since the Qt Contributors Summit is an invitation-only event, please make sure you fit into one or more of the following before registering:</p>
<ul>
<li>You are a Qt Project maintainer</li>
<li>You are a Qt Project approver</li>
<li>You took part in the previous Summit (<a title="Attendies at Qt CS 2012" href="http://qt-project.org/groups/qt-contributors-summit-2012/members">Attendees at Qt CS 2012</a>)</li>
<li>You took a sponsorship package including event invitations (coming soon)</li>
<li>You are in the organization team.</li>
<li>You are invited by a maintainer or the organization team and we still have seats left.</li>
<li>KDE Akademy contributor</li>
</ul>
<h3>Please add sessions unconference style</h3>
<p>Since the main idea for the Qt CS is to let developers meet and make solutions, now is the time to pre-schedule sessions on the <a title="The Qt CS program" href="http://qt-project.org/groups/qt-contributors-summit-2013/wiki/Program" target="_blank">Qt CS program wiki</a>. Please press &#8220;Join group&#8221; at the top of the wiki-page. We will  give you wiki-access as soon as possible and add you to the group.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/14/qt-cs-please-register/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Qt Creator 2.7.1 released</title>
		<link>http://blog.qt.digia.com/blog/2013/05/14/qt-creator-2-7-1-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-creator-2-7-1-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/05/14/qt-creator-2-7-1-released/#comments</comments>
		<pubDate>Mon, 13 May 2013 22:02:33 +0000</pubDate>
		<dc:creator>Eike Ziller</dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35677</guid>
		<description><![CDATA[<br/>We take today&#8217;s Qt 5.1 beta release as an opportunity to push out some fixes to Qt Creator 2.7. Around 40 bugs reported on our bugtracker have been fixed, so if you wonder if your favorite issue is one of them you might want to check out the list of &#8220;Qt Creator bugs that have [...]]]></description>
			<content:encoded><![CDATA[<br/><p>We take today&#8217;s <a href="http://blog.qt.digia.com/?p=35668">Qt 5.1 beta release</a> as an opportunity to push out some fixes to Qt Creator 2.7.</p>
<p>Around 40 bugs reported on our bugtracker have been fixed, so if you wonder if your favorite issue is one of them you might want to check out the list of <a href="https://bugreports.qt-project.org/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+QTCREATORBUG+AND+resolution+%3D+Done+AND+fixVersion+%3D+12614+ORDER+BY+component+ASC%2C+key+DESC">&#8220;Qt Creator bugs that have been closed as &#8216;done&#8217; for 2.7.1&#8243;</a> on our bug tracker. And of course there were other bugs fixed that do not appear on that list, so you should definitely check Qt Creator 2.7.1 out.</p>
<p><a href="http://qt-project.org/downloads#qt-creator">Download Qt Creator 2.7.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/05/14/qt-creator-2-7-1-released/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>How to tile widgets in a multiple document interface application</title>
		<link>http://blog.qt.digia.com/blog/2013/04/29/how-to-tile-widgets-in-a-multiple-document-interface-application/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-tile-widgets-in-a-multiple-document-interface-application</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/29/how-to-tile-widgets-in-a-multiple-document-interface-application/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 10:05:20 +0000</pubDate>
		<dc:creator>Titta Heikkala</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Customers]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35616</guid>
		<description><![CDATA[<br/>In Qt you can create multiple document interface (MDI) applications using a QMdiArea as the central widget. The QMdiArea widget serves as a window manager for the MDI windows. There are already functions available for tiling all the child windows into a tile pattern and for cascading them into a cascade pattern. With MDI application [...]]]></description>
			<content:encoded><![CDATA[<br/><p>In Qt you can create multiple document interface (MDI) applications using a QMdiArea as the central widget. The QMdiArea widget serves as a window manager for the MDI windows. There are already functions available for tiling all the child windows into a tile pattern and for cascading them into a cascade pattern.</p>
<p>With MDI application it would sometimes be useful to tile the child windows also horizontally and vertically. The QMdiArea does not currently have an API to achieve this functionality but it’s quite simple to arrange the child windows in your application. We will next cover the steps needed to tile the child windows horizontally and vertically. The approach presented here is implemented on top of the MDI Example (<a href="http://qt-project.org/doc/qt-5.0/qtwidgets/mainwindows-mdi.html">http://qt-project.org/doc/qt-5.0/qtwidgets/mainwindows-mdi.html</a>).</p>
<p>Let’s start by adding the actions in place so that the functionality can be triggered. To the MainWindow we will add one action for each function as private member variable:</p>
<pre>QAction *tileVerticalAct;
QAction *tileHorizontalAct;</pre>
<p>We will also add a private slot for each function:</p>
<pre>void tileSubWindowsVertically();
void tileSubWindowsHorizontally();</pre>
<p>Then we will initialize the actions and connect them to the right slots. We are going to add the following code to the createActions() method that already initializes actions for the application:</p>
<pre>tileVerticalAct = new QAction(tr("Tile Vertically"), this);
tileVerticalAct-&gt;setStatusTip(tr("Tile the windows vertically"));
connect(tileVerticalAct, SIGNAL(triggered()), this, SLOT(tileSubWindowsVertically()));</pre>
<pre>tileHorizontalAct = new QAction(tr("Tile Horizontally"), this);
tileHorizontalAct-&gt;setStatusTip(tr("Tile the windows horizontally"));
connect(tileHorizontalAct, SIGNAL(triggered()), this, SLOT(tileSubWindowsHorizontally()));</pre>
<p>And naturally we need to add the actions to the menu in order to launch the tiling. We can do this in the updateWindowMenu() where other actions are added to the menu too:</p>
<pre>windowMenu-&gt;addAction(tileVerticalAct);
windowMenu-&gt;addAction(tileHorizontalAct);</pre>
<p>Now we are ready to start tiling the child windows. We are going to take a closer look at the tileSubWindowsVertically() slot here. To begin with, we will start by checking that there are child windows in the MDI area to prevent us from trying to do modifications to non-existing windows.</p>
<pre>if (mdiArea-&gt;subWindowList().isEmpty())
    return;</pre>
<p>We are going to initialize a rectangle that defines the size of one child window. The width for a child window will naturally be the width of the MDI area. The height of a child window will be based on the height of the MDI area and the amount of child windows. Basically, we will just divide the MDI area height with the amount of child windows. The rectangle can then be used to set the geometry for each child widget in the MDI area.</p>
<pre>QPoint position(0, 0);</pre>
<pre>foreach (QMdiSubWindow *window, mdiArea-&gt;subWindowList()) {
    QRect rect(0, 0, mdiArea-&gt;width(), 
               mdiArea-&gt;height() / mdiArea-&gt;subWindowList().count());
    window-&gt;setGeometry(rect);
    window-&gt;move(position);
    position.setY(position.y() + window-&gt;height());
}</pre>
<p>While we are setting the geometry for the child widgets we also define the new position for them to have the windows tiled vertically. The child windows are ordered here based on the order of the child windows in the MDI area. By default, this order is the order in which the windows were inserted into the workspace. We will move the first window in the MDI area to the top left corner. While processing the child windows we will adjust the position so that each child window is position below the previously processed one. This is all we need to tile the child windows vertically.</p>
<p><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/vertical1.png"><img class="alignnone size-full wp-image-35620" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/vertical1.png" alt="" width="563" height="480" /></a></p>
<p>Tiling the child windows horizontally will be almost the same; you only need to adjust the width and x-position of the window. The height of a child window will be the same as the height of the MDI area. The position of a child window will be on the right of the previous child.</p>
<pre>void MainWindow::tileSubWindowsHorizontally()
{</pre>
<pre>    if (mdiArea-&gt;subWindowList().isEmpty())
        return;</pre>
<pre>    QPoint position(0, 0);</pre>
<pre>    foreach (QMdiSubWindow *window, mdiArea-&gt;subWindowList()) {
        QRect rect(0, 0, mdiArea-&gt;width() / mdiArea-&gt;subWindowList().count(), 
                   mdiArea-&gt;height());
        window-&gt;setGeometry(rect);
        window-&gt;move(position);
        position.setX(position.x() + window-&gt;width());
    }
}</pre>
<p title="Source code for example application">Not that hard or what do you think? If you want to give it a try you can get the source code for the example here: <a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/mdi.zip">Source code for example application </a> . Shall you have any questions related to this you can always contact us in the Qt Support team via the <a title="Customer Portal" href="http://qt.digia.com/customerportal">Customer Portal</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/29/how-to-tile-widgets-in-a-multiple-document-interface-application/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Enginio: Qt Backend as a Service Launches Tech Preview</title>
		<link>http://blog.qt.digia.com/blog/2013/04/25/enginio-qt-backend-as-a-service-launches-tech-preview/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enginio-qt-backend-as-a-service-launches-tech-preview</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/25/enginio-qt-backend-as-a-service-launches-tech-preview/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 10:31:27 +0000</pubDate>
		<dc:creator>Makkonen Sami</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35589</guid>
		<description><![CDATA[<br/>You may have already heard of Enginio at Qt Developer Days 2012  or you may have stumbled across our site, http://engin.io. We are now ready to officially open up the doors to our Enginio Tech Preview and welcome you to test it out. We have already had some early adopters who have given us valuable [...]]]></description>
			<content:encoded><![CDATA[<br/><p>You may have already heard of Enginio at <a href="http://www.youtube.com/watch?v=O_QkohHZ45s">Qt Developer Days 2012</a>  or you may have stumbled across our site, <a title="http://engin.io" href="http://engin.io">http://engin.io</a>. We are now ready to officially open up the doors to our Enginio Tech Preview and welcome you to test it out. We have already had some early adopters who have given us valuable feedback which we have used to develop the product.</p>
<h4>Why Enginio?</h4>
<p>When we had a look at the existing cloud solutions, we saw that there was room for improvement. They were sometimes difficult to get started using and required specific knowledge of certain infrastructures or platforms and in most cases did not have Qt/C++ APIs. Using the experience we have from building backend solutions for various kinds of applications, we decided to create a solution that linked applications with a backend cloud storage based on Qt’s intuitive APIs. With Enginio developers can concentrate on creating their application making it visually pleasing and performing and let Enginio manage the backend functionality, scalability, security and performance.</p>
<p>Our goal was to build upon Qt’s motto of making “developer’s lives easier” and so what we wanted to do was provide developers with an uncomplicated and stress-free development experience in the backend. So, we started to create a solution that was easy to use and value-adding for Qt application development and at the same time transmit that Qt effortless development trait to other platforms. We want to make sure that the value-adding benefits of having a Qt backends are available to all. Enginio will be commercially available for both open-source and enterprise Qt users. For enterprise Qt users developing with a commercial license, a few additional value-adding features and functions will be made available to them later on.</p>
<p>The Enginio Technology Previews supports:</p>
<ul>
<li><span style="font-size: 13px">Web dashboard (UI for configuring &amp; managing your backend)</span></li>
<li><span style="font-size: 13px">Schema-less data storage (Place to store your application data)</span></li>
<li><span style="font-size: 13px">Security model (Mechanism to control which end-users can access what data)</span></li>
<li><span style="font-size: 13px">File support (Save small or large files in the cloud)</span></li>
<li><span style="font-size: 13px">Full text search (Search stored data by its content)</span></li>
<li><span style="font-size: 13px">Qt/QML client library (Convenient way to create applications)</span></li>
</ul>
<h4>How to get started?</h4>
<p><span style="font-size: 13px">1. Sign up for an <a title="Enginio" href="http://engin.io">Enginio</a> account</span></p>
<p style="text-align: center"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_signup1.png"><img class="aligncenter  wp-image-35596" style="border: 1px solid black" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_signup1-300x198.png" alt="" width="300" height="198" /></a></p>
<p>2. Setup your new backend</p>
<p style="text-align: center"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_setup.png"><img class="aligncenter  wp-image-35597" style="border: 1px solid black" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_setup-300x198.png" alt="" width="300" height="198" /></a></p>
<p>3. Develop your App</p>
<p>The latest release version of the Qt library is available from the Enginio dashboard.</p>
<p style="text-align: center"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_dashboard.png"><img class="aligncenter size-medium wp-image-35603" style="border: 1px solid black" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/enginio_dashboard-300x244.png" alt="" width="300" height="244" /></a></p>
<p>Shared library and QML extension plugin are built and installed as usual with `qmake &amp;&amp; make &amp;&amp; make install`</p>
<h5>Qt example:</h5>
<p>I. In Qt Creator choose File &gt; New File or Project&#8230; and create new &#8220;Qt Gui Application&#8221;.<br />
II. In the new project’s pro file add:</p>
<pre class="brush:cpp">QT += network
win32:CONFIG(debug, debug|release): LIBS += -lenginioclientd
else: LIBS += -lenginioclient</pre>
<p>III. In MainWindow.cpp:</p>
<pre class="brush:cpp">// Include Enginio headers
#include &lt;Enginio/Enginio&gt;

// Instantiate Enginio Client
// Copy your backend ID and secret from Enginio dashboard
const QString backendId("YOUR_OWN_BACKEND_ID");
const QString backendSecret("YOUR_OWN_BACKEND_SECRET");
EnginioClient *client = new EnginioClient(backendId, backendSecret);

// Create new object to backend
EnginioJsonObject banana("objects.fruits");
banana.insert("name", QStringLiteral("Banana"));
banana.insert("price", 1.59);
EnginioObjectOperation *createOp = new EnginioObjectOperation(client);
createOp-&gt;create(banana);
createOp-&gt;execute(); // Initiates asynchronous operation

// Fetch objects from backend to list model
EnginioObjectModel *objectModel = new EnginioObjectModel();
EnginioQueryOperation *queryOp = new EnginioQueryOperation(client);
queryOp-&gt;setObjectType("objects.fruits");
queryOp-&gt;setModel(objectModel);
queryOp-&gt;execute();</pre>
<p>&nbsp;</p>
<h5>QML example:</h5>
<p>I. In Qt Creator choose File &gt; New File or Project&#8230; and create new &#8220;Qt Quick 2 Application (Built-in Elements)&#8221;<br />
II. In main.qml:</p>
<pre class="brush:js">import io.engin 1.0 as Enginio

// Instantiate Enginio Client
// Copy your backend ID and secret from Enginio dashboard
Enginio.Client {
	id: client
	backendId: "YOUR_OWN_BACKEND_ID"
	backendSecret: "YOUR_OWN_BACKEND_SECRET"
}

Enginio.ObjectModel {
	id: objectModel
}

Enginio.QueryOperation {
	id: queryOp
	client: client
	model: objectModel // Query results are added to model
	objectTypes: ["objects.fruits"] // Get all fruit objects
}

Component.onCompleted: {
	// Create new object to backend
	var banana = {
		objectType: "objects.fruits",
		name: "Banana",
		price: 1.59
	};
	var createOp = client.createObjectOperation();
	createOp.create(banana);
	createOp.execute();
	createOp.finished.connect(function() {
		// Fetch objects from backend to list model
		queryOp.execute();
	});
}</pre>
<p>Build and your connected application is ready.</p>
<p>We would like to invite more people to test and provide feedback. However, please bear in mind that the service is still under development and you may experience some bugs, changes and breaks. Go and check it out at <a href="http://engin.io/">http://engin.io</a>. Let us know what you think!</p>
<p>You can reach the Enginio development team at <a href="mailto:mailus@engin.io">mailus@engin.io</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/25/enginio-qt-backend-as-a-service-launches-tech-preview/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Retina display support for Mac OS, iOS and X11</title>
		<link>http://blog.qt.digia.com/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=retina-display-support-for-mac-os-ios-and-x11</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 07:03:54 +0000</pubDate>
		<dc:creator>Morten Johan Sørvig</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[QPA]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35408</guid>
		<description><![CDATA[<br/>Qt 5.0 added basic support for retina reasonable resolution displays. The upcoming Qt 5.1 will improve the support with new API and bug fixes. Qt 4.8 has good support, and backports of some of the Qt 5 patches are available. While this implementation effort is mostly relevant to Mac and iOS developers, it is interesting [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Qt 5.0 added basic support for <del datetime="2013-04-23T12:21:09+00:00">retina</del> reasonable resolution displays. The upcoming Qt 5.1 will improve the support with new API and bug fixes. Qt 4.8 has good support, and <a href="https://codereview.qt-project.org/#change,54636" target="_blank">backports</a> of some of the Qt 5 patches are available.</p>
<p>While this implementation effort is mostly relevant to Mac and iOS developers, it is interesting to look at how other platforms handle high-dpi displays. There are two main approaches:</p>
<ul>
<li><strong>DPI-based scaling</strong> &#8211; <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd464660(v=vs.85).aspx" target="_blank">Win32 GDI</a> and <a href="https://community.kde.org/KDE/High-dpi_issues" target="_blank">KDE</a>. In approach the application works in the full physical device resolution and is provided with a DPI setting or scaling factor, which should be used to scale layouts. Fonts are automatically scaled by the OS (as long as you specify the font sizes in points and not pixels)</li>
<li><strong>Pixels By Other Names</strong>. In this approach the physical resolution is (to various degrees) hidden to the application. Physical pixels are replaced with logical pixels:<br />
<table class="aligncenter">
<tbody>
<tr>
<th>Platform/API</th>
<th>Logical</th>
<th>Physical</th>
</tr>
<tr>
<td><a href="https://developer.mozilla.org/en-US/docs/CSS/length" target="_blank">HTML</a></td>
<td>CSS pixel</td>
<td>Device pixel</td>
</tr>
<tr>
<td><a href="https://developer.apple.com/resources/high-resolution/" target="_blank">Apple</a></td>
<td>Point</td>
<td>Pixel</td>
</tr>
<tr>
<td><a href="http://developer.android.com/guide/practices/screens_support.html" target="_blank">Android</a></td>
<td>Density-independent pixel (dp)</td>
<td>(Screen) Pixel</td>
</tr>
<tr>
<td><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd756649(v=vs.85).aspx" target="_blank">Direct2D</a></td>
<td>Device Independent Pixel (DIP)</td>
<td>Physical Pixel</td>
</tr>
<tr>
<td>Qt (past)</td>
<td>Pixel</td>
<td>Pixel</td>
</tr>
<tr>
<td>Qt (now)</td>
<td>Device-Independent Pixel</td>
<td>Device Pixel</td>
</tr>
</tbody>
</table>
</li>
</ul>
<p>Qt has historically worked in device pixels with DPI scaling. Back in 2009 support for high DPI values on Windows was <a href="https://blog.qt.digia.com/blog/2009/06/26/improving-support-for-higher-dpi-on-vista/" target="_blank">improved</a>. The Qt layouts do however not account for increased DPI. Qt 5 now adds support of the &#8220;new pixels&#8221; type of scaling.</p>
<p>(Are there other high-dpi implementations out there? Use the comments section for corrections etc.)</p>
<p><strong>Mac OS X High-dpi Support</strong></p>
<p>The key to the OS X high-dpi mode is that most geometry that was previously specified in device pixels are now in device-independent points. This includes desktop geometry (which on the 15 inch retina MacBook Pro is 1440&#215;900 and not the full 2880&#215;1800), window geometry and event coordinates. The CoreGraphics paint engine is aware of the full resolution and will produce output at that resolution. For example, a 100&#215;100 window occupies the same area on screen on a normal and high-dpi screen (everything else being equal). On the high-dpi screen the window’s backing store contains 200&#215;200 pixels.</p>
<p>The main benefits of this mode is backwards compatibility and free high-dpi vector graphics. Unaware applications simply continue to work with the same geometry as before and can keep hardcoded pixel values. At the same time they get crisp vector graphics such as text for free. Raster graphics does not get an automatic improvement but is manageable. The downside is the inevitable coordinate system confusion when working with code that mixes points and pixels.</p>
<p>The scale factor between points and pixels is always 2x. This is also true when changing the screen resolution &#8211; points and pixels are scaled by the same amount. When scaling for &#8220;More Space&#8221; applications will render to a large backing store which is then scaled down to the physical screen resolution.</p>
<div></div>
<div id="attachment_35463" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/qtRetinaMacDisplaySettings.png"><img class="size-medium wp-image-35463" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/qtRetinaMacDisplaySettings-300x229.png" alt="" width="300" height="229" /></a><p class="wp-caption-text">Scaling the user interface resolution on Mac OS</p></div>
<p>If you don’t have access to retina hardware there is also an emulation mode which can be useful when used on an extra monitor. Open Display Properties and select one of the HiDPI modes. (See <a href="http://stackoverflow.com/questions/12124576/how-to-simulate-a-retina-display-hidpi-mode-in-mac-os-x-10-8-mountain-lion-on" target="_blank">this question</a> on stack overflow if there are none.)</p>
<p><strong>Enabling high-dpi for OS X Applications</strong></p>
<p>High DPI mode is controlled by the following keys in the Info.Plist file:<br />
<code><br />
&lt;key&gt;NSPrincipalClass&lt;/key&gt;<br />
&lt;string&gt;NSApplication&lt;/string&gt;<br />
&lt;key&gt;NSHighResolutionCapable&lt;/key&gt;<br />
&lt;string&gt;True&lt;/string&gt;<br />
</code><br />
Qmake will add these for you. (Strictly speaking it will only add NSPrincipalClass, NSHighResolutionCapable is optional and true by default).</p>
<p>If NSHighResolutionCapable is set to false, or the keys are missing, then the application will be rendered at the &#8220;normal&#8221; resolution and scaled up. This looks horrible and should be avoided, especially since the high-dpi mode is very backwards compatible and the application gets a lot of high-dpi support for free.</p>
<div id="attachment_35472" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorMacSD.png"><img class="size-medium wp-image-35472" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorMacSD-300x179.png" alt="" width="300" height="179" /></a><p class="wp-caption-text">Scaled Qt Creator</p></div>
<div id="attachment_35473" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorMacHD.png"><img class="size-medium wp-image-35473" src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorMacHD-300x179.png" alt="" width="300" height="179" /></a><p class="wp-caption-text">High DPI Qt Creator</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
(Appart from a <a href="https://qt.gitorious.org/qt-creator/qt-creator/commit/3779147ffc1b5876565dfb85c0219e65111ee0c9?format=html" target="_blank">patch</a> to update the &#8220;mode&#8221; icons, this an unmodified version of Qt Creator.)</p>
<p><strong>Qt implementation details</strong></p>
<p>Mac OS 10.8 (unofficially 10.7?) added support for high-dpi retina displays. Qt 4 gets this support for free, since it uses the CoreGraphics paint engine.</p>
<p>Qt 5 uses the raster paint engine and Qt <a href="https://github.com/msorvig/qt5-qtbase-highdpi/commit/5e61bbe586519c3d9bc636153d32e810da4e59a3">implements</a> high-dpi vector graphics by scaling the painter transform. HITheme provides high-dpi Mac style for both Qt 4 and 5. In Qt 5 the fusion style has been tweaked to run well in high-dpi mode.</p>
<p>OpenGL is a device pixel based API and remains so in high-dpi mode. There is a flag on NSView to enable/disable the 2x scaling &#8211; Qt sets it in all cases. Shaders run in device pixels.</p>
<p>Qt Quick 1 is built on QGraphicsView which is a QWidget and gets high-dpi support through QPainter.</p>
<p>Qt Quick 2 is built on Scene Graph (and OpenGL) which has been updated with <a href="http://qt.gitorious.org/qt/qtdeclarative/commit/9c9ad9b86f5ae30df1021300d1b775f6d341a78f/diffs" target="_blank">high-dpi support</a>. The Qt Quick Controls (née Desktop Components) has also been <a href="https://qt.gitorious.org/qt/qtquickcontrols/commit/fe69e131f26db122237f7831dcc7139faef6ba52/diffs" target="_blank">updated</a> to render in high-dpi mode, including using <a href="http://qt.gitorious.org/qt/qtdeclarative/commit/5eae605a475db96ed16d81101e00e736efe9f202/diffs" target="_blank">distance field</a> <a href="http://qt.gitorious.org/qt/qtdeclarative/commit/aa2475b25d08d1c4575b879aa1d51ee91ed8b5c4/diffs" target="_blank">text rendering</a>.</p>
<p>The take-away point here is that for app developers <em>this doesn’t matter</em>, you can do most of your work in the comfort of the device-independent pixel space while Qt and/or the OS does the heavy lifting. There is one exception which is raster content &#8211; high-dpi raster content needs to be provided and correctly handled by application code.</p>
<p><strong>Widgets and QPainter</strong></p>
<p>QPainter code can mostly be kept as is. As an example lets look at drawing a gradient:<br />
<code><br />
QRect destinationRect = ...<br />
QGradient gradient = ...<br />
painter.fillRect(rect, QBrush(gradient));<br />
</code><br />
On high-dpi displays the gradient will have the same size on screen but will be filled with more (device) pixels.</p>
<p>Drawing a pixmap is similar:<br />
<code><br />
QRect destinationRect = ...<br />
QPixmap pixmap = ...<br />
painter.drawPixmap(destinationRect, pixmap);<br />
</code></p>
<p>To avoid scaling artifacts on high-dpi displays the pixmap must contain enough pixels: 2x the width and height of destinationRect. The application can either provide one directly or use QIcon to manage the different resolutions:<br />
<code><br />
QRect destinationRect = ...<br />
QIcon icon = ...<br />
painter.drawPixmap(destinationRect, icon.pixmap(destinationRect.size()));<br />
</code></p>
<p><code>QIcon::pixmap()</code> has been modified to return a larger pixmap on high-dpi systems. This is a behavior change and can break existing code, so it&#8217;s controlled by the AA_UseHighDpiPixmaps application attribute:<br />
<code><br />
qApp-&gt;setAttribute(Qt::AA_UseHighDpiPixmaps);<br />
</code></p>
<p>The attribute is off by default in Qt 5.1 but will most likely be on by default in a future release of Qt.</p>
<p><strong>Edge cases and devicePixelRatio</strong></p>
<p>Qt Widgets has some edge cases. Ideally it would pass QIcons around and the correct pixmap would be select at draw time, but in reality Qt API often produces and consumes pixmaps instead. This can cause errors when the pixmap size is used for calculating layout geometry &#8211; the pixmap should not use more space on screen if it&#8217;s high-resolution.</p>
<p>To indicate that a 200&#215;200 pixmap should occupy 100&#215;100 device-independent pixels use <code>QPixmap::devicePixelRatio()</code>. Pixmaps returned from <code>QIcon::pixmap()</code> will have a suitable devicePixelRatio set.</p>
<p>QLabel is one &#8220;pixmap consumer&#8221; example:<br />
<code><br />
QPixmap pixmap2x = ...<br />
pixmap2x.setDevicePixelRatio(2.0);<br />
QLabel *label = ...<br />
label-&gt;setPixmap(pixmap2x);<br />
</code></p>
<p>QLabel then divides by devicePixelRatio to get the layout size:<br />
<code><br />
QSize layoutSize = pixmap.size() / pixmap.devicePixelRatio();<br />
</code></p>
<p>Several issues like this has been fixed in Qt, and application code can have similar code that needs to be corrected before enabling AA_UseHighDpixmaps.</p>
<p>The devicePixelRatio() accessor is available on several Qt classes:</p>
<table>
<tbody>
<tr>
<th>Class</th>
<th>Note</th>
</tr>
<tr>
<td>QWindow::devicePixelRatio()</td>
<td>Preferred accessor</td>
</tr>
<tr>
<td>QScreen::devicePixelRatio()</td>
<td></td>
</tr>
<tr>
<td>QGuiApplication::devicePixelRatio()</td>
<td>Fallback if there is no QWindow pointer</td>
</tr>
<tr>
<td>QImage::[set]devicePixelRatio()</td>
<td></td>
</tr>
<tr>
<td>QPixmap::[set]devicePixelRatio()</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Text</strong></p>
<p>Font sizes can be kept as-is, and produce similarly-sized (but crisp) text on high-dpi displays. Font pixel sizes are <em>device-independent</em> pixel sizes. You never get tiny text on high-dpi displays.</p>
<p><strong>QGlWidget</strong></p>
<p>OpenGL operates in device pixel space. For example, the width and height passed to glViewport should be in device pixels. QGLWidget::resizeGL() gives the width and height in device pixels.</p>
<p>However, QGLWidget::width() is really QWidget::width() which returns a value in device-independent pixels. Resolve it by multiplying with widget-&gt;windowHandle()-&gt;devicePixelRatio() if needed.</p>
<p><strong>Qt Quick 2 and controls</strong></p>
<p>Qt Quick 2 and the Qt Quick Controls work well out-of-the box. As with widgets coordinates are in device-independent pixels. Qt Quick has fewer raster-related edge cases, since the QML Image element specifies the image source as a url which avoids passing around pixmaps.</p>
<div id="attachment_35489" class="wp-caption aligncenter" style="width: 569px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaControls.png"><img class=" wp-image-35489  " src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaControls-1024x792.png" alt="" width="559" height="432" /></a><p class="wp-caption-text">Qt Quick Controls</p></div>
<p>One exception is OpenGL shaders that run in device pixel space and see the full resolution. This is usually not a problem, the main thing to be aware of is that mouse coordinates are in device-independent pixels and may need to be converted to device pixels.</p>
<div id="attachment_35522" class="wp-caption aligncenter" style="width: 293px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaShaderEffects.png"><img class=" wp-image-35522 " src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaShaderEffects-721x1024.png" alt="" width="283" height="402" /></a><p class="wp-caption-text">shadereffects example in action</p></div>
<p><strong>Managing high-resolution raster content</strong></p>
<p>As we have seen, raster content won’t look nice when scaled and high-resolution content should be provided. As an app developer you have two options: (ignoring the &#8220;do-nothing&#8221; option)</p>
<ul>
<li>Replace existing raster content with a high-resolution version</li>
<li>Provide separate high-resolution content</li>
</ul>
<p>The first option is convenient since there is only one version of each resource. However, you may find (or your designer will tell you) that resources like icons look best when created for a specific resolution. To facilitate this, Qt as adopted the “@2x” convention for image filenames:<br />
<code><br />
foo.png<br />
foo@2x.png<br />
</code></p>
<p>High-resolution content can be provided side-by-side with the originals. The &#8220;@2x&#8221; version will be loaded automatically when needed by the QML Image element and QIcon:</p>
<p><code>Image { source = “foo.png” }</code><br />
<code>QIcon icon(“foo.png”) </code></p>
<p>(remember to set AA_UseHighDpiPixmaps for QIcon)</p>
<p><strong>Experimental cross-platform high-dpi support:</strong></p>
<p>QPA allows us to relatively easily make a cross-platform implementation. The Qt stack can be divided into three layers:</p>
<ol>
<li>The Application layer (App code and Qt code that uses the QPA classes)</li>
<li>The QPA layer (QWindow, QScreen, QBackingStore)</li>
<li>The platform plugin layer (QPlatform* subclasses)</li>
</ol>
<p>Simplified, the application layer operates in the device-independent pixel space and does not know about device pixels. The platform plugins operates in device pixel space and does not know about device-independent pixels. The QPA layer sits in between and translates, based on a scale factor set by the QT_HIGHDPI_SCALE_FACTOR environment variable.</p>
<p>In reality the picture is a little bit more complicated, with some leakage between the layers and the special Mac and iOS exception that there is additional scaling on the platform.</p>
<p>Code is on <a href="https://github.com/msorvig/qt5-qtbase-highdpi">github</a>. Finally, screenshots of Qt Creator on XCB:</p>
<div id="attachment_35536" class="wp-caption alignleft" style="width: 341px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorXcb1.png"><img class=" wp-image-35536  " src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorXcb1-1024x627.png" alt="" width="331" height="203" /></a><p class="wp-caption-text">DPI scaled Qt Creator</p></div>
<div id="attachment_35535" class="wp-caption alignleft" style="width: 347px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorXcb2.png"><img class="wp-image-35535    " src="http://blog.qt.digia.com/wp-content/uploads/2013/04/QtRetinaCreatorXcb2-1024x627.png" alt="" width="337" height="207" /></a><p class="wp-caption-text">QT_HIGDPI_SCALE_FACTOR=2 Scaled Qt Creator</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Keeping Qt in the Lead – And Adding Value</title>
		<link>http://blog.qt.digia.com/blog/2013/04/23/keeping-qt-in-the-lead-and-adding-value/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keeping-qt-in-the-lead-and-adding-value</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/23/keeping-qt-in-the-lead-and-adding-value/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 09:55:58 +0000</pubDate>
		<dc:creator>Tommi Laitinen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35499</guid>
		<description><![CDATA[<br/>Six months ago we laid out Digia’s Qt strategy at Qt Developer Days 2012 and since then we have been working together with the community to achieve our goals of increasing the use of Qt and expanding business opportunities for all members of the Qt ecosystem and Digia. I wanted to explain a bit more [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Six months ago we laid out Digia’s Qt <a title="Qt – Gearing up for the Future" href="http://blog.qt.digia.com/blog/2012/11/20/qt-gearing-up-for-the-future/">strategy </a>at Qt Developer Days 2012 and since then we have been working together with the community to achieve our goals of increasing the use of Qt and expanding business opportunities for all members of the Qt ecosystem and Digia.</p>
<p>I wanted to explain a bit more in detail via this blog post how Digia plans to keep Qt in the lead position, thriving and continuously evolving as well as give a state of the union as we mark our 6-month milestone.</p>
<h3>2017 Goals</h3>
<p>First, let’s quickly re-cap what we have set as our goals for the next few years.</p>
<ul>
<li>#1 in multi-platform support</li>
<li>#1 in developer experience</li>
<li>#1 in creating great user experiences</li>
<li>Strong value-generating ecosystem</li>
<li>Dual licensing model</li>
<li>Open business architecture</li>
</ul>
<p>We have made great progress in many of these already in the past few months, so I think we are definitely in the right track to reach these together.</p>
<h3>#1 in Multi-Platform Support</h3>
<p>Qt is by nature a cross-platform development framework, which has supported a large number of desktop, embedded and mobile platforms. In the past few months, we have been actively working on introducing support for Android and iOS as well as improving the experience on the desktop and embedded platforms. With the soon–to-be released Qt 5.1 we will already be able to provide solid technology previews for both Android and iOS, which we expect to be complete for Qt 5.2 coming out before the end of this year. We are also working with the <a title="Qt’s WinRT port and its C++/CX usage" href="http://blog.qt.digia.com/blog/2013/04/19/qts-winrt-port-and-its-ccx-usage/">WinRT port of Qt</a> to be available soon after Android and iOS. With the introduction of support in Qt 5.1 for the leading mobile platforms, Qt jumps to the next phase of being a platform agnostic world-class and all-around cross-platform software development framework.</p>
<h3>#1 in Developer Experience</h3>
<p>We have started a few projects to make developers’ encounters with Qt easy and effortless. In Qt 5.0 we tightly coupled Qt Creator and other tools into the same Qt package together with the libraries making it possible to get everything they need to start developing with Qt all in one place. It is still possible to develop for Qt with other IDEs than Qt Creator – for example with Visual Studio or XCode. We have also been working with the online installers for Qt 5, which will be available soon and further improve the experience of developing with Qt. We are also investing heavily into tooling. Focusing on, for example, the new Qt Quick Designer, which was first released with Qt Creator 2.7, and the new Qt Quick Controls of which the first set will come in Qt 5.1.</p>
<h3>#1 in Creating a Great User Experience</h3>
<p>Qt is known for its ability to create amazing user experiences.  We are working hard to continue Qt’s position as the leading software development framework that enables the creation of stunning UIs with an unbeatable graphics performance. The new graphics pipeline of Qt 5 is one of the cornerstones to reach this goal.  Qt Quick 2 offers a GL-based scene graph, a particle system and a collection of shader effects for fun and cool animations, amongst other things, as well as Qt Multimedia and Qt Graphical Effects that lets the developer bring motion and sound to life within their application.  We will continue to improve these capabilities and make it even easier to build stunning applications with Qt.</p>
<h3>Strong Value Generating Ecosystem</h3>
<p>In addition to actively working with the developer community through the Qt Project, we are making good progress with our Digia Qt Partner Program with the first partners already signed on and many more to be enrolled soon. We are actively working with members of the Qt community to make sure that valuable Qt events and activities are possible.</p>
<p>This year, the <a title="Qt Contributors’ Summit Joins Forces with KDE Akademy – July 2013" href="http://blog.qt.digia.com/blog/2013/02/14/qt-cs-with-kde-akademy/">Qt Contributors Summit </a>and KDE Akademy will be held jointly where two strong communities can leverage from each other’s expertise. Digia is a platinum sponsor at this year’s combined Qt Contributor Summit and KDE Akademy. Following last year’s successful Qt Developer Days in Berlin and California, Digia will again join forces with KDAB and ICS to put <a title="Save the Dates | Qt Developer Days 2013" href="http://blog.qt.digia.com/blog/2013/04/05/save-the-dates-qt-developer-days-2013/">Qt Developer Days 2013</a>. Lastly, this June, Digia together with top sponsors and active Qt community participants BlackBerry and Jolla, will host the Qt Developer Day China in Beijing (June 6) to cater to our growing Qt ecosystem in China.  We believe that by working together in the ecosystem we can jointly take Qt forward at an unbeatable speed and benefit from the growing user base of developers making Qt-based solutions in over 70 different industries including free software.</p>
<h3>Dual Licensing Model</h3>
<p>We believe that the dual licensing model is crucially important for the whole Qt ecosystem to thrive, and that it is the best way to further develop Qt. The full development of Qt and making it the leading cross-platform application development framework is at the cornerstone of Digia’s strategy. This means that we want all developers, organizations, companies around the world regardless of industry, business model, device types etc., to use Qt to further their own development goals and business strategies.</p>
<p>In order to keep Qt in the lead allowing innovation into our development, it is important that Qt is available for commercial users and the open source community and provide the functionality that meet the varying needs of both. We believe in the power of open-source development in fostering innovation and value very much all the things we do together with the Qt community via the Qt Project. The dual licensing model serves two purposes in driving Qt forward:</p>
<p>&nbsp;</p>
<ul>
<li>Commercial licensing secures future investments into Qt R&amp;D with the financial stability needed to keep the Digia Qt engineering teams producing invaluable code development and contributions. Revenue generated from the commercial license sales also enables the Qt Project to charge forward securing, for example, the infrastructure, repositories and qt-project.org servers and development to be a community arena for Qt development where all can participate and contribute.</li>
<li>Qt open-source development provides an incomparable vehicle to make Qt available everywhere for everybody increasing the Qt user base and promoting adoption of the technology.</li>
</ul>
<p>Both of the above models work hand-in-hand; without one our goals of bringing Qt to all and making it the world’s leading cross-platform development framework are not fully possible. Our new mobile ports of Qt for Android, and iOS as well as the upcoming WinRT port are fully developed in the open, a very strong proof point that we really do believe in dual licensing also in the future.</p>
<h3>Open Business Architecture</h3>
<p>Tightly related with the strong value generating ecosystem is open business architecture – a new element in the Qt ecosystem. We believe that enabling more business opportunities for everybody via Qt will be beneficial for the entire ecosystem.  Open business architecture is a principle that defines the rules for an equal playing ground where everybody is invited to participate. At this point, we see this as a principle, but later on we hopefully are able to develop the whole business architecture forward in such way – and enable more business for everybody.</p>
<p>With an open and thriving Qt ecosystem, we believe that Digia and other players in the community can provide value-adding products for functionality, tools and services. We believe that having such additional components available not only provides more business opportunities for all interested companies, but also makes Qt stronger. The more there are ready-made solutions available to meet the needs and challenges in various industries and use cases, the more value Qt offers our users.</p>
<h4>Adding Value</h4>
<p>Digia is seeking to create added value in mainly the following areas:</p>
<p>•    Value-adding functionality especially for enterprise users and in the embedded space<br />
•    Improved tools providing a shortened time-to-market and cost savings for companies using Qt<br />
•    Cloud-based services than can be used in conjunction with solutions built with Qt<br />
•    Support and services for development with Qt</p>
<p>Some examples of these are already available; for example, the Charts library and the improved Visual Studio Add-In, as well as our support and services offering. We are working on a new cloud-based backend for Qt applications called Enginio, which was first presented at the Qt Developer Days last year. We are very close to launching the public technology preview, so stay tuned for it.</p>
<p>Especially for our enterprise and embedded customers, we have been working with additional tools that can be plugged into the Qt Creator IDE to make developing with Qt even more efficient, as well as to meet the growing demands of our customers and companies who have chosen Qt as their strategic development choice and who require a full commitment from Digia to succeed in their industry.   We believe that it is possible to provide these refinements of Qt for many different industries, and are aiming to develop Qt and our tooling offering further to allow also other members of the Qt community to offer these as part of the open business architecture.</p>
<p>All in all, I am very happy with the progress we have made towards the goals we set for Qt last year. I am extremely pleased that we have been able to work towards these with so many great partners, customers and community members that form the Qt ecosystem. I believe that by continuing this together we will be able to take Qt forth at record pace and truly make it the number #1 choice for cross-platform application and UI development.</p>
<p>We would love to hear from you, so please drop us a note in the comments below. Happy Qt development!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/23/keeping-qt-in-the-lead-and-adding-value/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Qt&#8217;s WinRT port and its C++/CX usage</title>
		<link>http://blog.qt.digia.com/blog/2013/04/19/qts-winrt-port-and-its-ccx-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qts-winrt-port-and-its-ccx-usage</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/19/qts-winrt-port-and-its-ccx-usage/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 07:00:09 +0000</pubDate>
		<dc:creator>Oliver Wolff</dc:creator>
				<category><![CDATA[Background]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35297</guid>
		<description><![CDATA[<br/>Background After Friedemann has given an initial introduction about Qt&#8217;s Windows Runtime port, I would like to give some further insight about technical aspects and our ways of working on the port. When reading about Windows Runtime development (Windows 8 store applications and Windows runtime components) in connection with C++ you will find C++/CX again [...]]]></description>
			<content:encoded><![CDATA[<br/><h2>Background</h2>
<p>After Friedemann has given an <a title="Port to Windows Runtime kick-started" href="http://blog.qt.digia.com/blog/2013/02/15/port-to-windows-runtime-kick-started/">initial introduction about Qt&#8217;s Windows Runtime port</a>, I would like to give some further insight about technical aspects and our ways of working on the port.</p>
<p>When reading about Windows Runtime development (Windows 8 store applications and Windows runtime components) in connection with C++ you will find <strong>C++/CX</strong> again and again. Windows C++/CX are C++ language extensions which were developed by Microsoft to make software development for Windows Runtime easier by bringing it &#8220;as close as possible to modern C++&#8221; (<a title="Visual C++ Language Reference (C++/CX)" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh699871.aspx" target="_blank">Visual C++ Language Reference (C++/CX)</a>). In some cases, these extensions look similar to C++/CLI constructs, but they might have other meanings or slightly different grammar.</p>
<p>The first thing that catches someone&#8217;s eye when one has a look at C++/CX documentation or an example/application are lines like<br />
<code>Foo ^foo = ref new Foo();</code><br />
The ^ is basically a pointer, but gives the additional information that it is used on a ref-counted COM object so that memory management happens &#8220;automagically&#8221;. The &#8220;ref new&#8221; keyword means that the user wants to create a new &#8220;Ref class&#8221; (see Ref classes and structs in <a title="Type System (C++/CX)" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh755822" target="_blank">Type System (C++/CX)</a>), which means that it is copied by reference and memory management happens by reference count.  So there isn&#8217;t much magic involved in that line; it only tells the compiler that the object&#8217;s memory can be managed by reference count and the user does not have to delete it himself.</p>
<p>Basically C++/CX is just what its name tells us it is &#8211; extensions to the C++ language. Everything ends up as native unmanaged code quite similar to the way Qt works. Some people might argue whether it is necessary to reinvent the wheel for the n-th time where a lot of the &#8220;problems&#8221; are actually solved in C++11 (by the way, <code>auto foo</code> also works in the example above), but that is what was decided for Windows Runtime development.</p>
<h2>Use of C++/CX inside Qt&#8217;s WinRT port</h2>
<p>Microsoft has said on different occasions (among others during the Build conference 2012) that everything that can be done using C++/CX can also be done without the extensions, as everything ends up as native code in either case. So we had to decide whether we want to use the new fancy stuff or take the cumbersome road of manual memory management etc. Theoretically there is nothing that keeps us from using C++/CX in Qt&#8217;s WinRT port, but there are some reasons why we try to avoid them.</p>
<p>For one, these extensions might prevent developers who are willing to help with the Windows Runtime port from having a deeper look at the code. If you do not have any previous experience with this development environment, having new constructs and keywords (in addition to new code) might be enough for you to close the editor right away. While WinRT code which doesn&#8217;t use CX might not be especially beautiful, there are no non-default things which might obscure it even more.</p>
<p>Another issue is that Qt Creator&#8217;s code model cannot handle these extensions (yet). You don&#8217;t get any auto completion for ^-pointers, for example. This can of course be fixed in Qt Creator and time will tell whether it will be, but at the moment the port and basic Qt Creator integration (building, debugging &amp; deployment) are our first priorities.<br />
Due to these facts, we decided that we do not want to use the extensions. Though, if someone wants to help out with the port and is eager to use CX he/she might be able to persuade us to get the code in (after proper review of course <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<h2></h2>
<h2>Problems and challenges of not using C++/CX</h2>
<p>The main problem when it comes to development of Windows Runtime code without using C++/CX is the severe lack of documentation. While the MSDN documentation generally can be improved in certain areas, it almost completely lacks anything about this topic. But thanks to Andrew Knight, who gave me an initial overview how things are to be used and was always helpful whenever I had additional questions, I think I am getting the grip on things. In order to help others who want to join the efforts (and have all the things written down), I will cover some basic areas below.</p>
<h3>Namespaces</h3>
<p>The namespaces given in the documentation are always the same for the CX usage of the classes,  just with &#8220;ABI&#8221; added as the root namespace. So for <a title="StreamSocket documentation" href="http://msdn.microsoft.com/library/windows/apps/BR226882" target="_blank">StreamSocket</a>, Windows::Networking::Sockets becomes ABI::Windows::Networking::Sockets. Additionally, you probably need Microsoft::WRL (and also Microsoft::WRL::Wrappers). WRL stands for &#8220;Windows Runtime C++ Template Library&#8221; and is used for direct COM access in Windows Runtime applications &#8211; but you will also need its functionality when omitting CX (for creating instances for example).</p>
<h3>Creating instances</h3>
<p>When not using CX, most of the classes cannot be accessed directly. Instead, there are interface classes which need to be used. These interfaces are marked by an &#8216;I&#8217; in front of the class name so that <code>StreamSocket</code> becomes <code>IStreamSocket</code>. As these interfaces are abstract classes, they cannot be instantiated directly. First of all, you have to create a string which represents the class&#8217;s classId.<br />
<code>HStringReference classId(RuntimeClass_Windows_Networking_Sockets_StreamSockets);</code></p>
<p>These RuntimeClass_Windows&#8230; constructs are defined in the related header files and expand to strings like &#8220;Windows.Networking.Sockets.StreamSocket&#8221; for example. The way objects can be instantiated depends on whether the class is default constructable or not. If it is, <code>ActivateInstance</code> can be used to obtain an object of the type you are after.<br />
<code><br />
IStreamSocket *streamSocket = 0;<br />
if (FAILED(ActivateInstance(classId.Get(), &amp;streamSocket)) {<br />
// handle error<br />
}<br />
</code></p>
<p>Unfortunately, the ActivateInstance convenience function fails for StreamSocket in that case as it expects a ComPtr as parameter. In order to avoid that failure one has to take the long way using RoActivateInstance<br />
<code><br />
IInspectable *inspectable = 0;<br />
if (FAILED(RoActivateInstance(classId.Get(), &amp;inspectable)) {<br />
// handle error<br />
}<br />
if (FAILED(inspectable-&gt;QueryInterface(IID_PPV_ARGS(&amp;streamSocket)))) {<br />
// handle error<br />
}<br />
</code></p>
<p>If the class is not default constructable, it has to use a factory in order to create instances. These factories can be obtained by calling <code>GetActivationFactory</code> with the appropriate class Id. One example of a class like that would be <code>HostName:</code><br />
<code><br />
IHostNameFactory *hostnameFactory;<br />
HStringReference classId(RuntimeClass_Windows_Networking_HostName);<br />
if (FAILED(GetActivationFactory(classId.Get(), &amp;hostnameFactory))) {<br />
// handle error<br />
}<br />
IHostName *host;<br />
HStringReference hostNameRef(L"http://qt-project.org");<br />
hostnameFactory-&gt;CreateHostName(hostNameRef.Get(), &amp;host);<br />
hostnameFactory-&gt;Release();<br />
</code></p>
<p>People who are used to Windows development probably have already noticed that all this is COM based. That means that all this has been around for ages and is loved everywhere.</p>
<h3>Calling static functions</h3>
<p>For classes which have static functions there is an extra interface for these functions. These interfaces are marked by &#8220;Statics&#8221; at the end of the &#8220;basic&#8221; interface name and can also be obtained by using <code>GetActivationFactory</code>. One example would be <code>IDatagramSocketStatics</code> which contains <code>GetEndpointPairsAsync</code> for example.<br />
<code><br />
IDatagramSocketStatics *datagramSocketStatics;<br />
GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &amp;datagramSocketStatics);</code></p>
<p><code><br />
IAsyncOperation&lt;IVectorView *&gt; *endpointpairoperation;<br />
HSTRING service;<br />
WindowsCreateString(L"0", 1, &amp;service);<br />
datagramSocketStatics-&gt;GetEndpointPairsAsync(host, service, &amp;endpointpairoperation);<br />
datagramSocketStatics-&gt;Release();<br />
host-&gt;Release();<br />
</code></p>
<p>The <code>endpointpairoperation</code> defines the callback(s) for this asynchronous function, but that topic could be covered in another post. The interesting parts here are how the <code>datagramSocketStatics</code> pointer is filled by calling <code>GetActivationFactory</code> and the actual call to the static function by <code>datagramSocketStatics-&gt;GetEndpointPairsAsync(...)</code>.</p>
<h3>ComPtr</h3>
<p>There is a way to use reference counted memory management even without using CX. It can be achieved by using the Microsoft-provided smart pointer ComPtr. So<br />
<code>IStreamSocket *streamSocket</code><br />
would become<br />
<code>ComPtr&lt;IStreamSocket&gt; streamSocket.</code><br />
When using these, we had some memory access errors we could not explain (but did not investigate much further). In addition to that, Qt Creator does not support code completion with &#8220;streamSocket-&gt;&#8221; but one would have to call &#8220;streamSocket.Get()-&gt;&#8221;. Thus we decided not to use ComPtr but keep using &#8220;normal&#8221; pointers. All you have to do is to remember to call &#8220;Release&#8221; as soon as you are done with the pointer.</p>
<p>All in all, we try to avoid these extensions even though it might not make the code beautiful. If you want to contribute though and feel at home using these, feel free to create a patch containing CX code. If you have any further questions or advice, feel free to add them in the comments or join us in #qt-winrt on freenode.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/19/qts-winrt-port-and-its-ccx-usage/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Qt-project.org under Open Governance</title>
		<link>http://blog.qt.digia.com/blog/2013/04/18/qt-web-open-gov/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-web-open-gov</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/18/qt-web-open-gov/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 07:00:39 +0000</pubDate>
		<dc:creator>Knut Yrvin</dc:creator>
				<category><![CDATA[Background]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Contributors]]></category>
		<category><![CDATA[cross-platform]]></category>
		<category><![CDATA[Open Governance]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34830</guid>
		<description><![CDATA[<br/>Right before Qt Developer Days in Berlin, November 2012, we began discussing with the qt-project.org moderators how to bring rest of the Qt Project into Open Governance. This includes the content management system, forums, wikis and so on – everything run as a real community-driven project, as the Qt development itself has been run since [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Right before Qt Developer Days in Berlin, November 2012, we began discussing with the qt-project.org moderators how to bring rest of the Qt Project into Open Governance. This includes the content management system, forums, wikis and so on – everything run as a real community-driven project, as the Qt development itself has been run since October 2011.</p>
<p><img src="http://d.skolelinux.no/~knuty/OpenGov-Structure_04.jpg" alt="Open Governance structure" width="500" /></p>
<p>This figure shows the different roles in the Open Governance structure. A detailed explanation is found on the Web Open Governance page[1].</p>
<p>To make a proper plan, we’ve been running a series of structured IRC meetings, open for all, starting in December last year, continuing through February this year. As the meeting summaries show[2], we started the planning sessions with a discussion on the purpose of the Qt Project Web. Then we continued with discussion and investigation on how maintenance can be done, including co-development of the web content management system. Technical issues, such as improvement with single sign-on and improvements to the wiki-system were discussed. Privacy, internationalization and license issues have also been looked at.</p>
<p>Here are some key topics and actions crystallizing out of these meetings:</p>
<ul>
<li>Single sign-on and a wiki which handles merges (not losing work) Enabling system rights for developing, testing and rolling out new features, including maintenance has to be established.</li>
<li>From a roles perspective: several new roles with extended rights are needed, especially giving more access to different admin rights as group management and access to specific web pages.</li>
<li>From a process perspective: lazy approval, task prioritization and a conflict resolution board, if needed, in case of (hopefully very few) unresolved conflicts.</li>
<li>Also the licensing issue was raised, making the Qt Project Web user agreement clearer, also including licensing to maintain privacy when doing system administration, testing, and development tasks on the site.</li>
</ul>
<h2>Next steps</h2>
<p>We are now working on four parallel activities to make Open Governance happen.</p>
<ul>
<li>For CMS development, we are on our way to implement a three-stage infrastructure with a development server and a staging server before production. Today, this is a two-stage setup. We want three stages, which allows the OS to be more flexible in doing the development.</li>
<li>We are working at implementing a new access-rights model to allow access to different parts of the CMS.</li>
<li>We have identified the need for a “system admin” agreement which is needed before granting extended group admin rights and giving access to fully developed new features, including editing web pages on the site. This agreement is designed to respect privacy laws and simplify the implementation of the planned staged development setup.</li>
<li>It seems like the biggest obstacle in the current system is the wiki lacking support for merges when co-writing. Also the single sign on has been identified as one of the key features requested. Given our limited resources, it might be best if these features were to be actively co-developed with Digia together with the community.</li>
</ul>
<p>There are a couple of other things currently being worked on, such as cleaning up the CSS, simplifying the site navigation, removing old links, and a walk through of the old bugs in the bug-tracker. This work is currently under way.</p>
<p>Since these processes are being run in parallel with the upkeep and maintenance of qt-project.org site from day to day, it’s a little difficult to give an exact time span on when each step will be implemented. We will give progress updates on the Qt Project malinglist[3].</p>
<p>Please have a look at the references below for more information. We welcome your feedback.</p>
<p>1. <a href="http://qt-project.org/wiki/Qt_Project_Web_Open_Governance">http://qt-project.org/wiki/Qt_Project_Web_Open_Governance</a><br />
2. <a href="http://qt-project.org/wiki/Qt_Project_Web_Meeting_Summary">http://qt-project.org/wiki/Qt_Project_Web_Meeting_Summary</a><br />
3. <a href="http://lists.qt-project.org/mailman/listinfo/web">http://lists.qt-project.org/mailman/listinfo/web</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/18/qt-web-open-gov/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using gcc&#8217;s 4.8.0 Address Sanitizer with Qt</title>
		<link>http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-gccs-4-8-0-address-sanitizer-with-qt</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 10:28:20 +0000</pubDate>
		<dc:creator>Kai Koehne</dc:creator>
				<category><![CDATA[Build system]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Compilers]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[asan]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35291</guid>
		<description><![CDATA[<br/>One of the cool new features of gcc 4.8 is the built in &#8220;Address Sanitizer&#8221;: a memory error detector for C/C++ that will tell you instantly when you e.g. access already deleted memory. This is actually a Google project from Clang/LLVM, so for LLVM users this might be old stuff, but it wasn&#8217;t for me [...]]]></description>
			<content:encoded><![CDATA[<br/><p>One of the cool new features of gcc 4.8 is the built in &#8220;Address Sanitizer&#8221;: a memory error detector for C/C++ that will tell you instantly when you e.g. access already deleted memory. This is actually a <a href="http://code.google.com/p/address-sanitizer/wiki/AddressSanitizer">Google project </a>from Clang/LLVM, so for LLVM users this might be old stuff, but it wasn&#8217;t for me <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Since documentation on every day use is still a bit scarce on the web, I&#8217;m dumping the gist of how to put it to good use here, especially in the Qt context &#8230;</p>
<h2>How does it work?</h2>
<p>It basically overwrites <code>malloc</code> and <code>free</code>, and does check the memory before every access (see the <a href="http://code.google.com/p/address-sanitizer/wiki/AddressSanitizerAlgorithm">project wiki</a> for the details). Apparently it does that in a very efficient manner, since the slow down is only about 2x compared to uninstrumented execution! Who knows, maybe we can enable it for the Qt-Project CI system at one point?</p>
<p>Be warned though that it only works so far on Linux and Mac. No luck for MinGW <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h2>How to enable it?</h2>
<p>Since it is part of the compiler suite enabling it is easy: just add <code>-fsanitize=address -fno-omit-frame-pointer</code> to the compiler calls, and <code>-fsanitize=address</code> to the linker calls. Anyhow, to catch issues where the memory is allocated, de-allocated or accessed by Qt you do not only have to instrument your application, but also Qt. There&#8217;s a tentative patch for Qt 5.2 which makes this easy:</p>
<p><a href="https://codereview.qt-project.org/#change,43420">https://codereview.qt-project.org/#change,43420</a></p>
<p>It is scheduled for the dev branch (Qt 5.2) because it&#8217;s a new feature, but you should be fine cherry-picking it to e.g. Qt 5.0. You can then configure Qt with <code>-address-sanitizer</code>, and run <code>qmake CONFIG+=address_sanitizer</code> for your own applications.</p>
<p>If you don&#8217;t want to cherry-pick, you can also pass the additional command line arguments to qmake by explicitly setting <code>QMAKE_CXXFLAGS</code>, <code>QMAKE_CFLAGS</code>, and <code>QMAKE_LFLAGS</code> manually:</p>
<pre>
$ qmake QMAKE_CXXFLAGS+="-fsanitize=address -fno-omit-frame-pointer" \
QMAKE_CFLAGS+="-fsanitize=address -fno-omit-frame-pointer" \
QMAKE_LFLAGS+="-fsanitize=address"
</pre>
<h2>How to use it?</h2>
<p>Just run your application! If you happen to hit a memory issue it will abort, and show you a stack trace with module names and addresses. You will need a separate tool called <a href="https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py"><code>asan_symbolize.py</code></a> to get the symbols, and then maybe <code>c++filt</code> to de-mangle the C++ symbols.</p>
<h2>Demo!</h2>
<pre>
$ mkdir addresssanitizertest
</pre>
<pre>
$ echo "
#include &lt;QDebug&gt;
int main(int, char *[]) {
const char *str = QString("Evil!").toLocal8Bit().constData();
qDebug() &lt;&lt; str;
}
" &gt; addresssanitizertest/main.cpp
</pre>
<pre>
$ cd addresssanitizertest &amp;&amp; qmake -project &amp;&amp; qmake CONFIG+=address_sanitizer
</pre>
<p>&#8230;</p>
<pre>
$ ./addresssanitizertest 2&gt;&amp;1 | asan_symbolize.py | c++filt
=================================================================
==32195== ERROR: AddressSanitizer: heap-use-after-free on address 0x600c0000bcd8 at pc 0x4016ce bp 0x7fff7ccd86c0 sp 0x7fff7ccd86b8
READ of size 1 at 0x600c0000bcd8 thread T0
    #0 0x4016cd in QString::fromUtf8(char const*, int) /home/kkoehne/dev/qt/qt-5.1-gcc-4.8.0-64/qtbase/include/QtCore/../../../../qt-5.1/qtbase/src/corelib/tools/qstring.h:478
    #1 0x401b1e in QDebug::operator&lt;&lt;(char const*) /home/kkoehne/dev/qt/qt-5.1-gcc-4.8.0-64/qtbase/include/QtCore/../../../../qt-5.1/qtbase/src/corelib/io/qdebug.h:117
    #2 0x401282 in main /tmp/addresssanitizertest/main.cpp:6 (discriminator 1)
    #3 0x7fac5c1e3a14 in __libc_start_main ??:?
    #4 0x401118 in _start /home/abuild/rpmbuild/BUILD/glibc-2.17/csu/../sysdeps/x86_64/start.S:123
0x600c0000bcd8 is located 24 bytes inside of 64-byte region [0x600c0000bcc0,0x600c0000bd00)
freed by thread T0 here:
    #0 0x7fac5eab9c5a in __interceptor_free _asan_rtl_
    #1 0x7fac5d353e59 in QArrayData::deallocate(QArrayData*, unsigned long, unsigned long) /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/tools/qarraydata.cpp:125 (discriminator 2)
    #2 0x401c21 in QTypedArrayData::deallocate(QArrayData*) /home/kkoehne/dev/qt/qt-5.1-gcc-4.8.0-64/qtbase/include/QtCore/../../../../qt-5.1/qtbase/src/corelib/tools/qarraydata.h:230
    #3 0x401630 in QByteArray::~QByteArray() /home/kkoehne/dev/qt/qt-5.1-gcc-4.8.0-64/qtbase/include/QtCore/../../../../qt-5.1/qtbase/src/corelib/tools/qbytearray.h:396 (discriminator 1)
    #4 0x401231 in main /tmp/addresssanitizertest/main.cpp:5 (discriminator 1)
    #5 0x7fac5c1e3a14 in __libc_start_main ??:?
previously allocated by thread T0 here:
    #0 0x7fac5eab9e7f in __interceptor_realloc _asan_rtl_
    #1 0x7fac5d35944e in QByteArray::reallocData(unsigned int, QFlags) /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/tools/qbytearray.cpp:1472
    #2 0x7fac5d358d05 in QByteArray::resize(int) /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/tools/qbytearray.cpp:1431
    #3 0x7fac5d77e452 in QUtf8::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/codecs/qutfcodec.cpp:130
    #4 0x7fac5d780e91 in QUtf8Codec::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) const /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/codecs/qutfcodec.cpp:507
    #5 0x7fac5d77a483 in QTextCodec::fromUnicode(QString const&amp;) const /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/codecs/qtextcodec.cpp:807
    #6 0x7fac5d48dd26 in QString::toLocal8Bit() const /home/kkoehne/dev/qt/qt-5.1/qtbase/src/corelib/tools/qstring.cpp:4020
    #7 0x401215 in main /tmp/addresssanitizertest/main.cpp:5
    #8 0x7fac5c1e3a14 in __libc_start_main ??:?
Shadow bytes around the buggy address:
  0x0c01ffff9740: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c01ffff9750: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c01ffff9760: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c01ffff9770: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c01ffff9780: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=&gt;0x0c01ffff9790: fa fa fa fa fa fa fa fa fd fd fd[fd]fd fd fd fd
  0x0c01ffff97a0: fa fa fa fa fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c01ffff97b0: 00 00 00 00 00 00 00 fa fa fa fa fa 00 00 00 00
  0x0c01ffff97c0: 00 00 00 fa fa fa fa fa 00 00 00 00 00 00 00 fa
  0x0c01ffff97d0: fa fa fa fa fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c01ffff97e0: 00 00 00 00 00 00 01 fa fa fa fa fa 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:     fa
  Heap righ redzone:     fb
  Freed Heap region:     fd
  Stack left redzone:    f1
  Stack mid redzone:     f2
  Stack right redzone:   f3
  Stack partial redzone: f4
  Stack after return:    f5
  Stack use after scope: f8
  Global redzone:        f9
  Global init order:     f6
  Poisoned by user:      f7
  ASan internal:         fe
==32195== ABORTING
</pre>
<p>Have fun hunting down memory issues <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>Update: Apparently a stock gcc 4.8.0 has still issues with address-sanitizer: libasan isn&#8217;t linked automatically, an internal compiler error in qtbase &#8230; I&#8217;m personally using a <a href="http://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_8-branch/">gcc from 4.8 branch</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>qbs reached mile stone 0.3</title>
		<link>http://blog.qt.digia.com/blog/2013/04/16/qbs-reached-mile-stone-0-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qbs-reached-mile-stone-0-3</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/16/qbs-reached-mile-stone-0-3/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 14:47:59 +0000</pubDate>
		<dc:creator>Jörg Bornemann</dc:creator>
				<category><![CDATA[Build system]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35274</guid>
		<description><![CDATA[<br/>Qbs, our alternative build tool, has reached a new mile stone. Since the last one in December, qbs has had the following improvements: The whole codebase has seen a major overhaul. Experiments from the prototype phase have been removed. The API for the Qt Creator plugin has been stabilized. The test suite has been extended [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Qbs, our alternative <a title="qbs wiki page" href="http://qt-project.org/wiki/qbs">build tool</a>, has reached a new mile stone. Since the last one in December, qbs has had the following improvements:</p>
<p>The whole codebase has seen a major overhaul. Experiments from the prototype phase have been removed. The API for the Qt Creator plugin has been stabilized. The test suite has been extended to cover most features. On our internal test farm &#8211; the same that is used for Qt Creator &#8211; qbs is tested on Linux, OS X and Windows every time the testing infrastructure detects a new change in the repository.</p>
<p>Support for installing your built products has been added. To install your project to ~/foo/bar use</p>
<pre>qbs install --install-root ~/foo/bar</pre>
<p>The project loading phase got faster. On my machine, the times to generate the makefiles respectively create the build graph for Qt Creator 2.7 look like this:</p>
<table border="1">
<tbody>
<tr>
<th></th>
<th>Linux</th>
<th>Windows</th>
</tr>
<tr>
<td>qmake -r</td>
<td>26.284 s</td>
<td>99.581 s</td>
</tr>
<tr>
<td>qbs resolve</td>
<td>13.813 s</td>
<td>5.510 s</td>
</tr>
</tbody>
</table>
<p>The running time of incremental null builds, that is determining that nothing of your project has changed, look currently like this for Qt Creator 2.7 (same machine with Windows/Linux dual boot):</p>
<table border="1">
<tbody>
<tr>
<th></th>
<th>Linux</th>
<th>Windows</th>
</tr>
<tr>
<td>(n)make</td>
<td>3.228s</td>
<td>45.199 s</td>
</tr>
<tr>
<td>jom</td>
<td>n/a</td>
<td>25.098 s</td>
</tr>
<tr>
<td>qbs</td>
<td>1.884s</td>
<td>1.630 s</td>
</tr>
</tbody>
</table>
<p>The performance gain stems from the fact that qbs only has to check the timestamps of the project&#8217;s source files. It already knows the timestamps of generated files from the previous build.<br />
On Windows this approach gains us much more than on Linux because retrieving the file timestamps is so unbelievably slow.</p>
<p>Support for detecting changes of project settings has been improved. Changing properties like <em>cpp.defines</em> will now get noticed and result in a rebuild of the affected products.</p>
<p>Last but not least, Qt Creator 2.7 comes with an experimental Qbs project manager plugin. It provides support for loading and building qbs projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/16/qbs-reached-mile-stone-0-3/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Evolution of the QML engine, part 1</title>
		<link>http://blog.qt.digia.com/blog/2013/04/15/evolution-of-the-qml-engine-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=evolution-of-the-qml-engine-part-1</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/15/evolution-of-the-qml-engine-part-1/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 13:41:05 +0000</pubDate>
		<dc:creator>Lars Knoll</dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[Qt Quick]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35255</guid>
		<description><![CDATA[<br/>QML as a technology has become increasingly important for the success of Qt. It allows for the creation of smooth, animated user interfaces, in line with expectations on the market today. There are three main features, that make it so suitable for UI creation. The first one is the declarative syntax, that makes it extremely [...]]]></description>
			<content:encoded><![CDATA[<br/><p>QML as a technology has become increasingly important for the success of Qt. It allows for the creation of smooth, animated user interfaces, in line with expectations on the market today. There are three main features, that make it so suitable for UI creation. The first one is the declarative syntax, that makes it extremely easy to create these user interfaces and have both developers and UI designers work on the same code base. Secondly, the technology makes the integration of native code relatively easy, allowing to do much of the application logic and heavy lifting in C++. And finally, the choice of Javascript as an integral part of the QML language allows for easy prototyping and opens the technology up to a wider audience.</p>
<p>The engine as it is today is a fantastic basis and fills most of our users needs. However, it also has a couple of shortcomings and problems that will need to get solved in the future. This series of blogs is going to outline our findings and present the solutions that we are planning to implement for them. The goal will be to get to a better, more flexible and easier to maintain QML engine in the future.</p>
<p>So let&#8217;s start of with some of the problems we&#8217;re facing with the current engine.</p>
<ul>
<li><B>Several object models</b><br />
The current QML engine uses the V8 Javascript engine to execute property bindings. Each QML item has several representations internally. One towards V8 (using the public V8 API), one towards the QML engine, and one to expose it as a QObject to native Qt. The problem here is that this requires the QML engine to keep these different representations in sync, leading to a lot of glue code and rather high memory consumption to hold the different representations.</p>
<li><B>Bindings done through JS closures</b><br />
Each binding is represented as a JS function closure towards V8. This requires rewriting the expression as a closure, and then letting V8 parse the rewritten expression once again. Evaluating the binding requires calling a JS function in V8 with quite a bit of overhead to instantiate the proper context for executing the binding. This is rather slow and lead to the development of a small expression interpreter (called V4) inside the QML engine that would evaluate simple expressions. This interpreter is many times faster than evaluating through V8.</p>
<li><B>Data type conversions</b><br />
One reason why evaluation of expressions in V8 is slow is the overhead of converting data types from Qt to V8 and vice versa. Accessing a Qt property would for example create a QVariant, that would then need to be converted to a V8::Value. If the variant was a string this involved copying the string data. To soften this, various caching mechanisms were introduced, but those came at the cost of increased memory usage and additional complexity in the code.</p>
<li><B>QML scoping rules</b><br />
QML is syntactically a tree of items. Inner items implicitly see properties of outer items leading to a well defined scope chain. Unfortunately this scope chain works differently than traditional Javascript and couldn&#8217;t be directly implemented with existing Javascript engines. The only way to do it directly would have been through nesting slow and deprecated with() statements. The current solution involves a very intrusive patch to V8 and still requires all QML properties to be looked up by name. </p>
<li><B>Throwing away QML type info</b><br />
QML as a language has type information. Javascript however is completely untyped. This lead to the fact that all type information got thrown away at QML compile time. Retaining the type information would allow us to optimise QML expressions a lot better.</p>
<li><B>iOS and WinRT support</b><br />
iOS does not allow making memory both executable and writable, something that existing JS engines require. WinRT doesn&#8217;t allow making  memory executable at all. This makes it impossible to use V8 on these platforms without writing a full interpreter backend to V8.</p>
<li><B>Working with upstream V8</b><br />
As said above, we are currently forced to maintain a rather large and intrusive patch set on top of V8. There is no chance of merging these patches upstream, as V8 fully focuses on the browser use cases.
</ul>
<p>These different arguments have lead to a research project that was started Roberto Raggi and Aaron Kennedy in Nokia around a year ago, where they explored the feasibility of having a JS engine that is tailored to the use cases QML requires. The project with the codename v4vm was then transferred to Digia, where Simon, Erik and myself took it up and continued with it. It lived as a playground project on qt-project.org for the last couple of months.</p>
<p>Today we integrated this research project into a development branch of Qt Declarative, and we will continue to work on it there from now on. </p>
<p>The new engine contains a fully compliant ECMAScript 5.1 implementation, that runs on all platforms Qt supports. It contains a JIT that currently works on Linux, Mac and iOS. Integration into the current QML engine is currently done through a V8 compatible API layer which we plan to remove in the coming weeks. The engine can run all Qt Quick demos (with some minor glitches).</p>
<p>One of the things to note is that the engine is focused at QML use cases. This implies that we expect QML performance to become a lot better then it is today. Pure JS performance will on the other hand not be quite as good as what you get with V8 as a backend.</p>
<p>Still our current benchmark numbers are very promising also for pure JS code. The V8 benchmark runs currently around three times slower than the JS engine used in Qt 4.8 and Qt Quick 1, and we see a lot of potential for further optimisations.</p>
<p>Details about the new engine and our future plans will come in a followup post. You can find the code in the wip/v4 branch in the qtdeclarative repository. Feel free to play around with it. If you want to join development, feel free to contact us on #qt-v4vm on freenode.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/15/evolution-of-the-qml-engine-part-1/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Visual Studio Add-In 1.2.1 for Qt 5 Released</title>
		<link>http://blog.qt.digia.com/blog/2013/04/11/visual-studio-add-in-1-2-1-for-qt-5-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visual-studio-add-in-1-2-1-for-qt-5-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/11/visual-studio-add-in-1-2-1-for-qt-5-released/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 09:47:56 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35226</guid>
		<description><![CDATA[<br/>It has been a busy week &#8211; today we are releasing Visual Studio Add-in 1.2.1 for Qt 5. This is mainly a bug fix release targeting problems found in previous releases. In addition to bug fixes the Add-In now supports Visual Studio 2012 debugger visualizers for Qt 5 classes. On the commercial version there is [...]]]></description>
			<content:encoded><![CDATA[<br/><p><em><strong>It has been a busy week &#8211; today we are releasing Visual Studio Add-in 1.2.1 for Qt 5. This is mainly a bug fix release targeting problems found in previous releases. In addition to bug fixes the Add-In now supports Visual Studio 2012 debugger visualizers for Qt 5 classes. On the commercial version there is also support for Qt Quick.</strong></em></p>
<p>As before, at least Visual Studio Professional is required to use the Add-in. Supported versions are Visual Studio 2012 (update 2 recommended), 2010 and 2008.</p>
<p><strong>Highlights of Visual Studio Add-In 1.2.1 include:</strong></p>
<ul>
<li>Qt Quick project wizard, QML keyword highlighting and QML file preview in the commercial version</li>
<li>Visual Studio 2012 debugger visualizers for Qt 5 classes</li>
<li>Possibility to use Qt 4 Add-in and Qt 5 Add-in in same computer (in turns)</li>
<li>Incorrect Qt 5 library/module names and include paths fixed</li>
</ul>
<p>You can find the detailed list of changes to the Visual Studio Add-in 1.2.1 in the <a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/VS_Add-In_1.2.1_changelog.txt" target="_blank">change log</a>.</p>
<p><strong>Using Qt 5 VS Add-in and Qt 4 VS Add-in together</strong></p>
<p>Qt 4 Visual Studio Add-in is not allowed to run at same time with the Qt 5 Add-in, if found it will be closed. It is however possible to use both Qt 4 and Qt 5 Add-ins in turns. The user must choose Qt-version within the Add-in manager (both can not be active simultaneously). Extra care must be taken to use correct project and class wizards because both Qt 4 and Qt 5 ones are visible if both Add-ins are installed in system.</p>
<p><strong>Qt Quick support in the commercial version</strong></p>
<p>Digia has created additional functionality to the Visual Studio Add-In available only for the commercial licensees of Qt. The commercial version has new Qt Quick2 Application project wizard for creating project that can contain both QML and C++ code. The commercial Add-In also provides keyword highlighting for QML files and new preview feature for launching qmlviewer.</p>
<p><strong>Get it from the Customer Portal of Qt Project Downloads</strong></p>
<p>The new Visual Studio Add-In 1.2.1 is available for both commercial and open-source users. If you hold a valid commercial license, you can download the new Visual Studio Add-In from the <a href="http://qt.digia.com/Log-in-Customer-Portal/" target="_blank">Customer Portal</a>. The open-source version can be downloaded from the <a href="http://qt-project.org/downloads#qt-other" target="_blank">Qt Project</a>. If you are not a commercial licensee, but want to try out the additional functionality, you can try our the commercial version with our <a href="http://qt.digia.com/Try-Qt-Now/" target="_blank">free 30-day evaluation</a>.</p>
<p>I hope you enjoy developing Qt 5 applications with Visual Studio. Please provide us feedback either through the commercial support or via the Qt Project mailing lists.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/11/visual-studio-add-in-1-2-1-for-qt-5-released/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Qt Developer Day China 2013</title>
		<link>http://blog.qt.digia.com/blog/2013/04/11/qt-developer-day-china-2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-developer-day-china-2013</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/11/qt-developer-day-china-2013/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 07:38:31 +0000</pubDate>
		<dc:creator>Katherine</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Qt Developer Days]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35219</guid>
		<description><![CDATA[<br/>Qt&#8217;s popularity is gaining ground with our friends in China and the surrounding region. We are happy to announce a Qt Developer Day event in China. Digia together with top sponsors, BlackBerry and Jolla, will host a one-day event with Qt experts and fans coming together to listen and learn about new developments with the [...]]]></description>
			<content:encoded><![CDATA[<br/><p><a href="http://blog.qt.digia.com/wp-content/uploads/2013/04/DevDays13_banner980x350_Chinese_SimSun.png"><img src="http://blog.qt.digia.com/wp-content/uploads/2013/04/DevDays13_banner980x350_Chinese_SimSun-300x107.png" alt="" title="DevDays13_banner980x350_Chinese_SimSun" width="300" height="107" class="alignleft size-medium wp-image-35224" /></a></p>
<p>Qt&#8217;s popularity is gaining ground with our friends in China and the surrounding region. We are happy to announce a Qt Developer Day event in China.</p>
<p>Digia together with top sponsors, BlackBerry and Jolla, will host a one-day event with Qt experts and fans coming together to listen and learn about new developments with the best cross-platform application and UI development framework.</p>
<h3>Save the date!</h3>
<p>- <strong>Beijing</strong>: June 6</p>
<p>Please have a look at our Chinese <a title="Qt Developer Day China 2013" href="http://bit.ly/Zolwuo">blog post for more information</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/11/qt-developer-day-china-2013/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qt 5.0.2 Released</title>
		<link>http://blog.qt.digia.com/blog/2013/04/10/qt-5-0-2-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-5-0-2-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/10/qt-5-0-2-released/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 11:42:04 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35092</guid>
		<description><![CDATA[<br/>Today we are releasing Qt 5.0.2 &#8211; the second patch release of Qt 5.0 series. I am extremely happy about the interest towards Qt 5 as well as the amount of improvements we have been able to add into the Qt 5.0.2 release.  Qt 5.0.2 brings over 600 improvements compared to Qt 5.0.1, most of [...]]]></description>
			<content:encoded><![CDATA[<br/><p><strong><em>Today we are releasing Qt 5.0.2 &#8211; the second patch release of Qt 5.0 series. I am extremely happy about the interest towards Qt 5 as well as the amount of improvements we have been able to add into the Qt 5.0.2 release. </em></strong></p>
<p>Qt 5.0.2 brings over 600 improvements compared to Qt 5.0.1, most of these in order to address the issues Qt users have noted when bringing their applications to Qt 5. As a patch release Qt 5.0.2 does not introduce new functionality, but we have again been able to add some new binary installers, as well as enable some use cases that have been problematic in the earlier Qt 5 releases.</p>
<p><strong>Highlights of Qt 5.0.2 include:</strong></p>
<ul>
<li>New binary installers for VS2012 with ANGLE and for VS2010 with OpenGL (for those who do not wish to use ANGLE)</li>
<li>Creator 2.7.0 included in the release package (Qt 5.0.1 was shipped with Creator 2.6.2)</li>
<li>Possibility to easily skip modules in configure when building Qt yourself</li>
<li>Static linking now works correctly for the Qt libraries</li>
<li>Overall more than 600 improvements in 17 different modules of Qt</li>
</ul>
<p>For detailed list of changes in Qt 5.0.2, please have a look into the changes file included to each module – or check the most important ones: <a href="https://qt.gitorious.org/qt/qtbase/blobs/release/dist/changes-5.0.2" rel="nofollow" target="_blank">qtbase</a>, <a href="https://qt.gitorious.org/qt/qtdeclarative/blobs/release/dist/changes-5.0.2" rel="nofollow" target="_blank">qtdeclarative</a>, <a href="http://qt.digia.com/Release-Notes/Webkit-Release-Notes-Qt-502/" target="_blank">qtwebkit</a> and <a href="https://qt.gitorious.org/qt/qtmultimedia/blobs/release/dist/changes-5.0.2" rel="nofollow" target="_blank">qtmultimedia</a>, as well as <a href="http://blog.qt.digia.com/blog/2013/03/21/qt-creator-2-7-0-released/" target="_blank">Creator 2.7.0 release announcement</a>.</p>
<p>As always, Qt 5.0.2 maintains both forward and backward source compatibility with Qt 5.0. We are continuously ironing out the glitches and improving quality with every new release. If you encounter a problem, please check the <a href="http://qt-project.org/wiki/Qt502KnownIssues" target="_blank">known issues page</a> first, where you can find solutions and workarounds for common problems. If you find a previously unknown bug in Qt 5, please help us to improve the product in future releases by reporting it to <a href="http://bugreports.qt-project.org/" target="_blank">bugreports.qt-project.org</a>, or contact us via our <a href="http://qt.digia.com/Log-in-Customer-Portal/" target="_blank">Customer Portal</a> if you have a commercial license.</p>
<p>Qt 5.0.2 is now tagged in the Qt Project repository. The source packages and installers for Qt 5.0.2 are available for download at <a href="http://qt-project.org/downloads" rel="nofollow" target="_blank">qt-project.org/downloads</a> for open-source users, as well as via the <a href="http://qt.digia.com/Log-in-Customer-Portal/" target="_blank">Customer Portal</a> for commercial licensees.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/10/qt-5-0-2-released/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Qt 5.1 Alpha Available</title>
		<link>http://blog.qt.digia.com/blog/2013/04/08/qt-5-1-alpha-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-5-1-alpha-available</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/08/qt-5-1-alpha-available/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 11:02:31 +0000</pubDate>
		<dc:creator>Lars Knoll</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35177</guid>
		<description><![CDATA[<br/>Two weeks ago we initiated the Qt 5.1 cycle by merging our development code base into the stable branch. Since then, the release team has been working on stabilizing the branch and we now have the first set of Qt 5.1 packages available. They are available from the new download.qt-project.org area for the open source [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Two weeks ago we initiated the Qt 5.1 cycle by merging our development code base into the stable branch. Since then, the release team has been working on stabilizing the branch and we now have the first set of Qt 5.1 packages available. They are available from the new <a href="http://download.qt-project.org/development_releases/qt/5.1/">download.qt-project.org</a> area for the open source version and in your <a title="Qt customer portal" href="http://qt.digia.com/customerportal">customer portal</a> for commercial users). The packages are source only and mainly for people already used to developing with Qt. Unless you feel comfortable compiling Qt on your own, you might want to wait for the beta which will come out within the next few weeks.</p>
<p>A lot has happened since the Qt 5.0 release in December, and I am truly impressed by the amount of new things that we managed to get done for this alpha release. Let&#8217;s have a short look at the most important new features.</p>
<h4>Android &amp; iOS</h4>
<p>To start with, we have added preliminary support for Android and iOS to Qt 5.1. This release is fully usable on both platforms and you can begin to develop for both OSs immediately. All of qtbase (Qt Core, Gui, Network etc.) is implemented. Qt Quick works very nicely on Android and most sensors are supported. There are, however, certain limitations. Some parts of Multimedia are not fully implemented and Qt Quick is not yet working on iOS. Tooling is also still a work in progress, and not everything can be done from within Qt Creator yet, but many things are already  working nicely and smoothly.  As announced last year, full Android and iOS support will come with Qt 5.2, but Qt 5.1 provides a solid base for developers to create full applications for these two platforms.</p>
<h4>Introduction of Qt Quick Controls</h4>
<p>Then, we finally have cross-platform controls for Qt Quick. The modules ((QtQuick Controls (formerly known as Desktop Components)and Qt Quick Layouts) offer ready- available controls and layouts you can use to build your user interface, starting from buttons, layouts, over menu and toolbars to dialogs and high-level navigational controls. Of course, they have the look and feel of native widgets of the underlying platforms. They are currently implemented for the desktop operating systems, support for touch-based platforms will get added for Qt 5.2.</p>
<h4>Add-ons</h4>
<p>A couple of new modules got added as well. First of all, we brought back Qt Sensors as an add-on. The module is currently supported on Android, iOS, BlackBerry and Mer (Sailfish). A module for controlling serial ports (Qt SerialPort) has also been added, and we have an X11 specific add-on (Qt X11Extras).</p>
<p>Finally, we have added many other smaller features to the existing modules. For more details, please have a look at the <a href="http://qt-project.org/wiki/New-Features-in-Qt-5.1">Qt 5.1 feature list</a>.</p>
<p>From now, we will start work on Qt 5.1 beta, which I  expect to be released a few weeks from now. Following that, Qt 5.1 final can be expected to come before the beginning of summer. Let us know what you think of our Qt 5.1 alpha. Enjoy!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/08/qt-5-1-alpha-available/feed/</wfw:commentRss>
		<slash:comments>78</slash:comments>
		</item>
		<item>
		<title>First Ten Mirrors Active for Qt Project Downloads</title>
		<link>http://blog.qt.digia.com/blog/2013/04/05/first-ten-mirrors-active-for-qt-project-downloads/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-ten-mirrors-active-for-qt-project-downloads</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/05/first-ten-mirrors-active-for-qt-project-downloads/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 14:04:21 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Governance]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35144</guid>
		<description><![CDATA[<br/>I am very pleased that we have already ten mirrors from three continents active for the new download service of the Qt Project, and more are on their way. With the new MirrorBrain based setup is it very easy to become a mirror for Qt &#8211; and even more importantly it is seamless for the [...]]]></description>
			<content:encoded><![CDATA[<br/><p>I am very pleased that we have already <a href="http://download.qt-project.org/static/mirrorlist/" target="_blank">ten mirrors from three continents</a> active for the new download service of the Qt Project, and more are on their way. With the new MirrorBrain based setup is it very easy to become a mirror for Qt &#8211; and even more importantly it is seamless for the user to benefit from the nearby mirrors.</p>
<p>We plan to use the new <a href="http://download.qt-project.org" target="_blank">download.qt-project.org</a> service starting from next week for the upcoming releases of Qt 5.0.2, Qt 5.1 Alpha and others. The old CDN service will be available as backup. When a release is made you can see it appear to <a href="http://qt-project.org/download" target="_blank">qt-project.org/download</a> page, so everything stays quite similar as before.</p>
<p>If needed, it is easy to see if the file you are planning to download has already been mirrored by viewing the <a href="http://download.qt-project.org/official_releases/qtcreator/2.7/2.7.0/qt-creator-2.7.0-src.zip.mirrorlist" target="_blank">details</a> in conjunction of each file. The mirrors synchronize content with different schedule, so it takes a while for file to become available in all mirrors after it has been released. We are also looking into leveraging torrents as an additional way of downloading files.</p>
<p>For the commercial Qt licensees there are no changes, as the Customer Portal and distribution systems are separate from the open-source downloads.</p>
<p>I hope we continue to receive more mirrors for Qt Project in the coming weeks. If you are interested in mirroring Qt, see <a href="http://qt-project.org/wiki/mirror_howto">instructions how to become a mirror</a> from the Qt Project wiki. Also, feel free to ask you local mirror providers to start mirroring Qt.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/05/first-ten-mirrors-active-for-qt-project-downloads/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Save the Dates &#124; Qt Developer Days 2013</title>
		<link>http://blog.qt.digia.com/blog/2013/04/05/save-the-dates-qt-developer-days-2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=save-the-dates-qt-developer-days-2013</link>
		<comments>http://blog.qt.digia.com/blog/2013/04/05/save-the-dates-qt-developer-days-2013/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 09:58:54 +0000</pubDate>
		<dc:creator>Katherine</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35110</guid>
		<description><![CDATA[<br/>We are happy to announce that the 10th annual Qt Developer Days, the premier Qt event of the year, is booked and confirmed this autumn in Berlin and Silicon Valley. Save the dates! Berlin, Germany (Café Moskau and Umspannwerk Alexanderplatz): October 7-9 San Francisco, CA (The San Francisco Airport Marriott Waterfront): November 6-8 Just like [...]]]></description>
			<content:encoded><![CDATA[<br/><p>We are happy to announce that the 10th annual Qt Developer Days, the premier Qt event of the year, is booked and confirmed this autumn in Berlin and Silicon Valley. Save the dates!</p>
<ul>
<li>Berlin, Germany (Café Moskau and Umspannwerk Alexanderplatz): <strong>October 7-9</strong></li>
<li>San Francisco, CA (The San Francisco Airport Marriott Waterfront): <strong>November 6-8</strong></li>
</ul>
<p>Just like in 2012, Digia will be a co-host together with KDAB and ICS for the Berlin and Silicon Valley events respectively. Qt Developer Days 2012 was a fantastic event where Qt got a mega boost from the very-well received keynote by Digia SVP, Tommi Laitinen and also from the hundreds of enthusiastic Qt fans on site. It was an amazing opportunity to hear from the Qt experts first hand, network with new and veteran Qt groupies and learn about the bright future ahead for the best cross-platform development framework.</p>
<p>Last year&#8217;s event would not have been possible without the planning and execution by KDAB and ICS. They did an awesome job and brought the community together to give a positive signal that Qt was alive and kicking.</p>
<p>In case you missed last year&#8217;s event or you are just feeling nostalgic, have a look at the following videos courtesy of KDAB and ICS.</p>
<p><strong>Qt Developer Days 2012 Berlin</strong></p>
<p><iframe src="http://www.youtube.com/embed/34NrGbcKe6I" frameborder="0" width="560" height="315"></iframe></p>
<p>&nbsp;</p>
<p><strong> Qt Developer Days 2012 North America</strong></p>
<p><iframe src="http://www.youtube.com/embed/ulWSMl8gFIQ" frameborder="0" width="560" height="315"></iframe></p>
<p>Now, as we are a quarter of the way through 2013, we are excited that this year will mark a decade of Qt Developer Days. Time flies while having fun. Mark your calendars and make all efforts possible to join us and the army of Qt developers that will gather at both events. Th<strong></strong>ese are the events to be at to hear from our Qt experts on the latest developments on Qt and upcoming ports, the roadmap, best practiceson fascinating features and functions and lastly the best places to be at to get your jabber on and network with the Qt community.</p>
<p>We will soon post a call for papers, so stay tuned! <a href="http://www.qtdeveloperdays.com">http://www.qtdeveloperdays.com</a>.</p>
<p>Anybody been to all 9 developer days? Who is shooting for 10? See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/04/05/save-the-dates-qt-developer-days-2013/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Qt Project Needs Mirrors for the New Download Service</title>
		<link>http://blog.qt.digia.com/blog/2013/03/28/qt-project-needs-mirrors-for-the-new-download-service/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-project-needs-mirrors-for-the-new-download-service</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/28/qt-project-needs-mirrors-for-the-new-download-service/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 08:57:55 +0000</pubDate>
		<dc:creator>Tuukka Turunen</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Open Governance]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35057</guid>
		<description><![CDATA[<br/>The Qt Project is currently using a content delivery network based solution for distribution of releases. We have been working to improve distribution of Qt open-source packages and now have the setup available for mirroring. Now we need to get more mirrors before going to production. The idea is to switch to MirrorBrain based system [...]]]></description>
			<content:encoded><![CDATA[<br/><p><em><strong>The Qt Project is currently using a content delivery network based solution for distribution of releases. We have been working to improve distribution of Qt open-source packages and now have the setup available for mirroring. Now we need to get more mirrors before going to production. </strong></em></p>
<p>The idea is to switch to <a href="http://www.mirrorbrain.org" target="_blank">MirrorBrain</a> based system and away from the current content delivery network based service. The work was started a while ago by <a href="https://daniel.molkentin.net/2013/03/27/qt-project-call-for-mirrors/" target="_blank">Daniel Molkentin</a> and now we have the setup available for mirroring. It is very much similar to what <a href="http://download.kde.org" target="_blank">KDE</a> is already using, so for many it is quite familiar. At this point I would like to thank Danimo and others from KDE for all the help provided to enable this.</p>
<p><em>The system is not yet taken into production use, we need to first have enough mirrors in place. Downloads from the new service work, but the system is not yet up to handle the needed load.</em> Currently we have two mirrors in place, and need more before the new download service can be taken into production use.</p>
<ul>
<li>You can find the new download service from <a href="http://download.qt-project.org" target="_blank">http://download.qt-project.org</a></li>
<li>Information on how to become a mirror is in the Qt Project wiki at <a href="http://qt-project.org/wiki/mirror_howto" target="_blank">http://qt-project.org/wiki/mirror_howto</a></li>
</ul>
<p>The new service is for open-source content only. All the commercial Qt licensees are using a separate system. So it is completely ok for non-profit organizations to become a mirror for Qt Project.</p>
<p>If your organization is willing to become a mirror, please follow the steps in the <a href="http://qt-project.org/wiki/mirror_howto" target="_blank">wiki</a>. Or if you know some organization who already provides mirrors, please ask them to become a mirror for the Qt Project.</p>
<p>We are keenly waiting to get the new download service active as it allows much more flexibility than the current setup. Getting the new system into production is also a prerequisite for providing the new online SDK for the Qt Project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/28/qt-project-needs-mirrors-for-the-new-download-service/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Qt Installer Framework 1.3 released</title>
		<link>http://blog.qt.digia.com/blog/2013/03/27/qt-installer-framework-1-3-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-installer-framework-1-3-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/27/qt-installer-framework-1-3-released/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 15:01:28 +0000</pubDate>
		<dc:creator>Niels Weber</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[cross-platform]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34982</guid>
		<description><![CDATA[<br/>Thus far, the Qt Installer Framework has been used to create Qt SDK Installers. You can now use it also to create installers for your own applications. This is why we decided to make a formal release for the first time as opposed to just tagging a Git version. Therefore we are offering binary downloads [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Thus far, the Qt Installer Framework has been used to create Qt SDK Installers. You can now use it also to create installers for your own applications. This is why we decided to make a formal release for the first time as opposed to just tagging a Git version. Therefore we are offering binary downloads for the major platforms at <a href="http://releases.qt-project.org/qt-installer-framework/1.3.0/">https://releases.qt-project.org/qt-installer-framework/1.3.0/</a>.</p>
<p>The recent months were mostly used for stabilization, cleanup work and improving the documentation. But in the 14 months since 1.2 some new features were introduced as well.</p>
<p>Notable new features include the possibility to translate the installer (German and Russian translation are included). The included 7zip library was updated to the current version. The Installer Framework was made compatible with Qt 5 (and continues to work with Qt 4 of course). For online installers, repositories using https are now supported in addition to http.</p>
<p>Notable contributions are the Russian translation by Ivan Komissarov and Support for the BB10 SDK by Andreas Holzammer. Thank you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/27/qt-installer-framework-1-3-released/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Qt Charts 1.2.1 released</title>
		<link>http://blog.qt.digia.com/blog/2013/03/26/charts-1-2-1-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=charts-1-2-1-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/26/charts-1-2-1-released/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 13:11:54 +0000</pubDate>
		<dc:creator>Makkonen Sami</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=35023</guid>
		<description><![CDATA[<br/>The Qt Charts 1.2.1 is a patch-level release containing 9 fixes which are listed in the README file included in the source package. We are currently working on the next release, which brings Polar and Box Plot charts and some API enhancements suggested by charts users. For an overview of the Charts functionality, please refer [...]]]></description>
			<content:encoded><![CDATA[<br/><p>The Qt Charts 1.2.1 is a patch-level release containing 9 fixes which are listed in the README file included in the source package. We are currently working on the next release, which brings Polar and Box Plot charts and some API enhancements suggested by charts users.</p>
<p>For an overview of the Charts functionality, please refer to the <a href="http://qt.digia.com/Product/Qt-Add-Ons/Charts/">Charts product page</a> and the latest new features are listed in the <a href="http://blog.qt.digia.com/blog/2012/12/19/charts-1-2-0-released/">1.2.0 release announcement</a>.</p>
<p>We have made the Charts 1.2.1 release available to commercial Qt licensees through the Qt <a href="http://www.digia.com/en/Qt/Log-in-Customer-Portal/">Customer Portal</a>. The release team is working on a new SDK and therefore the Charts is not yet available through there yet. Stay tuned.</p>
<p>If you don&#8217;t have a commercial license for Qt, you can test out the Charts 1.2.1 by <a href="http://www.digia.com/en/Qt/Try-Qt-Now/">downloading a 30-day free evaluation</a>. Let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/26/charts-1-2-1-released/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Qt Creator 2.7.0 released</title>
		<link>http://blog.qt.digia.com/blog/2013/03/21/qt-creator-2-7-0-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-creator-2-7-0-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/21/qt-creator-2-7-0-released/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 12:14:50 +0000</pubDate>
		<dc:creator>Eike Ziller</dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34990</guid>
		<description><![CDATA[<br/>We are happy to announce the Qt Creator 2.7.0 release today, which comes with loads of new features, improvements and bug fixes. C++ support in Qt Creator got even more improvements for C++11, like handling of alignof, alignas and noexcept, brace initializers, and more lambda fixes. Also, if Qt Creator cannot find out if your [...]]]></description>
			<content:encoded><![CDATA[<br/><p>We are happy to announce the Qt Creator 2.7.0 release today, which comes with loads of new features, improvements and bug fixes.</p>
<p>C++ support in Qt Creator got even more improvements for C++11, like handling of alignof, alignas and noexcept, brace initializers, and more lambda fixes. Also, if Qt Creator cannot find out if your tool chain expects C++11 or C++98/03, it defaults to C++11 now, for a better out of the box experience. Also there are improvements on the refactoring actions side, for example quick fixes for adding getters and setters for class members, and for adding the getters and setters that are specified in a Q_PROPERTY.</p>
<p>QML support got lots of fixes for Qt Quick 2 in the code editor, and there was a lot of work done to make Qt Quick Designer work with Qt Quick 2. Please note though that the Qt Creator standalone binary packages are based on Qt 4 and do not provide the necessary Qt Quick 2 based external worker tool (which of course needs to be built with Qt 5). For now you either need to compile Qt Creator with Qt 5 yourself, or at least compile the qml2puppet yourself with Qt 5 (qt-creator/share/qtcreator/qml/qmlpuppet/qml2puppet) and put that into qtbase/bin of your Qt 5 install (and make sure that your project uses a Kit that uses that Qt version). Or you wait for Qt 5.0.2 packages that will contain a Qt 5 based build of Qt Creator again.</p>
<p>On the BlackBerry support side, we got a new settings page, which allows to easily generate Kits (and the necessary Qt version and compiler information) from an NDK path, and helps users with registering and generating developer certificates and other files that are needed for uploading apps to their devices. Also the editor for bar descriptor files, which define application appearance and behavior, can now be switched between editing the pure XML and a graphical editor. There were many other improvements as well, for example regarding debugging on devices.</p>
<p>Experimental support for the (also experimental) <a href="http://qt-project.org/wiki/qbs">QBS</a> build tool was added to Qt Creator, and the binary packages now also contain it (in contrast to the prereleases), though it is disabled by default. To enable it, open &#8220;Help &gt; About Plugins&#8221; (on Mac it&#8217;s in &#8220;Qt Creator &gt; About Plugins&#8221;), tick the QbsProjectManager, and restart Qt Creator, no further downloads/installations are necessary. The Qt Creator sources themselves also come with QBS project files, if you were wondering which project you can open with it now <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . If you want to build Qt Creator with QBS support yourself, you first need to pull in its sources: Qt Creator&#8217;s git repository now has QBS as a submodule, so &#8220;git submodule update &#8211;init &amp;&amp; qmake -r &amp;&amp; make&#8221; in the top-level directory of your git checkout should be all you need to do.</p>
<p>Of course this is only a very small part of the actual improvements that were done, but talking about all of them &#8211; Debugging, Android, VCS, FakeVim, just to mention a few &#8211; would be beyond the scope of the blog post. Even bookmarks got some love this time, thanks Vasiliy Sorokin <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . If you want to know more about changes in this version, you might want to have a look at our <a href="http://qt.gitorious.org/qt-creator/qt-creator/blobs/2.7/dist/changes-2.7.0">change log</a>.</p>
<p>Open source download: <a href="http://releases.qt-project.org/qtcreator/2.7.0/">Qt Creator downloads page</a> (or the <a href="http://qt-project.org/downloads#qt-creator">Qt Project downloads front page</a>)</p>
<p>Qt Commercial customers find packages in the <a href="http://qt.digia.com/Log-in-Customer-Portal/">Customer Portal</a></p>
<p><strong>Important note for developers for Madde: </strong>Madde support has been disabled by default in Qt Creator 2.7. Most functionality is available by default through the &#8220;generic Linux&#8221; support. If you still want to use the Madde specific plugin, you need to enable it: On first start of Qt Creator 2.7.0, run it with command line argument &#8220;-load Madde&#8221; (that is important, otherwise you will lose existing Madde settings like tool chains and Qt versions), then open Help &gt; About Plugins and enable the Madde plugin.</p>
<p><strong>Important note for people that turned off the QmlJSTools plugin manually: </strong>Qt4ProjectManager depends on it in Qt Creator 2.7, so you need to turn it on again to be able to open qmake projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/21/qt-creator-2-7-0-released/feed/</wfw:commentRss>
		<slash:comments>84</slash:comments>
		</item>
		<item>
		<title>Preview of Qt 5 for Android</title>
		<link>http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=preview-of-qt-5-for-android</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 15:48:07 +0000</pubDate>
		<dc:creator>Eskil Abrahamsen Blomfeldt</dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[Qt Quick 2.0]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34876</guid>
		<description><![CDATA[<br/>The first commit in the effort to port Qt 4 to Android was on Christmas Day, 2009: &#8220;Android mkspecs and semaphore&#8221; by BogDan Vatra. On January 22nd, 2010, he committed &#8220;A small step for Qt, a giant leap for android&#8221; with a working graphics system plugin and could actually run Qt applications on an Android [...]]]></description>
			<content:encoded><![CDATA[<br/><p>The first commit in the effort to port Qt 4 to Android was on Christmas Day, 2009: <em>&#8220;Android mkspecs and semaphore&#8221;</em> by BogDan Vatra.</p>
<p>On January 22nd, 2010, he committed <em>&#8220;A small step for Qt, a giant leap for android&#8221;</em> with a working graphics system plugin and could actually run Qt applications on an Android device. He uploaded <a title="ToolTip example running on Android" href="http://blip.tv/bogdan-vatra/qt-tooltips-example-on-android-3140576">a video</a> to celebrate.</p>
<p>On February 20th, 2011, he <a title="Original Necessitas announcement in Google Groups" href="https://groups.google.com/d/msg/android-qt/IJ7e98XO7Io/_ti9asJPEsAJ">announced</a> the first usable release of Qt 4 for Android, under the moniker of <em><a title="Necessitas release history" href="http://necessitas.kde.org/news.php">Necessitas</a></em>.</p>
<p>For the past 3+ years, BogDan and others have been (and are still) developing Necessitas on their spare-time, and on November 8th, last year, BogDan agreed to take his work into Qt 5 and <a title="Blog about Bogdan's submission of the Qt 5 port to Qt Project" href="http://blog.qt.digia.com/blog/2012/11/08/necessitas-android-port-contributed-to-the-qt-project/">submit the port to the Qt Project</a>.</p>
<p>He pushed the first version of Qt 5 for Android to a WIP branch on January 4th, and recently we integrated into the &#8220;dev&#8221; branch, meaning that it will become part of Qt 5.1 when it is released.</p>
<p>For this preliminary release, we are focusing on the developer experience, working to enable Qt developers to easily run and test their applications on Android devices. While there&#8217;s nothing preventing you from deploying your app to an app store with Qt 5.1, we&#8217;re recommending that people wait until Qt 5.2 before they do that, as we&#8217;d like to put some more work into improving that experience: Making more options for how your app is deployed, adding more polish in general, and adding more support for Android APIs, both by allowing you to extend your app with Java code or by mapping them in C++ APIs, whichever makes the most sense.</p>
<p>On to the demos!</p>
<p>To start off, here&#8217;s a video of <a title="Information about Qt 5 Cinematic Experience demo" href="http://quitcoding.com/?page=work#cinex">the Qt 5 Cinematic Experience demo</a> running on (from left to right): a Nexus 4, an Asus Transformer Pad TF300T and a Nexus 7. The Cinematic Experience demo has quickly become our demo of choice at events, because it nicely shows a lot of the new graphical capabilities in Qt Quick 2, such as shader effects, particle effects, the new PathAnimation as well as the hardware-accelerated SceneGraph architecture underneath, which makes it possible to run all this at 60 fps.</p>
<p><a href="http://www.youtube.com/watch?v=TzNWqoJRFsc"><img class="aligncenter size-medium wp-image-34964" src="http://blog.qt.digia.com/wp-content/uploads/2013/03/Video1Image-300x182.png" alt="Click to see video" /></a></p>
<p>In addition to the core parts of Qt, we also support the QML media player APIs in QtMultimedia. Here&#8217;s a nice video player written by Andy in QML, with fragment shader effects on top of the video, running on an Asus Transformer TF300:</p>
<p><a href="http://www.youtube.com/watch?v=tmy7GVZEoj8"><img class="aligncenter size-medium wp-image-34964" src="http://blog.qt.digia.com/wp-content/uploads/2013/03/Video2Image-300x182.png" alt="Click to see video" width="300" height="182" /></a></p>
<p>To show off multi-touch support, here&#8217;s a simple hand painting demo running on a Nexus 4. This also shows the support for native menus:</p>
<p><a href="http://www.youtube.com/watch?v=odiSw-i0_4o"><img class="aligncenter size-medium wp-image-34968" src="http://blog.qt.digia.com/wp-content/uploads/2013/03/Video3Image-300x183.png" alt="Click to view video" width="300" height="183" /></a></p>
<p>The lowest Android API level supported by Qt 5 is API level 10, aka Android version 2.3.3. This means we can also have Qt apps running on reasonably priced devices, such as this Huawei Y100:</p>
<p><a href="http://www.youtube.com/watch?v=1Y8rFlvtAOA"><img class="aligncenter size-medium wp-image-34969" src="http://blog.qt.digia.com/wp-content/uploads/2013/03/Video4Image-300x181.png" alt="Click to view video" width="300" height="181" /></a></p>
<p>Here&#8217;s the overview of what we have right now:</p>
<ul>
<li>Support for creating Qt Widgets and Qt Quick apps that run on Android devices.</li>
<li>Support for Android API level 10 (version 2.3.3) and up.</li>
<li>QML media player functionality in QtMultimedia.</li>
<li>A set of commonly used sensors in QtSensors.</li>
<li>Cross-platform features of Qt of course (including Qt Quick controls and QtGraphicalEffects.)</li>
<li>Developing and configuring apps in Qt Creator 2.7.</li>
<li>Deploying a test build to a device directly from Qt Creator.</li>
</ul>
<p>In addition, we plan to soon support the possibility of distributing the Qt libraries through the Ministro distribution tool, which allows you to share a set of Qt libraries across several apps on a device, and which will be the primary way of deploying apps with Qt 5.1. Other than that, this is all already available: Just check out the <a title="Qt 5 for Android wiki" href="http://qt-project.org/wiki/Qt5ForAndroid">wiki</a>for instructions. Let us know if anything goes horribly wrong. We can usually be found in the #necessitas channel on the Freenode IRC servers.</p>
<p>What&#8217;s next, you ask? You can in fact help us decide! Both by <a title="Bug reports in Qt Project" href="https://bugreports.qt-project.org">reporting your bug findings and feature expectations to us</a>, and by <a title="Code Reviews in Qt Project" href="http://codereview.qt-project.org">contributing your code</a>. We will be working steadily on improving Qt 5 for Android, and would benefit greatly from your feedback. In the <a title="Qt 5 for Android wiki" href="http://qt-project.org/wiki/Qt5ForAndroid">wiki</a>, we are also compiling a list of devices where Qt has been verified to run. If you take the time to add devices you have tested to the list there (as well as any issues you have found), it would very much be appreciated <img src='http://blog.qt.digia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Finally: A big thanks to BogDan Vatra, Ray Donnelly and everyone else who has been contributing to the Necessitas project for the past years, as well as Qt 5 for Android in the past months. And thanks to everyone who will contribute in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Call for Sponsors &#124; 2013 Qt Contributors Summit</title>
		<link>http://blog.qt.digia.com/blog/2013/03/13/sponsoring-qt-cs-2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sponsoring-qt-cs-2013</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/13/sponsoring-qt-cs-2013/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 09:26:46 +0000</pubDate>
		<dc:creator>Knut Yrvin</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Contributors]]></category>
		<category><![CDATA[Customers]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Open Governance]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34773</guid>
		<description><![CDATA[<br/>This is the 3rd annual Qt Contributors Summit and it will be the biggest summit to date due to our joined forces with the KDE Akademy conference. More than 500 contributors are expected and it&#8217;s solely dependent on sponsorship to succeed. This will foster interaction, knowledge transfer and technical progress in a highly-productive atmosphere where [...]]]></description>
			<content:encoded><![CDATA[<br/><p><img class="alignright" src="http://farm3.staticflickr.com/2791/5860265906_4d4db664f0_z.jpg" alt="Qt Contributors' Summit. Photo: Alexandra Leisse" width="270" height="270" /></p>
<p>This is the 3rd annual Qt Contributors Summit and it will be the biggest summit to date due to our joined forces with the KDE Akademy conference. More than 500 contributors are expected and it&#8217;s solely dependent on sponsorship to succeed.</p>
<p>This will foster interaction, knowledge transfer and technical progress in a highly-productive atmosphere where new and veteran contributors can meet to influence the future direction of Qt. The key benefits of sponsoring the joint Qt CS and KDE Akademy conference are:</p>
<ul>
<li>Meeting key Qt and KDE contributors. There will be 500 upstream and downstream developers and key maintainers, making Qt the top-ranked cross platform framework in developer satisfaction[1].</li>
</ul>
<ul>
<li>Influence how Qt will be developed in the future. Besides the Qt community, there will be many other free software projects and businesses participating in the joint Qt Contributor Summit and KDE Akademy conference.</li>
</ul>
<ul>
<li>Be visible. A sponsorship gives you valuable promotional possibilities such as visible advertising, prominent talks and international press coverage.</li>
</ul>
<p>Digia is a confirmed top platinum sponsor of this year&#8217;s combined event and we need even more sponsors to make sure that this year&#8217;s event is successful.</p>
<h3>Sponsorship Options</h3>
<p>This year&#8217;s event is providing individuals and companies two ways to sponsor &#8211; both which come with many valuable promo benefits:</p>
<ol>
<li><a href="http://qt-project.org/groups/qt-contributors-summit-2013/wiki/Sponsoring" title="Signgle sponsorship: Qt Contributors Summit, 15-16 July.">Single sponsorship: Qt Contributors Summit, 15-16 July</a></li>
<li><a href="http://qt-project.org/groups/qt-contributors-summit-2013/wiki/Sponsoring" title="Joint event sponsorship: Qt Contributors Summit and KDE Akademy, 13-19 July">Joint event sponsorship: Qt Contributors Summit and KDE Akademy, 13-19 July</a></li>
</ol>
<p>For the Qt Contributor Summit, the sponsorship packages range from Small to XL where sponsors are able to showcase their Qt commitment in front of a knowledgeable, enthusiastic and motivated ecosystem via a variety of sponsor benefits solidifying their stance as active contributors and advocates of the Qt technology.</p>
<ol>
<li><a title="Detailed overview of the sponsorship packages" href="http://qt-project.org/groups/qt-contributors-summit-2013/wiki/Sponsoring" target="_blank">The single Qt CS sponsorship packages and the combined Qt CS and KDE Akademy sponsorship packages in detail</a></li>
</ol>
<h3>Practical information</h3>
<p>Please contact Knut Yrvin at Digia, Qt or Claudia Rauch at KDE, if you would like to receive more information on sponsorship of the Qt Contributors Summit and/or the KDE Akademy conference. <strong>Please contact us by this <a title="e-mail" href="http://qt-project.org/groups/qt-contributors-summit-2013/email">e-mail form</a>.</strong></p>
<p>1. The report: <a title="Cross Platform Tools 2012" href="http://www.slideshare.net/andreasc/vision-mobile-crossplatformdevelopertools2012" target="_blank">Cross Platform Tools 2012</a> by VisionMobile surveying 2,400 developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/13/sponsoring-qt-cs-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt Creator 2.7.0 RC released</title>
		<link>http://blog.qt.digia.com/blog/2013/03/07/qt-creator-2-7-0-rc-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-creator-2-7-0-rc-released</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/07/qt-creator-2-7-0-rc-released/#comments</comments>
		<pubDate>Thu, 07 Mar 2013 11:51:17 +0000</pubDate>
		<dc:creator>Eike Ziller</dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34855</guid>
		<description><![CDATA[<br/>Today we published the Qt Creator 2.7.0 release candidate. Since the set of features is the same as for the beta release of course, I&#8217;ll just point you to the blog post by André about that, who summarized it quite nicely.  But of course we sat down and fixed lots of bugs, summing up to [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Today we published the Qt Creator 2.7.0 release candidate. Since the set of features is the same as for the beta release of course, I&#8217;ll just point you to the <a href="http://blog.qt.digia.com/blog/2013/02/07/qt-creator-2-7-0-beta-released/">blog post by André</a> about that, who summarized it quite nicely.  But of course we sat down and fixed lots of bugs, summing up to a total of 490 changes. Thanks to all who helped by testing, reporting bugs, debugging and actually fixing!</p>
<p>Just to mention a few things: There were lots of fixes to the C++ code model again,  with one fix that almost is a sneaked in feature: The C++ quick fix &#8220;Add Definition&#8221; now also works for non-member functions. Android support got some polish, like fixing kits when the used NDK changes. The kits received some more love in general, with around 30 fixes alone in the area of tool chains, Qt versions, devices and kit setup. On the debugger front, it&#8217;s for example now possible to use mini dumps on Windows. And Leena fixed the documentation all over the place, as always many thanks to her!</p>
<p>Users of the open source version of Qt Creator should jump over to the <a href="http://releases.qt-project.org/qtcreator/2.7.0-rc/">Qt Project downloads page</a>, commercial customers find their packages in the <a href="http://qt.digia.com/Log-in-Customer-Portal/">Customer Portal</a>.</p>
<p><strong>Important note for developers for Madde: </strong>Madde support has been disabled by default in Qt Creator 2.7. If you still want to use it, you need to enable it, first run Qt Creator with command line argument &#8220;-load Madde&#8221; (that is important, otherwise you will lose existing Madde settings like tool chains and Qt versions), then open Help &gt; About Plugins and enable the Madde plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/07/qt-creator-2-7-0-rc-released/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Qt for iOS Preview</title>
		<link>http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qt-for-ios-preview</link>
		<comments>http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 09:01:13 +0000</pubDate>
		<dc:creator>Morten Johan Sørvig</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.qt.digia.com/?p=34782</guid>
		<description><![CDATA[<br/>We are very excited to be able to bring Qt to a new platform. Qt for iOS is planned to be a supported part of Qt 5.2, scheduled for release late 2013. The scope of that release is not completely determined: available resources, platform/app store restrictions and Qt legacy set constraints on the project. This [...]]]></description>
			<content:encoded><![CDATA[<br/><p>We are very excited to be able to bring Qt to a new platform. Qt for iOS is planned to be a supported part of Qt 5.2, scheduled for release late 2013. The scope of that release is not completely determined: available resources, platform/app store restrictions and Qt legacy set constraints on the project. This blog outlines the current plan.</p>
<p>Qt 5.1 will contain a preview &#8211; which was in fact merged last Friday. It’s also possible to take a look today by checking out the Qt source code. See “Getting Started” for detailed instructions below.</p>
<p><strong>Development and Deployment</strong><br />
Development and especially deployment is done using Xcode. The supported workflow is to maintain a .pro file based project, export it to Xcode (and re-export when the project setup changes), and then build and deploy using Xcode. Source code editing can as usual be done in any editor.</p>
<p><strong>Qt 5 Architecture</strong><br />
Understanding the level of support various Qt modules will get, requires a brief detour into Qt 5 architecture. With Qt 5 there is now a common API that all platforms implement (the Qt platform abstraction &#8211; QPA). Most of the Qt for iOS project work will happen here, and this is the code base the team will support. The QPA layer powers both widgets and QML (1 and 2).</p>
<p><strong>Styling</strong><br />
The Qt Mac style uses the HITheme API provided by OS X to draw native-looking UI elements. There is no such API on iOS, which means creating a QiOSStyle similar to QMacStyle is not possible. Cross-platform styles such as the new Fusion style will however be available. Future styling efforts will focus on controls for Qt Quick 2.</p>
<p><strong>Qt Quick 2: JavaScript engines and JIT</strong><br />
Qt Quick 2 uses the V8 javascript engine, which cannot be deployed on iOS due to policy and technical limitations related to V8&#8242;s use of a just-in-time compiler. This means no Qt Quick 2 on iOS for the time being. We are aware of the problem and are working on a solution.</p>
<p><strong>What works today</strong></p>
<ul>
<li>Widgets</li>
<li>Graphics View</li>
<li>Qt Quick 1</li>
</ul>
<ul>
<li>OpenGL</li>
<li>Touch events</li>
<li>Orientation events</li>
<li>++</li>
</ul>
<div id="attachment_34811" class="wp-caption aligncenter" style="width: 488px"><a href="http://blog.qt.digia.com/wp-content/uploads/2013/03/QtQuick1Cinematic.png"><img class=" wp-image-34811   " src="http://blog.qt.digia.com/wp-content/uploads/2013/03/QtQuick1Cinematic-1024x768.png" alt="" width="478" height="360" /></a><p class="wp-caption-text">Qt5 Cinematic Experience by <a title="QUIt Coding" href="http://quitcoding.com">QUIt Coding</a>, ported to Qt Quick 1 and running on an iPad</p></div>
<p>&nbsp;</p>
<p><strong>Getting started</strong></p>
<ol>
<li>Homework: Setup Xcode for development (acquire certificates, configure devices). Test-deploy one of the standard Xcode app templates. Make sure you have Git installed.</li>
<p></p>
<li>Clone qtbase<br />
<code>git clone git://gitorious.org/qt/qtbase.git qtbase-ios<br />
cd qtbase-ios/<br />
git checkout dev</code><br />
[Optional: <code>git checkout ios</code> for the development branch]</li>
<p></p>
<li>Build QtBase for either device or simulator. Note that unlike Qt 4, Qt 5 does not support multi-architecture builds.<br />
<code>/configure -xplatform unsupported/macx-ios-clang -developer-build -nomake examples -nomake tests -release [-sdk iphonesimulator]<br />
make</code></li>
<p></p>
<li>Get the Simple Demo:<br />
<code>git clone git://github.com/msorvig/qt-ios-demo.git<br />
cd qt-ios-demo<br />
../qtbase-ios/bin/qmake<br />
open qt-ios-demo.xcodeproj</code></li>
</ol>
<p><strong>Update: Building Qt Quick 1</strong><br />
You need the full Qt source code, see <a href="http://qt-project.org/wiki/Building_Qt_5_from_Git" title="Building Qt 5 from Git" target="_blank">Building Qt 5 from Git</a>. Then build the QtScript and QtQuick1 modules:<br />
<code><br />
cd qtscript; ../qtbase/bin/qmake; make; cd ..<br />
cd qtquick1; ../qtbase/bin/qmake; make; cd ..<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/feed/</wfw:commentRss>
		<slash:comments>101</slash:comments>
		</item>
	</channel>
</rss>
