Windows

Introduction to Windows RT Frameworks

Published Friday 14, 2013 | by Maurice Kalinowski

It happens seldomly, but a couple of weeks ago I had the chance to look at some parts of the Windows Runtime port again and now I have some time to write about the outcome.

One of the tedious items when working on the port is that all applications have to be “pre-packaged” to be run on the host system. As this is not really a cross-compile environment, where you need to deploy an application and its dependencies to a device, it feels weird. On the other hand it reflects the real world scenario pretty well, which helps you as an app developer so that you do not forget to put items into the final package.
So right now the test build needs to look like this:

  • App.exe
  • AppManifest.XML
  • QtCore5d.dll
  • Platform/Imageformat plugins…

That implies that you need to copy Qt every time you want to test something. This usually is not a problem for an application developer, who copies Qt once. Doing that while developing on Qt itself is time consuming and error-prone, as for each test application you need to copy again.
Browsing through the documentation I found the following option to be interesting: “Framework

(more…)

Qt’s WinRT port and its C++/CX usage

Published Friday 19, 2013 | by Oliver Wolff

Background

After Friedemann has given an initial introduction about Qt’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 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 “as close as possible to modern C++” (Visual C++ Language Reference (C++/CX)). In some cases, these extensions look similar to C++/CLI constructs, but they might have other meanings or slightly different grammar.

The first thing that catches someone’s eye when one has a look at C++/CX documentation or an example/application are lines like
Foo ^foo = ref new Foo();
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 “automagically”. The “ref new” keyword means that the user wants to create a new “Ref class” (see Ref classes and structs in Type System (C++/CX)), which means that it is copied by reference and memory management happens by reference count.  So there isn’t much magic involved in that line; it only tells the compiler that the object’s memory can be managed by reference count and the user does not have to delete it himself.

Basically C++/CX is just what its name tells us it is – 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 “problems” are actually solved in C++11 (by the way, auto foo also works in the example above), but that is what was decided for Windows Runtime development.

Use of C++/CX inside Qt’s WinRT port

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’s WinRT port, but there are some reasons why we try to avoid them.

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’t use CX might not be especially beautiful, there are no non-default things which might obscure it even more.

Another issue is that Qt Creator’s code model cannot handle these extensions (yet). You don’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 & deployment) are our first priorities.
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 ;) ).

Problems and challenges of not using C++/CX

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.

Namespaces

The namespaces given in the documentation are always the same for the CX usage of the classes,  just with “ABI” added as the root namespace. So for StreamSocket, Windows::Networking::Sockets becomes ABI::Windows::Networking::Sockets. Additionally, you probably need Microsoft::WRL (and also Microsoft::WRL::Wrappers). WRL stands for “Windows Runtime C++ Template Library” and is used for direct COM access in Windows Runtime applications – but you will also need its functionality when omitting CX (for creating instances for example).

Creating instances

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 ‘I’ in front of the class name so that StreamSocket becomes IStreamSocket. As these interfaces are abstract classes, they cannot be instantiated directly. First of all, you have to create a string which represents the class’s classId.
HStringReference classId(RuntimeClass_Windows_Networking_Sockets_StreamSockets);

These RuntimeClass_Windows… constructs are defined in the related header files and expand to strings like “Windows.Networking.Sockets.StreamSocket” for example. The way objects can be instantiated depends on whether the class is default constructable or not. If it is, ActivateInstance can be used to obtain an object of the type you are after.

IStreamSocket *streamSocket = 0;
if (FAILED(ActivateInstance(classId.Get(), &streamSocket)) {
// handle error
}

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

IInspectable *inspectable = 0;
if (FAILED(RoActivateInstance(classId.Get(), &inspectable)) {
// handle error
}
if (FAILED(inspectable->QueryInterface(IID_PPV_ARGS(&streamSocket)))) {
// handle error
}

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 GetActivationFactory with the appropriate class Id. One example of a class like that would be HostName:

IHostNameFactory *hostnameFactory;
HStringReference classId(RuntimeClass_Windows_Networking_HostName);
if (FAILED(GetActivationFactory(classId.Get(), &hostnameFactory))) {
// handle error
}
IHostName *host;
HStringReference hostNameRef(L"http://qt-project.org");
hostnameFactory->CreateHostName(hostNameRef.Get(), &host);
hostnameFactory->Release();

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.

Calling static functions

For classes which have static functions there is an extra interface for these functions. These interfaces are marked by “Statics” at the end of the “basic” interface name and can also be obtained by using GetActivationFactory. One example would be IDatagramSocketStatics which contains GetEndpointPairsAsync for example.

IDatagramSocketStatics *datagramSocketStatics;
GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &datagramSocketStatics);


IAsyncOperation<IVectorView *> *endpointpairoperation;
HSTRING service;
WindowsCreateString(L"0", 1, &service);
datagramSocketStatics->GetEndpointPairsAsync(host, service, &endpointpairoperation);
datagramSocketStatics->Release();
host->Release();

The endpointpairoperation defines the callback(s) for this asynchronous function, but that topic could be covered in another post. The interesting parts here are how the datagramSocketStatics pointer is filled by calling GetActivationFactory and the actual call to the static function by datagramSocketStatics->GetEndpointPairsAsync(...).

ComPtr

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
IStreamSocket *streamSocket
would become
ComPtr<IStreamSocket> streamSocket.
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 “streamSocket->” but one would have to call “streamSocket.Get()->”. Thus we decided not to use ComPtr but keep using “normal” pointers. All you have to do is to remember to call “Release” as soon as you are done with the pointer.

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.

Visual Studio Add-In 1.2.1 for Qt 5 Released

Published Thursday 11, 2013 | by Tuukka Turunen

It has been a busy week – 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.

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.

Highlights of Visual Studio Add-In 1.2.1 include:

  • Qt Quick project wizard, QML keyword highlighting and QML file preview in the commercial version
  • Visual Studio 2012 debugger visualizers for Qt 5 classes
  • Possibility to use Qt 4 Add-in and Qt 5 Add-in in same computer (in turns)
  • Incorrect Qt 5 library/module names and include paths fixed

You can find the detailed list of changes to the Visual Studio Add-in 1.2.1 in the change log.

Using Qt 5 VS Add-in and Qt 4 VS Add-in together

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.

Qt Quick support in the commercial version

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.

Get it from the Customer Portal of Qt Project Downloads

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 Customer Portal. The open-source version can be downloaded from the Qt Project. If you are not a commercial licensee, but want to try out the additional functionality, you can try our the commercial version with our free 30-day evaluation.

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.

Port to Windows Runtime kick-started

Published Friday 15, 2013 | by

With Windows 8, Microsoft introduced a new platform, the Windows Runtime. On the desktop, the operating system provides 2 modes:

Classic mode: This mode shows the familiar Windows desktop known from Windows 7 (with the exception of the start menu), in which traditional applications using the Win32 API run. No modifications are required for Qt 4 or Qt 5-based applications to run in this mode.

Modern UI (formerly known as Metro mode): This is a new type of user interface intended for tablet and phone UIs on which Windows Store Apps run. These applications use a new API called  Windows Runtime, which is based on the Component Object Model (COM). A similar API exists on Windows Phone 8.

Research work on how to port Qt 5 to use Windows Runtime was started by Andrew Knight from Digia and is visible in the winrt branch of the qtbase repository. Recently, further contributions by Kamil Trzciński were added to it (check out his blog). Now, with Qt 5.0 out of the door, we would like to kick off this platform port. This completes our cross-platform offering in addition to the ports for the widely used Android and iOS platforms.

We plan to continue development in this branch, aiming for as complete as possible port. Technical details can be found at here.

The first milestone is to get simple raster windows to be drawn on the screen. Later, we will investigate porting ANGLE to get OpenGL ES 2.0 suppport required for QML2.

Similar to the android branch, the idea is not to merge the branch, but later look at it and apply its changes to the dev branch.

To play with the branch, create an environment with a x86 MSVC2012 compiler and configure Qt with:

configure -nomake examples -nomake tests -developer-build -opensource -confirm-license -xplatform winrt-x86-msvc2012

We are also planning on creating a Qt Creator plugin to support deployment. Andrew Knight has already started on it in the winrt branch of his Qt Creator repository.

The work has still the “Research” status, so, we are not able to give any release dates yet. We aim to have something ready for the 5.2 release. However, since the development happens in the public winrt branch, the current state is always visible and it is easy to participate.

Contributions and help are warmly welcome.

Happy Hacking!

Visual Studio Add-In 1.2.0 for Qt 5 Released

Published Wednesday 19, 2012 | by Tuukka Turunen

This week we released Qt 5.0 with Qt Creator integrated into the package. Today I have good news for those who prefer to use Visual Studio. We have now released new Visual Studio Add-In 1.2.0 for Qt 5. In addition to supporting Qt 5 it provides some additional goodies such as support to Visual Studio 2012.

The new Visual Studio Add-In 1.2.0 supports Visual Studio 2012, 2010 and 2008 for developing Qt 5 applications. It understands the new modularized structure of Qt 5, and includes the new documentation. Functionality and requirements are otherwise similar as with the previous Add-In, so you will need at least Visual Studio Professional to use it.

Highlights of Visual Studio Add-In 1.2.0 include:

  • Project creation wizards updated to follow Qt 5 module structure
  • Project settings form updated to follow Qt 5 module structure
  • Help documents updated to Qt 5.0
  • Support for Visual Studio 2012, 2010 and 2008
  • Parameter passing to lupdate fixed (QTVSADDINBUG-131)

You can find the detailed list of changes to the Visual Studio Add-In 1.2.0 here.

One thing to note is that there is no Qt 4 project creation wizards and project settings in the Qt 5 Visual Studio Add-In, and unfortunately it is currently not possible to use both the Qt 4 and Qt 5 Visual Studio Add-Ins simultaneously. We plan to release an updated version of the Qt 4 Add-In during Q1/13 to address this issue.

The new Visual Studio Add-In 1.2.0 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 Customer Portal. The open-source version can be downloaded from the Qt Project.

I hope you enjoy developing Qt 5 applications with Visual Studio. Please provide us with feedback either through the commercial support or via the Qt Project mailing lists.

PS. I changed the release date visible in the blog so that Qt 5.0.0 stays at the top. The real date of this release is 21st December 2012.

 

Graphics on Windows from a different angle

Published Wednesday 24, 2012 | by Jason Barron

With Qt 5 we are making the bold move of making OpenGL 2.0 a requirement for using  QtQuick2. There are several challenges with this new requirement, many of which have been discussed on the blogs and mailing lists already, but today I want to talk about one issue in particular and that’s OpenGL on Windows.

Microsoft has included OpenGL in Windows since Windows 98 (or earlier?), however the initial version was a software implementation and only supported version 1.1 of the API. Over time, the implementation has been improved so that today it is implemented as a wrapper on top of Direct3D. This is great, but unfortunately the version of the API that is supported has remained the same and that means it is not sufficient for running QtQuick2 or even Qt’s GL paint engine. You can insert your own conspiracy theory about why Microsoft has let OpenGL stagnate on Windows, but every theory will likely involve Direct3D. D3D is a component of DirectX that offers similar functionality to OpenGL. It is most commonly used by game developers to target desktop Windows and also XBox, but is also used by CAD applications.

Typically when a developer wants to run or develop something that requires OpenGL on Windows, the first place they go is to their hardware vendor’s website and download the latest drivers from Intel, NVidia, AMD or whoever.. This is fine, but can be somewhat inconvenient for end users of OpenGL applications. We wanted to avoid this problem with Qt applications so deployment would essentially be the same as with Qt 4 (but with possibly more DLLs). Luckily for us, we weren’t the first people to experience this problem. Most browsers these days (except IE) are supporting WebGL out of the box. WebGL is a 3D canvas API available through Javascript. The API is based on OpenGL ES 2.0 and the shader language is GLSL ES. So how can browsers offer an OpenGL 2 API without requiring new drivers? The solution is called the ANGLE (Almost Native Graphics Layer Engine) project.

ANGLE is a BSD licensed project that implements the OpenGL ES 2.0 API on top of DirectX 9.0c. In addition to this, it also implements the EGL API and contains a shader cross compiler that takes GLSL ES code and converts it to HLSL which is the shader language used in DirectX. So ANGLE allows us to essentially run the Qt Scene Graph on top of DirectX without modifying any of our code. Friedemann has already done most of the hard work by adding support for GLES2 and EGL into the Windows platform plugin and as a result it has been possible to use Qt 5 with ANGLE for quite some time now. However, to make this experience more painless, we are including ANGLE in Qt’s 3rdparty directory and making it the default OpenGL configuration on Windows.

For QML applications and lightweight OpenGL apps, you can use this new configuration to deploy your apps without requiring your end users to install new graphics drivers. On the other hand if your application requires full desktop OpenGL, then it’s simply a matter of configuring Qt with “-opengl desktop” and you get the same behavior as before.

One additional benefit of using ANGLE on Windows is that our graphics pipeline and multimedia pipeline are now based on the same underlying technology (DirectX) so we can take some shortcuts to get video frames into the Scene Graph more efficiently. Taking this one step further, Windows Vista introduced a new driver model called WDDM and one of the features here is that DirectX surfaces can now be shared across processes. This little feature will come in handy for our WebKit2 work which has seperate processes for the web renderer and the ui. All of this goodness might not make it into the 5.0 release, but it’s  all in progress so hopefully it makes an appearance soon!

Native-looking text in QML 2

Published Wednesday 8, 2012 | by Eskil Abrahamsen Blomfeldt

One of the comments in Morten’s blog post about desktop components in QML 2 was that the text looks out of place on Windows. This is because QML 2 uses a custom rendering mechanism called “distance fields” for the text which allows hardware accelerated drawing of transformable text. Yoann blogged about this a year back.

This is what the distance field text looks like in the desktop components:

Qt 5 desktop components rendered with distance field text

Qt 5 desktop components rendered with distance field text

While distance field text is perfect for UI components for which you want smooth animated movement, rotations and zooms, it will look different from the text rendered by native applications on Windows. This is especially true because the distance field text renderer does not apply grid-fitting hints to the glyphs, whereas this is the standard on Windows. Note that on e.g. Mac OS X, the standard is to draw the text without applying grid-fitting, so the distance field text will not look as out-of-place on this platform.

Grid-fitting means that the shapes of the glyphs are modified for the current font size and device resolution in order to make them look sharper. This is done by moving control points around e.g. to avoid features of the glyph being positioned between two pixels, which would cause the anti-aliasing to fill both those pixels, partially blending the font color with the current background in order to give the visual impression that the glyph touches half of each pixel. A sharper image can be made if the feature fills exactly one full pixel instead. The mechanism is especially effective for low pixel densities and small font sizes.

The downside of grid-fitting, in addition to certain typographical consequences, is that the text and its layout becomes unzoomable. This is because the modifications to the glyphs happen based on the target size of the glyph on screen. When you scale it, the shapes of the glyphs will change, making the shapes wobble, and the metrics of the text will also change, requiring a relayout of the text. If you zoom on a web page, for instance, the paragraph you wanted to see up close might have moved around significantly by the time you get to a text size you can comfortably read, and then you will have to pan around to find it again.

When using distance fields, we will render the glyphs without grid-fitting to make them scalable. An additional convenience of this is that we only have to cache the shape of each glyph once, whereas grid-fitted glyphs have to be cached per size. This saves some memory and also makes effects like animated zooms a lot faster, since the glyphs can be redrawn at every zoom level using the same distance field cache.

Here’s what the previous screen shot looks like if you scale the push button by a factor of two:

Distance field rendered text with zoomed button

Distance field rendered text with zoomed button

But while the distance fields have many advantages, they don’t cover the need to have applications that look like they belong together with other Windows applications. For an application using desktop components, you can imagine this being a more important goal than having smoothly transformable text items. On a desktop machine running Windows, the memory cost of a glyph cache might not be the primary concern either. I’ve been meaning to fix this for a while. The code for drawing text through the system back-end instead of the distance field renderer has been in the scene graph since the text nodes were originally written, but so far there has not been any convenient way for developers to choose it over the default. With change 6a16f63df4a51edee03556f841d34aad573870f2 to Qt Declarative, this option has now been added. On any text component in QML, you can now set the renderType property to NativeRendering in order to use the system back-end to rasterize the glyphs instead of Qt. This will apply to any platform, although it will have the largest effect on Windows or on Linux when hinting is turned on in the system settings.

Text {
    text: "Some text"
    renderType: Text.NativeRendering
}

I’ve added the branch qt5-nativetext to the desktop components repository where the effect can be tested. The components in this branch will use the distance field renderer by default, but by setting the DESKTOPCOMPONENTS_USE_NATIVE_TEXT environment variable to “1″, you will be able to see the difference. Running qmlscene on Gallery.qml with this environment variable set yields the following result:

QML 2 widgets with native-looking text

QML 2 widgets with native-looking text

So the appearance is crisper and the text fits in on the platform, but scaling the text does not give the nice results we had before, and will instead look pixelated. See the following screen shot for comparison:

The effect of zooming native-looking text

The effect of zooming native-looking text

So the choice is yours. If you’re targeting Windows and you want your application to look like a standard, native Windows application, you can use the renderType property to achieve this. If you want the lean, flexible and transformable text of Qt, leave the property unaltered.

Desktop Components for Qt 5

Published Wednesday 6, 2012 | by

According to this recent poll, Desktop Components is one of the most desired add-ons for Qt Quick 2. To help make this a reality we have moved the Desktop Components project over to codereview.qt-project.org and are now accepting contributions, for both the Qt Quick 1 & 2 versions. Several good contributions have been made already, and at the same time a few of us here at Nokia have been working on bringing the components up to speed on Qt 5.

The components are hosted as a Qt Playground project and won’t be a part of the 5.0 release. They will instead have separate releases, most likely in sync with the Qt 5 releases. At some point we will look at making them a proper part of Qt 5.

Project details are available at the wiki. Here’s a quick getting started script:

git clone https://git.gitorious.org/qtplayground/qtdesktopcomponents.git qtdesktopcomponents
git checkout qt5
qmake
make install
cd qmldesktopviewer; qmake; make; cd..
qmldesktopviewer/qmldesktopviewer examples/TopLevel.qml

Do you want to contribute? There are several open tasks, including:

  • Add a menu bar component
  • Add support for mouse wheel events
  • Style polishing on your favorite platform
  • Update: Tree View!

Finally, screenshot time (all on Qt 5):

Windows

Mac OS X

KDE

GNOME

Qt VS Add-in 1.1.10 released

Published Monday 19, 2011 | by Jörg Bornemann

Together with Qt 4.8.0 we’ve released version 1.1.10 of the Qt Visual Studio Add-in.
This release contains multiple bugfixes and improvements.
The full changelog is available here.

You can get it here:
http://qt.nokia.com/downloads/visual-studio-add-in

If you find bugs, please report them in our bug tracker:
https://bugreports.qt.nokia.com/

Note: Qt VS Add-in 1.1.10 will be the last release done by Nokia.
We’re happy to announce that the project has been handed over to Digia, Qt Commercial (http://qt.digia.com/) who offers commercial support and will take over future maintenance.

Qt SDK 1.1 released

Published Wednesday 4, 2011 | by Maurice Kalinowski

Today we announce the release of the Qt SDK 1.1. It has been a long way towards this point, which many of you have been waiting for. Before going into any details, here are the download links:

Platform Online Installer Offline Installer
Microsoft Windows 15MB 1,5GB
Linux 32bit 23MB 687MB
Linux 64bit 23MB 690MB
Mac OS-X 12MB 680MB

You can also get it on the Forum Nokia web pages here. Also note that if you have installed a previous version of the Qt SDK, you will receive an update notification and be able to download all changes via the maintenance tool.

Rather than talking about the minor changes between the release candidate and the final version, let me focus on what the Qt SDK 1.1 contains and what the major improvements compared to the Nokia Qt SDK 1.0 are.

  • This is the first Qt SDK that allows you to create Qt 4.7 based applications and publish them on the Ovi Store, including Qt Quick applications.
  • The Qt SDK 1.1 unifies the different SDKs we had before. That way it aims at desktop as well as mobile developers, which helps you to try out new platforms for your application and easily port it.
  • Qt Mobility 1.1 is a major step in our offering for mobile applications. Combined with the Qt Quick binding it offers it will allow you to create really powerful and rich applications.
  • Qt Creator 2.1 provides you a development environment with all the tools and features you need for creating an application.
  • Qt Simulator 1.1 has received many updates to support the latest Qt and Qt Mobility version as well as a simulated environment for additional use-cases. Additional models have been added as well.
  • With the Symbian Complementary Package one can install native APIs to be used in your development environment for Symbian^3 as well. This simplifies the development setup in that way, that you do not need the platform SDK anymore for using native functionality.
  • The Remote Compiler allows you compile your project for all Nokia supported platforms, also from a Linux and Mac development environment.

 

To visualize the list of supported APIs and platforms, please check this table:

Desktop Qt Simulator Symbian^3 Symbian ^1 Maemo5
Qt 4.7.3 4.7.3 4.7.3 4.7.3 4.7.0
Qt Mobility 1.1.3 1.1.3 1.1.3 1.1.3 1.0.2

The target support for the different host operating systems can be listed as following:

Target Microsoft Windows Linux Mac OS-X
Desktop X X X
Qt Simulator X X X
Symbian^3 X (Remote Compiler) (Remote Compiler)
Symbian^1 X (Remote Compiler) (Remote Compiler)
Maemo5 X X X

If you encounter problems, please file a bug report at http://bugreports.qt.nokia.com .

In addition we would like to point out, that the Qt SDK will receive further updates in the future. Qt Creator 2.2 is almost finished and will be included when it is done. Also coming devices will be supported and feature updates will be provided to your existing installation, not requiring you to reinstall a new SDK.

  1. Pages:
  2. 1
  3. 2