Bonjour,
Je développe des applications pour systèmes embarqués, tournant sous Linux (sans serveur X). J'utilise Qt for Embedded Linux 4.5 (Qt se charge de l'affichage avec le framebuffer). Mon appareil possède un écran tactile 4.3" en 480*272 px.
Ces applications peuvent être appelées depuis d'autres. De manière générale, une application particulière sert de "Bureau" et permet de lancer les autres, cette application est par ailleurs désignée comme serveur applicatif Qt (c'est l'application lancée avec l'option -qws). Je souhaiterai pouvoir effectuer dynamiquement des rotations de l'affichage sur certaines applications (pour passer du format paysage au format portrait), comme le ferait par exemple l'iPhone quand on l'incline de 90° en regardant une vidéo.
Mes recherches sont assez infructueuses pour le moment.
J'ai une piste qui consiste à installer le driver "transformed" (configure -qt-gfx-transformed). En lançant l'application avec les options "-qws -display transformed", il est possible d'appeler la commande static_cast<QTransformedScreen*>(QScreen::instance())->setTransformation(QTransformedScreen::Rot90) avant d'afficher une fenêtre pour effectuer la rotation.
Deux problèmes concernant cette solution :
- On est obligé d'être dans l'application serveur pour pouvoir utiliser cette commande.
- On doit utiliser cette commande avant d'afficher la fenêtre, il n'est donc pas possible de faire des transformation dynamiques.
L'autre piste à laquelle je pense est d'englober ma Vue (modèle MVC) dans un QGraphicWidget, et d'effectuer une rotation de celui-ci. J'ignore par contre si cette méthode est viable et "propre"...
Avez vous une idée pour parvenir au résultat souhaité de la manière la plus propre et fonctionnelle possible?
Partager