Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.3.1 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Comment orienter une fenêtre dans un sens spécifique pour une tablette

Pour les personnes intéressées, je vais montrer sous forme de code comment j'ai réglé le problème de pouvoir orienter, dans le bon sens, une fenêtre sur une tablette ou un smartphone. J'ai rencontré ce problème lorsque j'ai voulu testé mon application sur le simulateur par exemple une tablette 1280X800 et un smartphone de 800X1280.

Le code correspondant ci_dessous n'est pas très compliqué. Il fait toutefois à des classes que je viens de découvrir.

image

Le résultat est le suivant :
Tablette
image

Smartphone
image

Réponses

  • Je déplace la discussion.
  • Un petit copier coller du texte aurait été le bienvenu ;)

    Sinon c'est sympa de partager, je pense que je vais m'en inspirer (et si je pouvais éviter de tout retaper - et surtout de tout déchiffre, avec ma vue qui baisse c'est de moins en moins facile ;-)
  • Salut

    Je te communique le code que j'ai utilisé dans la publication sur play store de mon premier jeu nommé Inversion. Ce code est plus complet car il permet de calculer la diagonale en pouce de la tablette ou du smartphone utilisé. Ce point est important afin d'adapter ton programme à l'appareil comme par exemple la grosseur des lettres.

    L'idée générale est de mettre ta fenêtre principale dans une scéne que tu fais tourner en fonction du besoin. Attention le plus souvent une tablette ou un smartphone ont la rotation automatique de l'écran dans ce cas, les deux lignes à la fin :

    if (largeurBureau>hauteurBureau)
    pw->setRotation(-90);

    ne sont pas utiles. Cela oblige l'utilisateur à maintenir sa tablette dans le sens que tu souhaites.

    bon courage



    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);

    int largeurBureau(app.desktop()->width());
    int hauteurBureau(app.desktop()->height());

    QDesktopWidget *mydesk= QApplication::desktop();

    double largeurPixel(mydesk->widthMM());
    double hauteurPixel(mydesk->heightMM());

    double largeurBureauMM(largeurPixel*largeurBureau);
    double hauteurBureauMM(hauteurPixel*hauteurBureau);
    double diagonaleBureauPouce1(sqrt(largeurBureauMM*largeurBureauMM+hauteurBureauMM*hauteurBureauMM)/25400);

    double largeurBureauInches(mydesk->width()/mydesk->physicalDpiX());
    double hauteurBureauInches(mydesk->height()/mydesk->physicalDpiY());
    double diagonaleBureauPouce2(sqrt(largeurBureauInches*largeurBureauInches+hauteurBureauInches*hauteurBureauInches));

    double diagonaleBureauPouce((diagonaleBureauPouce1+diagonaleBureauPouce2)/2);

    int largeur(largeurBureau),hauteur(hauteurBureau);
    int rotation(0);

    if (largeurBureau>hauteurBureau)
    {
    largeur=hauteurBureau;
    hauteur=largeurBureau;
    rotation=1;
    }

    FenPrincipale fenetrePrincipale(largeur,hauteur,rotation,diagonaleBureauPouce);
    fenetrePrincipale.setMaximumSize(largeur,hauteur);


    QGraphicsScene scene(0);

    QGraphicsProxyWidget *pw= scene.addWidget(&fenetrePrincipale);
    pw->setPos(0,0);

    QGraphicsView gv;
    gv.setFixedWidth(largeurBureau);//
    gv.setFixedHeight(hauteurBureau);//
    gv.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    gv.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);


    //if (largeurBureau>hauteurBureau)
    //pw->setRotation(-90);

    gv.setScene(&scene);

    gv.show();


    return app.exec();
    }
  • Merci infiniment !
Connectez-vous ou Inscrivez-vous pour répondre.