2010-08-16 3 views
2

Je travaille avec Qt (version 4.6 sur Windows XP 32 bits et la compilation dans Qt Creator 2.0.0) et essaye de faire fonctionner un QWizard.QWizardPages pour garder leurs propres tailles minimales

premier problème:

J'ai trois QWizardPages dans mon QWizard jusqu'à présent. Chaque page a un QVBoxLayout appliqué comme c'est la disposition. Ma première page a un très petit contenu (juste un QLabel à trois lignes) mais pour une raison quelconque, il y a un peu d'espace entre le QLabel et le volet "< Retour", "Suivant>" et "Annuler". Je souhaite que chaque page dispose de la quantité minimale d'espace blanc en fonction du contenu qu'elle contient. Dans le passé, quand j'ai mis un QVBoxLayout dans un QWidget sans parent (sa propre fenêtre), la fenêtre était toujours juste assez petite pour réparer le QVBoxLayout. Maintenant, il y a des espaces supplémentaires. Y at-il une option que je dois activer ou désactiver pour que les QWizardPages soient aussi petits que possible?

Deuxième (et la plupart du temps probablement lié au premier) problème:

De plus, ma deuxième page est beaucoup plus grande que ma première page, alors quand je reçois à la deuxième page et de revenir à la première page, la première page conserve la même taille que la deuxième page mais seulement après avoir visité la deuxième page. Est-ce un bug?

Le seul réglage de la géométrie que je fais est quand je fais un

move(50, 50); 

dans le constructeur QWizard. Pas de redimensionnement ... rien d'explicite. J'essaie de laisser les mises en page faire leur magie.

Merci pour votre aide à l'avance.

Répondre

1

Pour résoudre ce problème, je créé une classe d'enfants de QWizard et créé un emplacement privé comme celui-ci:

void ChildClass::fitContents(int id) 
{ 
    adjustSize(); // this automagically resizes the window to fit the contents 
} 

et fait l'avait appelé à chaque fois que la page a été modifiée, comme suit:

connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(fitContents(int))); 
Questions connexes