Vertical QLabel, ou l'équivalent?
Je veux étiquettes de l'axe pour une parcelle de terrain, je suis en train de faire, et, naturellement, le nom de l'axe y doit être orientée verticalement. Je suis sûr que QwtPlot
fait cela, mais j'essaie de garder les choses de la lumière donc je suis juste à l'aide d'un simple QWidget
+ QPainter
pour l'instant. Je ne vois pas de moyen de changer QLabel
orientation dans la documentation. Certaines solutions sont données dans ce 2002 thread mais j'aimerais quelque chose qui ne semble pas comme tel un hack. Je suis l'aide de Qt 4.8 maintenant, il n'y a vraiment aucun moyen de faire ça de côté de QPainter::drawText()
?
OriginalL'auteur Matt Phillips | 2012-02-07
Vous devez vous connecter pour publier un commentaire.
essayez d'utiliser ceci:
///rpc
painter.rotate(270)
, appelpainter.translate( sizeHint().width(), sizeHint().height() )
.Pour ceux Qt, des débutants (comme moi): vous pouvez utiliser une étiquette classique comme un espace réservé pour cette VerticalLabel dans Qt creator, et juste de le promouvoir à votre type personnalisé. Voir ici: doc.qt.io/qt-5/designer-using-custom-widgets.html
Cette version ignore l'alignement. Pour un alignement conscient de version, remplacer
painter.drawText(0,0, text())
avecpainter.drawText(0, 0, height(), width(), alignment(), text())
OriginalL'auteur Mostafa
Donc en effet j'ai renoncé à trouver un moyen simple pour y parvenir, et à la recherche sur Uwe Rathmann de Qwt code, en effet, il utilise
QPainter::drawText()
dans sonQwtPainter::drawText
fonction wrapper, et unQTransform
pour atteindre la rotation, dansQwtScaleDraw::labelTransformation
. Donc, je viens de mettre ensemble comme suit:N'a pas besoin d'un QPixmap, il s'avère.
OriginalL'auteur Matt Phillips
Il n'y a pas de fonction pratique dans
QLabel
à faire ce que vous voulez, pas. Donc:Utilisation
QGraphicsView
, qui permet de transformer les éléments comme vous le souhaitez.Utilisation
QPainter
. Probablement l'approche la plus simple serait de dessiner le texte tourné dans uneQPixmap
, puis le mettre sur votreQLabel
.QPixmap::drawText()
fonction.Vous utilisez un QPainter pour dessiner à tous QPaintDevices, dont QPixmap est un.
OriginalL'auteur Dan Milburn
Ici est une variante de Mostafa mise en œuvre.
fondamentalement, j'ai enlevé setPen et setBrush pour préserver la feuille de style, et j'ai utilisé une surcharge de drawText qui utilise le rectangle à la place du point. Ce qui permet d'avoir le '\n' à l'intérieur du texte ou de l'utilisation WordWrap comme un drapeau.
OriginalL'auteur alez
Vous pouvez également créer un nouveau
QGraphicsScene
, ajouter QLabel et de la faire pivoter. Comme ceci:Prendre un coup d'oeil à la exemple similaire (l'image de sortie a un mauvais rapport, regardez la URL directe).
OriginalL'auteur Lukasz Czerwinski