[C++/QT] Probleme de resize de Layout dans un custom widget

RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016 - 14 janv. 2009 à 18:17
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016 - 18 févr. 2009 à 02:08
Bonjour,

J'ai créé un composant perso utilisant des layouts verticaux et horizontaux.
Grosso modo j'ai un label pour faire le fond de mon composant, dessus j'ai un QVBoxLayout et qui contient 2 QHBoxLayout avec quelques labels dedans.
J'ai donc créé le grahpisme dans QtDesigner avec une taille globale de 600x100 nous dirons pour l'exemple. Le widget de base, le label et le QVBoxlayout sont donc tous à cette même taille dans QtDesigner.

Dans la fonction eventPaint() :
ui.QVBoxLayout->setGeometry(0,0,width(),height());
ui.QHBoxLayout->setGeometry(0,0,width(),height() / 2 );
ui.QVBoxLayout->setGeometry(0,height() / 2,width(),height() / 2);
ui.LabelFond->setGeometry(0,0,width(),height());

Je resize donc mes 4 composants, étant donnée que je suppose qu'il n'est pas nécessaire de resizer le widget lui-même.
Le problème est que quand j'importe mon compostant dans QtDesigner et que je le crée dans un MainWindow.
Lorsque je le resize, le resize fonctionne bien lorsque que je lui diminue de taille par rapport à la taille de création (600x100) mais quand je veux aller au-delà (800x200 par ex), un phénomène bizarre se produit.
Tout semble bien suivre le resize fait avec la souris, sauf que tous mes objects contenus dans les QHBoxLayout s'éffacent petit à petit lorsque l'on va au delà de la taille originale (600x100) excepté le Label, lui qui est affiché convenablement et se resize normalement. Le parent du Label est le widget directement.
C'est donc comme si le QVBoxLayout  conteneur ne se resizait pas alors que les QHBoxLayout semblent se comporter convenablement car mes objet contenus dedans se déplacent normalement. Le problème semble du au QVBoxLayout  qui ne semble pas suivre le resize et qui cache du coup tout ce qui va derrière.

Je comprend pas très très bien pourquoi ?? et je bloque bien là dessus. Si quelqu'un à une idée ?

Merci

Rv

Modification  du message :
J'ai simplifié le problème en mettant un grid layout et les résultats sont les même. rien ne vaut quelques chose de concret, je vous joins donc un zip contenant quelques saisies d'écran de mon problème et surtout les sources et les binaires (windows/XP/32) (pas de virus connu promis)
J'ai vraiment l'impression que c'est un bug car tous les widgets qui doivent être redimensionnés (les 2 fils du Widget) le sont dans la fonction paintEvent, ils le sont convenablement, sauf que la zone de mis à jour graphique semble se limiter à la taille originale du gridLayout

Je suis vraiment bloqué là, j'essaie de trouver un exemple de widget qui utiliserait un layout et qui serait ensuite importé en tant que plugin de QtDesigner mais je trouve pas vraiment... :o(

[url]http://rvlebars.free.fr/files/bug.zip/url

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

1 réponse

RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016
18 févr. 2009 à 02:08
rebonjour

j'ai fnialement eu la réponse à mon problème, sur ce post de QtFr :
http://forum.qtfr.org/viewtopic.php?id=8007

Par contre, le piste.ui qu'il m'a modifier, je n'arrive absolument pas à le reproduire par oi-même. Je n'arrive pas à garder un label en background, superposer des objets par dessus et utiliser un gridlayout sur la composant principal. A chaque fois que je clique pour utiliser le gridlayout de la fenêtre, j'ai mon label de fond qui se loge dans une zone de ma fenêtre comme tous les autres, et je n'arrive pas à trouver comment cette personne à fait pour le garder en background et l'intgérer tout de même au grid layout de la fenêtre
n'hésitez pas à télécharger le piste.ui pour illustrer mes propos.

Si quelqu'un a la réponse ?? là j'avoue ça fait plusieurs semaine que je sèche et je n'arrive pas à le recontacter pour savoir.

Merci
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
0
Rejoignez-nous