Using a LeapMotion for Qt inputs

We are still working on our project Tepee3D and although we have not yet reached the popularity we hoped too, this project has allowed us to work on many interesting aspects, one of which is adding LeapMotion inputs to our application.
For those of you who don’t know what a LeapMotion is, it is a small sensor about the size of a lighter that you can use to track hands movement in space.
You can find more information about it on the LeapMotion web site.

Leap Motion

Leap Motion (Photo credit: khawkins04)

There are several ways to interact with an application using the LeapMotion sensor. However as Tepee3D has mainly been focused on touch and multitouch inputs, one simple way to use the LeapMotion was to convert fingers 3D position in Qt touch points so that they could then be used in QTouchEvent or QMouseEvents without having to rewrite the entire application.

For the specific gestures (swipe, circle, screentap, keytap) offered by the Leap SDK, creating a custom QtQuick/QWidget element that will handle these is a clean way to include the additional inputs of the LeapMotion without compromising touch and mouse inputs on platforms that do not have access to a LeapMotion.

Though originally developed for Tepee3D, this library is made to work with any Qt/QtQuick application.

Those not interested by the code explanation below, you can directly obtain the sources and a sample project here.
Continue reading

Building a remote compilation service for various Qt targets

Targeting many platforms with the same code base is the reason why many of us choose to use Qt. In the Tepee3D project, we would like to attract people to develop widgets using Qt and Qml. Currently, Tepee3D runs on 8 platforms and asking developers to compile their widgets for each of these platforms would be a lot of troubles. In case a new platform is added, they would have to find a way to either crosscompile Qt for that platform or have a dedicated system for it on which to compile it.

On the other hand, building a remote compilation service where developers can request their widget to be build on a given platform would solve that issue. Using Jenkins would be a solution but setting up a dedicated queueing system where build requests can be distributed to nodes that are configured to build a given platform wouldn’t be much harder.

Continue reading

Deploying Qt Applications on Linux and Windows

One of Qt’s greatest strength is also one of its major weakness. The code once deploy everywhere motto is nice when coding but once you reach the deployment step, it gets a whole different meaning.

As we are getting ready for the alpha release of Tepee3D (and almost a week late), I thought I’d post about what made us lose time.

Before creating installers for each of the platforms you are targeting, you have to run your application without the whole Qt environment on each of those.

There are two ways two proceed, either by compiling Qt statically against your executable or by delivering the necessary Qt libraries with your application.

Continue reading

The power of qobject_cast

One feature we wanted to implement in Tepee3D was a Services Manager that would allow various classes to interact with Services provided through shared libraries. Those services are axed toward database management, web services access and platform specific interactions such as posting notifications on Android and so on. That mechanism allows us to add new features during the course of the developement without having to modify the main application’s structure or void any previous work. Continue reading

A practical case : exposing Qt C++ Models to Qml

When it comes to manipulating data within QtQuick, exposing a Qt C++ model is often a good path to take. It allows you to easily separate the logical part of your application from the UI. In addition your models can interact with a SQL database and be processed through some resources heavy filters while still reflecting the changes smoothly onto the UI. Shortly, it is a way of combining the best of both world, the power of C++ with the ease of presentation of QtQuick. Continue reading

Tepee3D

As an Epitech student, a part of our fourth and fifth years has to be spent developing an innovative idea. Along with some other students we gathered around thinking about various project ideas. At the time we were developing the Tepee project on our spare time. Tepee was a multi-platform application developed with Qt and QtQuick that aimed at providing users a same interface across various devices. With that interface, users were able to post notes, add appointments in a calendar, post and retrieve files from an ftp server, save and visit bookmarks with the integrated web browsers… In addition, all those data could be synced so that if you had added a new bookmark on your phone, you would also have it on your desktop the next time you used the application. Continue reading