Forum Programmation.autre Qt : positionnement "proportionnel" d'un bouton

Posté par  . Licence CC By‑SA.
Étiquettes :
1
24
avr.
2019

Bonjour,
je cherche à faire un truc assez simple avec Qt :
J'ai une fenêtre avec une image comme fond d'écran, et le fond d'écran se redimensionne avec la fenêtre. Jusque là tout va bien.
Je voudrais rajouter un bouton qui se positionne à un endroit précis de l'image, et qui se redimensionne aussi si la fenêtre change de taille (à peu près, on n'est pas au pixel près).
J'ai plus ou moins trouvé une solution assez compliquée avec un gridlayout et des spacers, je me demandais s'il n'y avait pas une solution plus simple ?
Je préfèrerais que ce soit via Qt Designer et pas sous forme de code car je suis amené à bosser avec des gens qui ne codent pas.
Mais toute solution est la bienvenue quand même.
Merci

  • # Pas mieux, ou presque

    Posté par  . Évalué à 2.

    Hello,

    J'avais commencé une réponse compliquée, textuelle, vu que je ne sais pas inclure des images dans un post, pas autrement qu'en pointant sur un serveur, et j'ai la flemme de mettre tout ça en branle …

    Donc, j'essaye la v2 :

    • au premier abord, je ne vois pas plus direct que Grid Layout (3 lignes, 3 colonnes, ajustement des proportions) + spacers + adaptation de la sizePolicy du bouton

    • pour une parfaite intégration dans Qt Designer, il est aussi possible d'écrire un plugin. Du point de vue utilisateur, ce sera du drag & drop d'un nouveau widget. Du point de vue codeur, ce sera une autre tambouille … Ça fait longtemps que j'en ai pas fait, mais il me semble qu'un plugin, c'est toujours un peu laborieux à écrire. Et ensuite, il faut trouver où le placer dans l'OS (Win ? Linux ? Mac ?) pour que Qt Designer le trouve et permette de l'exploiter (il apparaîtra avec les widgets standards, les bouton, les labels, les edits …). Et du coup, une update du plugin devient aussi laborieuse, et en plus, il faut redémarrer QtCreator ou QtDesigner à chaque modif (mise au point pénible). Ceci étant dit, j'imagine un widget dérivant de QPushButton (ou autre) à placer n'importe où dans la fenêtre, sans layout le concernant, et qui changerait sa position et sa taille dès que le parent et redimensionné.

    • entre les deux, il est possible d'utiliser la promotion de widget. On aurait toujours la dérivée de QPushButton, mais tout se joue en quelques manip dans le Designer. Ajouter un Widget, le promouvoir vers la classe dérivée. Mais on perd le WYSIWYG, on se retrouve avec un pavé vide (le QWidget de base), la promotion se faisant au runtime

    D'autres solutions ? Je ne prétends pas tout savoir de Qt, loin de là, et j'ai peut-être de mauvaise habitude aussi …

    • [^] # Re: Pas mieux, ou presque

      Posté par  . Évalué à 3.

      Regarde du côté des ressorts (stretch) en mettant les bon coef. ça doit faire ce que tu veux…

      voir là.

      Tu met dans un VBoyLayout un stretch dessus, un HBoxLayout, un stretch dessous.
      Dans le HBoxLayout un stretch gauche, bouton, strech droite.

      C’est des souvenir ;-)

      J’espère avoir pu t’aider.

      • [^] # Re: Pas mieux, ou presque

        Posté par  . Évalué à 1.

        merci à tous les deux pour vos réponses, effectivement j'ai réussi à faire ce que je veux. Mon bouton n'est pas encore bien placé, mais je vais mesurer ça sous gimp pour calculer les bons coeffs à mettre, et ça va le faire nickel !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.