我希望---用Python和Qt4 ---来旋转QPushButton(或至少它的文本),这样它就可以垂直站立.我在网上看过一些文档,但是我无法理解它 - 它在C语言中,我是C语言文盲.
根据我的阅读,我们需要重新实现paintEvent()处理程序,实例化并旋转QPainter().然而,我无法弄清楚如何为我只需要的一个QString或QPushButton做这个.我假设QPaintEvent会有一个"发送者"属性,就像信号一样,但它没有.我似乎可以从这个事件得到的是QRect或QRegion.
如何查找特定于我的按钮或其标签的事件?
或者,因为那是真正的问题,如何旋转QPushButton?
Mru,下面提出了一些C++示例,它完全重新实现了QPushButton.由于我对C++没有任何线索,因为我不需要完全重新实现,所以我试图painEvent()在Python中重新实现处理程序,基于该示例.
这是我翻译的内容,但它不起作用:\
#!/usr/bin/env python
from PyQt4 import QtGui, QtCore
import sys
class RotatedButton(QtGui.QPushButton):
def __init__(self, text, parent, orientation = "west"):
QtGui.QPushButton.__init__(self, text, parent)
self.orientation = orientation
def paintEvent(self, event):
painter = QtGui.QStylePainter(self)
if self.orientation == 'west':
painter.rotate(90)
elif self.orientation == 'east':
painter.rotate(270)
else:
raise TypeError
painter.drawControl(QtGui.QStyle.CE_PushButton, self.getSyleOptions())
def getSyleOptions(self):
options = QtGui.QStyleOptionButton()
options.initFrom(self)
size = options.rect.size()
size.transpose()
options.rect.setSize(size)
options.features = QtGui.QStyleOptionButton.None …Run Code Online (Sandbox Code Playgroud)