Je dois placer plusieurs instances d'un Voici la sortie (incorrecte): p> voici le code: p> Qu'est-ce qui cause cela, et comment puis-je le réparer? BTW, j'ai essayé quelque chose de similaire avec des sous-classes régulières update: strong> Je pense vraiment maintenant que ceci est un bug. Je l'ai soumis au tracker de bogues QT ; Nous verrons ce que pensent les trolls. Dans tous les cas, dérivé de update 2: fort> les trolls à Qt ont fourni une solution (solution de contournement?); J'ai posté leur correctif comme une réponse ci-dessous. Je quitte leur équipe pour déterminer s'il s'agit d'une fonctionnalité ou d'un bug. Apparemment ne se comporte apparemment différemment sur le Mac. P> p> qpushbutton code> Sous-classe adjacente à l'autre. Pour une raison quelconque, les boutons se chevauchent les uns des autres lorsqu'ils sont peints. Un exemple simplifié du problème est ci-dessous.
p> qwidget code> (au lieu de qpushbutton code> sous-classes), et il n'y a pas de problème. C'est quelque chose de particulier à qpushbutton code>. P> qabstractbutton code> corrige le problème de dessin ... Je devais simplement ré-implémenter certaines des fonctionnalités dont j'avais besoin. P>
3 Réponses :
au lieu d'appeler SetSizePolicy () et Reimplément Sizehint (), je vais essayer de simplement appeler p>
dans votre constructeur. Cela devrait mettre à jour le sizehint seul. P>
J'espère que cela aide. P> setfixedSize (50, 25) code> p>
setfixedSize code> provoque le même comportement. Je commence vraiment à penser que ceci est juste un bug.
Votre code fonctionne bien pour moi. Je l'ai testé. Quelle version utilisez-vous? J'utilise qt 4.6.3 et ça va bien. P>
Je suis sur Mac OS X 10.6.4; Qt 4.7.0
Je pense que c'est le problème. Oui peut être c'est un bug.
La solution consiste à ajouter ce qui suit à la sous-classe: apparemment, il n'est nécessaire que sur la plate-forme Mac; Windows et Linux affichent la disposition comme prévu. P> p>
@ CHACHAM15: Vous pouvez l'ajouter au constructeur de la sous-classe, le mybutton code> dans mon exemple ci-dessus.
Je ne vois rien qui fixe la taille de votre bouton-poussoir. Vous spécifiez qu'il sera corrigé et le sizehint, mais pas la taille réelle. Le faites-vous dans votre code réel ou pas?
@Live: Mais n'est-ce pas le point de la qhboxlayout? N'est-il pas censé utiliser les indications de taille pour déterminer la taille idéale pour chaque widget? (Autoriser certains d'élargir / contracter si l'indice de taille et la stratégie permettent, par exemple.)
@Live: J'ai vérifié que les tailles sont ok. Si vous faites une taille Qdebug () << (), il est correct.
Que fait-il si vous étirez votre fenêtre (pouvez-vous?)
@Live: Si vous étirez la fenêtre, les marges entre les boutons se développent et les boutons restent la taille fixe. Si vous faites une mise en page-> addstretch (1), les boutons se chevauchent. Il est presque comme si la mise en page Calculez incorrectement la taille nécessaire pour tous les boutons. Je peux soumettre cela comme un bogue.
J'ai eu la chance de tester votre code ce soir. Il compile et fonctionne correctement sur Windows 7 avec Qt 4.6.2 et sous Linux avec Qt 4.5.3. Donc, j'ai supprimé ma réponse précédente. Donc, il peut s'agir d'un bug sous MacOS. Pouvez-vous indiquer la version de OS et QT?
@Nold: Je suis sur Mac OS X 10.6.4; Qt 4.7.0