6
votes

Comment work work text dans les rangées et les colonnes d'un QTableWidget?

J'ai essayé: xxx

a essayé resizecolummumumnstoContents et restifizerowstocontents , mais échoué.

Si le texte est plus long que la largeur de jeu, je veux que la phrase tombe en panne.
Courante, la partie longue de la phrase ne se présente pas.


1 commentaires

Avez-vous essayé de définir la hauteur de la ligne explicitement? Si cela ne fonctionne pas, vous devrez peut-être mettre en œuvre une sous-classe de qstyleditemdelegate pour pouvoir changer TailleHint (). Voulez-vous être capable de modifier le contenu de la cellule?


3 Réponses :


8
votes

Setwordwrap Définit le comportement du texte, sans modifier la taille de la colonne. Si vous devez garder la largeur de colonne fixe, appelez ResizerowstoConTents après L'insertion de l'élément à la cellule (je suppose que vous ajoutez du texte à la table via qtablewidgettitem ).

Veuillez noter que si l'un des mots contenus dans l'élément est plus large que la taille de la colonne, le texte sera supprimé à partir de ce point (par défaut, vous verrez des ellipses: ... ). Si vous souhaitez modifier ce comportement, vous devez avoir besoin de la fonction de peinture de l'élément ou d'étirer vos colonnes.


0 commentaires

6
votes

Ceci ajustera le mot emballage automatiquement chaque fois qu'une colonne redimensionne: xxx


0 commentaires

0
votes

Comme mentionné dans le commentaire de la question, définir la taille de la ligne explicitement à une certaine valeur semble fonctionner:

 tableWidget->resizeRowsToContents();
 tableWidget->verticalHeader()->setDefaultSectionSize(50);


1 commentaires

La documentation indique que par défaut wordwrap est true . Donc oui, vous n'avez pas à l'appeler. Cependant, je ne vois rien d'envelopper. Il peut être élu si la largeur de la colonne est trop petite, mais je voudrais envelopper comme en hauteur de la culture cellulaire et le texte apparaissant sur un nombre de lignes au besoin ... est-ce possible?