IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

QSkinny, une bibliothèque C++ pour afficher une interface par Qt Quick
Tout en gardant une API proche des Qt Widgets

Le , par dourouc05

477PARTAGES

10  0 
Qt Quick est la technologie déclarative d’interfaces pour Qt. Cependant, certains développeurs ne l’apprécient guère à cause du langage de programmation : quand Qt utilise du C++, Qt Quick force à apprendre JavaScript et un langage spécifique, QML. Néanmoins, Qt Quick n’a pas que des désavantages : cette manière d’écrire des interfaces permet de gagner en efficacité, mais parfois aussi en performance, l’entièreté du rendu pouvant être accéléré par le matériel.
C’est l’origine du projet QSkinny : utiliser Qt Quick uniquement en C++, avec un API similaire au widgets. On peut ainsi gagner en performance et en facilité d’implémentation d’animations. Même s’il est théoriquement possible d’écrire une application Qt Quick uniquement en C++, la tâche est fastidieuse, car les classes ne sont pas prévues pour cet usage. QSkinny vient changer tout cela.

Un code QSkinny ressemble fortement à un code Qt Widgets :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char** argv)
{
    QGuiApplication app(argc, argv);
    QskWindow window;
    window.resize(200, 200);
    auto box = new QskLinearBox(Qt::Vertical);
    auto button = new QskPushButton("push me", box);
    auto label = new QskTextLabel("label", box);
    window.addItem(box);
    window.show();
    return app.exec();
}
Pourtant, tout se passe différemment, en coulisses : QSkinny génère un graphe de scène Qt Quick, qui est ensuite affiché à l’aide d’OpenGL ou d’un autre moteur de rendu.

L’implémentation des styles peut se rapprocher des Qt Quick Controls 2. L’apparence de chaque contrôle est gérée par une membrane (skinlet), entièrement exécutée dans le fil d’exécution du graphe de scène.
La bibliothèque QSkinny est actuellement utilisée dans un projet automobile décrit comme “majeur”, ce qui implique une série de contraintes en performance et en fiabilité, mais pas tellement en documentation. Le mélange de QSkinny et de code QML, en théorie facile à réaliser, n’est donc pas très peaufiné, n’étant pas un besoin pour ce projet. Il n’empêche que les chiffres en performance sont “très bons”, notamment au niveau des temps de démarrage (vu qu’il ne faut pas compiler le code QML et JavaScript).

Source : Meet QSkinny, a lightweight Qt UI library.

Une erreur dans cette actualité ? Signalez-nous-la !