J'aimerais faire qpushbutton code> Word wrap et développer sa hauteur au lieu de développer la largeur. Comment puis-je faire ça? P>
5 Réponses :
Vous pourriez faire quelque chose de mal. Les boutons ne sont pas censés contenir beaucoup de texte, plutôt un couple de mots décrivant des actions à prendre. Si vous souhaitez le faire multi-lignes, vous feriez mieux d'envisager de fournir un QLabel avec une description correspondante. P>
Quoi qu'il en soit, je ne connais aucun moyen de [QT-pris en charge] de faire cela. Le même problème existe pour, disons, Qipeview légendes, où cela pourrait être encore plus applicable. Manuellement, vous pouvez toujours le faire en ajoutant "\ n" code> caractères à vos chaînes de légende (que vous pouvez automatiser à coup sûr). P>
Eh bien, ce qui en fait une multiligne n'est pas exactement ma demande. Encore, dans la situation actuelle, je suis d'accord avec cela, car le bouton est censé être grand et être pressé sur un écran tactile. Donc, cela ne devrait pas vraiment ressembler à un bouton commun de toute façon.
Pensez à vous écrire de votre propre classe de boutons alors? :)
Vous pouvez toujours aller au niveau de création de widgets personnalisés. Le but doit dépendre des composants existants autant que possible.
@Truthserum, s'il "ne devrait pas vraiment ressembler à un bouton commun" (par op), ce n'est pas un composant existant. Sinon, je suis sûr d'accord.
Utilisez un QToolButton au lieu d'un Qpushbutton. QToolButton peut utiliser le texte multiline et la taille de QToolbutton est plus facile à contrôler que la taille d'un Qpushbutton. P>
Cela ne semble pas si évident comment activer l'emballage de mots sur un QToolButton. Il n'y a pas de qtoolbutton :: Setwordwrap code> méthode.
Utilisez simplement \ N dans l'étiquette du bouton.
@deadbird mais dans ce cas, il ne serait pas tout à fait d'emballage de mot :) c'est-à-dire, pas d'emballage de mot automatique;)
Notez que QToolbutton a l'air différent de Qpushbutton, qui peut confondre les utilisateurs.
Pour emballage de mots dans Qpushbutton régulier, vous pouvez implémenter une classe de style proxy dérivée de QProxystyle.
MyQtPushButton::MyQtPushButton() : QPushButton() { setStyle(new QtPushButtonStyleProxy()); }
Cela ne fonctionnera pas. Qpushbutton est sizehint calculera une largeur sans qt :: textwordwrap. Par conséquent, le bouton sera toujours plus large que prévu. Il faut également réimplément sizehint et calculer une taille de bouton avec Word Wrand à l'esprit. Ce ne sera pas une tâche facile cependant. Cette méthode suggérée par @ lol4t0 est plus facile à mettre en œuvre: Stackoverflow.com/a/8960548/774651
J'ai résolu le problème avec WordWrap sur un bouton de cette façon:
Une solution simple consiste à insérer une rupture de ligne lors de l'écriture du texte à l'intérieur du qpushbutton, tout comme si vous êtes digne dans qtdesigner, vous pouvez simplement cliquer avec le bouton droit de la souris sur le bouton, puis " Insérer la pause de ligne " p> p>
Hier, nous avons considéré la possibilité d'afficher
qlabel code> sur
qpushbutton code>, vous pouvez utiliser cette méthode: Stackoverflow.com/a/8960548/774651