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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Comment resizer un widget central indépendamment de la taille des widgets adjacents ?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut Comment resizer un widget central indépendamment de la taille des widgets adjacents ?
    Bonjour,

    J'ai une appli dans le style de Qt Main Window demo (demos/mainwindow/), c'est-à-dire que j'ai un widget central dans lequel je réalise un rendu 3D et j'ai d'autre widget dockable me servant entre autre au paramétrage de mon appli.

    Après chargement d'une scène, je voudrais pouvoir passer mon widget central dans la bonne résolution 1024x768 par exemple sans forcément passer par de nombreux calculs du style taille de la fenêtre principale - taille des fenêtres dockables présentes.

    En faisant par exemple un setResolution(1024, 768), je voudrais avoir la taille de mon widget ajusté en gardant la taille des widgets dockables intacts.
    Comme le résultat de cette opération voit la taille de la fenêtre principale modifiée, je crains qu'il ne soit pas possible de faire ça indépendamment de la taille des autres fenêtres.

    Pour l'instant, j'ai réussi à resizer le widget central en 1024x768 mais au détriment des widgets dockables qui sont diminués de taille alors que celle de la fenêtre principale reste inchangée.

    J'ai bon espoir dans les capacités de Qt pour réaliser ça de manière simple mais là je sèche

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Salut,

    un QWidget::resize(w,h) tout simple fait ce que tu veux non ?

    G.

  3. #3
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    Et bien non justement cela ne fonctionne pas.
    Car le widget que je souhaite resizer n'est pas la fenêtre principale mais le widget central qui est une fenêtre enfant de la fenêtre principale.

    QWidget::resize(w,h) fonctionne bien sur la fenêtre principale mais pour avoir une taille de 1024x768 sur la fenêtre réalisant le rendu, je serais obligé de faire QWidget::resize(1024+w,768+h) où w et h serait la taille des fenêtres dockables présentes, opération que je cherche à éviter car ces 2 valeurs ne sont pas forcément simple à calculer

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Peut être en mettant la sizePolicy des autres widgets à "fixed" avant de redimensionner ton widget central ?

  5. #5
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    Encore mieux QWidget::resize(1024,768) n'a aucun effet sur la fenêtre fille et pourtant QWidget::size() retourne bien 1024x768. C'est à ni rien y comprendre

    Citation Envoyé par YoniBlond Voir le message
    Peut être en mettant la sizePolicy des autres widgets à "fixed" avant de redimensionner ton widget central ?
    Je voudrais justement rester indépendant des autres widgets (qui sont dockables). Je n'ai pas envie de faire une sauvegarde de l'état général des wigets, opérer les changements puis restaurer l'état d'origine des autres widgets. Autant faire un truc dans ce goût là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      setUpdatesEnabled(false);
      // Tant que la fenêtre de rendu n'est pas à la bonne taille
      while (ui->_Renderer->width() < 1024)
        resize(width() + 1, height()); // resizer la fenêtre principale
      setUpdatesEnabled(true);
    J'aurais opté pour cette solution si le setUpdatesEnabled(false) faisait correctement son boulot. Je vois la fenêtre se resizer en dynamique

    Mon problème revient à notifier la fenêtre parent qu'une fenêtre enfant souhaite changer de taille et que la parent doit s'adapter. Je pensais m'en sortir avec QSizePolicy mais je ne vois pas comment ??

  6. #6
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Je ne suis pas sûr de comprendre, avec la dernière méthode dont tu parles, tes dockwidgets ne gardent pas forcément la même taille si ? Ça devrait dépendre de leur sizepolicy.

    Les sizePolicy servent à indiquer comment le parent doit agencer ses enfants, je ne pense pas qu'il y ait moyen d'indiquer au parent de s'agrandir avec ça. Je ne pense pas que tu puisses non plus modifier la taille de la fenêtre sans que ça influe sur tes dockwidgets, à moins d'explicitement les "bloquer".

Discussions similaires

  1. Taille du widget central
    Par saad.hessane dans le forum Débuter
    Réponses: 2
    Dernier message: 02/03/2011, 09h30
  2. [Qt Designer] Les widgets de QtDesigner ne sont pas des widgets ?
    Par contremaitre dans le forum Outils
    Réponses: 1
    Dernier message: 28/12/2010, 23h19
  3. Réponses: 2
    Dernier message: 11/03/2010, 14h14
  4. QTabWidget resize à la taille des widgets
    Par Gulish dans le forum Qt
    Réponses: 1
    Dernier message: 12/12/2008, 19h36
  5. Taille des widgets en fonction de la dimension de la fenetre
    Par flo_k dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 07/12/2008, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo