PyQT-在QTableWidget单元格中显示垂直文本 我发现了C++的问题,但是我不能用Python来工作。 我不知道C++,就像递归一样…… class VerticalTextDelegate(QtGui.QStyledItemDelegate): def __init__(self, parent): super(VerticalTextDelegate, self).__init__() def paint(self, painter, option, index): optionCopy = QtGui.QStyleOptionViewItem(option) rectCenter = QtCore.QPointF(QtCore.QRectF(option.rect).center()) painter.save() painter.translate(rectCenter.x(), rectCenter.y()) painter.rotate(-90.0) painter.translate(-rectCenter.x(), -rectCenter.y()) optionCopy.rect = painter.worldTransform().mapRect(option.rect) # recursion here, I don't understand how it works in C++ # self.paint(painter, optionCopy, index) self.painter.restore() def sizeHint(self, option, index): val = QtGui.QSize(self.sizeHint(option, index)) return QtGui.QSize(val.height(), val.width())
运行代码:PyQT-在QTableWidget单元格中显示垂直文本 我发现了C++的问题,但是我不能用Python来工作。 我不知道C++,就像递归一样…… class VerticalTextDelegate(QtGui.QStyledItemDelegate): def __init__(self, parent): super(VerticalTextDelegate, self).__init__() def paint(self, painter, option, index): optionCopy = QtGui.QStyleOptionViewItem(option) rectCenter = QtCore.QPointF(QtCore.QRectF(option.rect).center()) painter.save() painter.translate(rectCenter.x(), rectCenter.y()) painter.rotate(-90.0) painter.translate(-rectCenter.x(), -rectCenter.y()) optionCopy.rect = painter.worldTransform().mapRect(option.rect) # recursion here, I don't understand how it works in C++ # self.paint(painter, optionCopy, index) self.painter.restore() def sizeHint(self, option, index): val = QtGui.QSize(self.sizeHint(option, index)) return QtGui.QSize(val.height(), val.width()),python,c++,pyqt,Python,C++,Pyqt,运行代码: item = QtGui.QTableWidgetItem("test") self.table_widget.setItem(2, 0, item) self.table_widget.setItemDelegateForColumn(0,VerticalTextDelegate(self)) 如果您参考C++实例,您会看到VistaTyTraveAdto::Price实现基本上是修复QGeisher变换,然后调用基类实现QSytLeDeMeCuto::
item = QtGui.QTableWidgetItem("test")
self.table_widget.setItem(2, 0, item)
self.table_widget.setItemDelegateForColumn(0,VerticalTextDelegate(self))
如果您参考C++实例,您会看到VistaTyTraveAdto::Price实现基本上是修复QGeisher变换,然后调用基类实现QSytLeDeMeCuto::Price。你需要做同样未经测试的事情
def paint(self, painter, option, index):
optionCopy = QtGui.QStyleOptionViewItem(option)
rectCenter = QtCore.QPointF(QtCore.QRectF(option.rect).center())
painter.save()
painter.translate(rectCenter.x(), rectCenter.y())
painter.rotate(-90.0)
painter.translate(-rectCenter.x(), -rectCenter.y())
optionCopy.rect = painter.worldTransform().mapRect(option.rect)
# Call the base class implementation
super(VerticalTextDelegate, self).paint(painter, optionCopy, index)
painter.restore()