Developpez.com - Rubrique Qt

Le Club des Développeurs et IT Pro

QSkinny, une bibliothèque C++ pour afficher une interface par Qt Quick

Tout en gardant une API proche des Qt Widgets

Le 2018-10-01 05:12:16, par dourouc05, Responsable Qt & Livres
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 :
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.
  Discussion forum
0 commentaire