Python 表格单元格中的PySide对齐文本?

Python 表格单元格中的PySide对齐文本?,python,pyside,qtablewidget,Python,Pyside,Qtablewidget,我有一个用QTDesigner制作的QTable小部件。在我的代码中,我设置了表格的属性,但无法实现文本对齐: def __init__(self): super(myClass, self).__init__() # SETUP UI self.setupUi(self) # Table setup self.myTable.verticalHeader().hide() # Hide row numbers self.myTa

我有一个用QTDesigner制作的QTable小部件。在我的代码中,我设置了表格的属性,但无法实现文本对齐:

def __init__(self):
    super(myClass, self).__init__()
    # SETUP UI
    self.setupUi(self)
    # Table setup
    self.myTable.verticalHeader().hide()  # Hide row numbers        
    self.myTable.setColumnCount(4)
    self.myTable.setHorizontalHeaderLabels(['A', 'B', 'C', 'D'])
    self.myTable.horizontalHeader().setResizeMode(QHeaderView.Stretch)
    # This code does not work:
    # self.myTable.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)

您可以使用QTableWidgetItem的setTextAlignment方法更改每个项的对齐方式:

但是,如果要更改所有项目的对齐方式,则必须使用代理:

class AlignDelegate(QtGui.QItemDelegate):
    def paint(self, painter, option, index):
        option.displayAlignment = QtCore.Qt.AlignCenter
        QtGui.QItemDelegate.paint(self, painter, option, index)

class MyClass(your_widget, your_design)
    def __init__(self):
        super(myClass, self).__init__()
        # SETUP UI
        self.setupUi(self)
        # Table setup
        self.myTable.verticalHeader().hide()  # Hide row numbers        
        self.myTable.setColumnCount(4)
        self.myTable.setHorizontalHeaderLabels(['A', 'B', 'C', 'D'])
        self.myTable.horizontalHeader().setResizeMode(QHeaderView.Stretch)
        self.myTable.setItemDelegate(AlignDelegate())

我的表是动态变化的,我在脚本初始化后添加和删除行,所以我需要设置所有itemscells的对齐方式。但是:self.myTable.setItemDelegateAlignDelegate也不起作用。self.myTable.setItemDelegateAlignDelegate属性Error:类型对象“PySide.QtCore.Qt”没有属性“AlignDelegate”@kiryha那么第二个选项是针对您的案例的。如果我的答案对你有帮助,请别忘了把它标为正确的。第二个选项也不行。NameError:未定义全局名称“AlignDelegate”,我已尝试使用Qt.AlignDelegate-请参阅前面的答案和AlignDelegate。@kiryha您是否添加了我创建的类以及示例中的类?啊,我的错,错过了这个!谢谢你,先生,现在开始工作了!这是设置QTableWidget中所有项的对齐方式的唯一方法吗?看起来是一个过于复杂的解决方案。例如,在QT设计器中是否有这样做的方法?
class AlignDelegate(QtGui.QItemDelegate):
    def paint(self, painter, option, index):
        option.displayAlignment = QtCore.Qt.AlignCenter
        QtGui.QItemDelegate.paint(self, painter, option, index)

class MyClass(your_widget, your_design)
    def __init__(self):
        super(myClass, self).__init__()
        # SETUP UI
        self.setupUi(self)
        # Table setup
        self.myTable.verticalHeader().hide()  # Hide row numbers        
        self.myTable.setColumnCount(4)
        self.myTable.setHorizontalHeaderLabels(['A', 'B', 'C', 'D'])
        self.myTable.horizontalHeader().setResizeMode(QHeaderView.Stretch)
        self.myTable.setItemDelegate(AlignDelegate())