J'ai beaucoup de colonnes étroites avec des étiquettes très longues. Je veux faire pivoter les étiquettes de 90 degrés. C'est possible?Qt - Can QTable peut-il faire pivoter les étiquettes de colonne de 90 degrés?
Répondre
Vous devrez probablement sous-classer QTableWidgetItem et implémenter votre propre peinture de texte verticale. Ensuite, utilisez setHorizontalHeaderItem()
sur votre table pour pointer vers une instance de votre nouveau widget.
Lorsque vous cherchez une réponse à cette question, j'ai trouvé de nombreux indices, mais aucune vraie réponse. Les indices indiquent que vous devez sous-classer QHeaderView et ré-implémenter paintSection. Quand j'ai essayé de le faire dans PyQt4 et que j'ai essayé d'implémenter paintSection à partir de zéro, suite à la source de QHeaderView, je n'ai pas réussi. Cependant, il suffit de faire pivoter l'instance de peintre et d'ajuster toutes les indications de taille. Le code fonctionne pour les en-têtes horizontales seulement et est bien compact:
from PyQt4 import QtGui, QtCore
class RotatedHeaderView(QtGui.QHeaderView):
def __init__(self, orientation, parent=None):
super(RotatedHeaderView, self).__init__(orientation, parent)
self.setMinimumSectionSize(20)
def paintSection(self, painter, rect, logicalIndex):
painter.save()
# translate the painter such that rotate will rotate around the correct point
painter.translate(rect.x()+rect.width(), rect.y())
painter.rotate(90)
# and have parent code paint at this location
newrect = QtCore.QRect(0,0,rect.height(),rect.width())
super(RotatedHeaderView, self).paintSection(painter, newrect, logicalIndex)
painter.restore()
def minimumSizeHint(self):
size = super(RotatedHeaderView, self).minimumSizeHint()
size.transpose()
return size
def sectionSizeFromContents(self, logicalIndex):
size = super(RotatedHeaderView, self).sectionSizeFromContents(logicalIndex)
size.transpose()
return size
J'ai fait un script personnalisé qui fonctionne très bien fonction de la réponse précédente ..
copier et coller le code suivant dans une rotation. py
#!/usr/bin/env python
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class RotatedHeaderView(QHeaderView):
def __init__(self, parent=None):
super(RotatedHeaderView, self).__init__(Qt.Horizontal, parent)
self.setMinimumSectionSize(20)
def paintSection(self, painter, rect, logicalIndex):
painter.save()
# translate the painter such that rotate will rotate around the correct point
painter.translate(rect.x()+rect.width(), rect.y())
painter.rotate(90)
# and have parent code paint at this location
newrect = QRect(0,0,rect.height(),rect.width())
super(RotatedHeaderView, self).paintSection(painter, newrect, logicalIndex)
painter.restore()
def minimumSizeHint(self):
size = super(RotatedHeaderView, self).minimumSizeHint()
size.transpose()
return size
def sectionSizeFromContents(self, logicalIndex):
size = super(RotatedHeaderView, self).sectionSizeFromContents(logicalIndex)
size.transpose()
return size
puis importer à partir de votre fichier main.py cette classe en utilisant cette ligne:
from rotated import RotatedHeaderView
et compléter les actions avec cette ligne:
self.YourTableName.setHorizontalHeader(RotatedHeaderView(self.YourTableName))
espoir vaut le coup!
- 1. Faire pivoter le texte de 90 degrés avec GDI
- 2. C# Rotation Bitmap 90 degrés
- 3. Comment faire pivoter une matrice N x N de 90 degrés?
- 4. Arcball Rotation à 90 degrés
- 5. JPEG sans perte Rotation (90/180/270 degrés) en Java?
- 6. Faire pivoter une page de 180 degrés dans LaTeX
- 7. Comment faire pivoter un CAGradientLayer de 180 degrés?
- 8. Faire pivoter les contrôles dans Java
- 9. Comment faire pivoter l'image QTVR 360 degrés dans iPhone?
- 10. comment faire pivoter le texte?
- 11. j2me - Faire pivoter la matrice de points 2D par incréments de 45 degrés
- 12. Rotation du texte et des boutons de l'étiquette sur 90 degrés
- 13. comment faire pivoter la vidéo dans VideoView
- 14. Java - Dessiner une règle (ligne avec graduations à 90 degrés)
- 15. Comment faire pivoter une étiquette en C#?
- 16. comment faire pivoter les données SQL sans agréger une colonne
- 17. Puis-je utiliser CGAffineTransformMakeRotation pour faire pivoter une vue de plus de 360 degrés?
- 18. Le moyen le plus simple de faire pivoter un rectangle
- 19. Comment afficher le texte vertical (rotation de 90 degrés) dans tous les navigateurs?
- 20. Comment faire pivoter une div avec Raphael.js?
- 21. Faire pivoter l'image dans picturebox
- 22. Comment faire pivoter une vue isométique?
- 23. OpenCV: comment faire pivoter IplImage?
- 24. Comment faire pivoter un GluCynlinder dans OpenGL?
- 25. L'alignement des étiquettes Qt GroupBox
- 26. Afficher le texte verticalement (rotation de 90 degrés) dans IE et Firefox
- 27. Comment faire pivoter un tableau 2D d'entiers
- 28. caméra capture d'image par défaut de rotation avec angle de 90 degrés
- 29. faire pivoter le document dans emacs doc-view-mode
- 30. Comment aligner une étiquette pivotant à 90 degrés parfaitement avec les pixels?