2010-09-21 110 views

回答

3

QLabel不這樣做。但是你可以很容易地創建一個包含一些文本的您自己的小工具:

class MyLabel(QtGui.QWidget): 
    def paintEvent(self, event): 
     painter = QtGui.QPainter(self) 
     painter.setPen(QtCore.Qt.black) 
     painter.translate(20, 100) 
     painter.rotate(-90) 
     painter.drawText(0, 0, "hellos") 
     painter.end() 

另一種方法是畫一個QGraphicsView,那麼你有自由繪製真正的小部件(即一個QLabel)通過任何座標變換。

+0

嗨,謝謝。你會知道如何用QPushButton做到這一點嗎?見線程:http://stackoverflow.com/questions/7339685/how-to-rotate-a-qpushbutton謝謝。 – Benjamin 2011-09-07 21:24:50

2

我用這個帖子來製作另一個我認爲可能更好的解決方案。這裏是:

class VerticalLabel(QLabel): 

    def __init__(self, *args): 
     QLabel.__init__(self, *args) 

    def paintEvent(self, event): 
     QLabel.paintEvent(self, event) 
     painter = QPainter (self) 
     painter.translate(0, self.height()-1) 
     painter.rotate(-90) 
     self.setGeometry(self.x(), self.y(), self.height(), self.width()) 
     QLabel.render(self, painter) 

    def minimumSizeHint(self): 
     size = QLabel.minimumSizeHint(self) 
     return QSize(size.height(), size.width()) 

    def sizeHint(self): 
     size = QLabel.sizeHint(self) 
     return QSize(size.height(), size.width())