PyQt QTableWidgetItem .setItem 覆盖属性和标志

PyQt QTableWidgetItem .setItem overriding attributes and flags

我想了解 qt 如何处理这个小部件

item = QtGui.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter |     QtCore.Qt.AlignCenter)
item.setFlags(QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
self.tableWidget.setItem(0, 0, item)

然而当我 'setItem' 项目在 table:

self.ui.tableWidget.setItem(self.i, 0,    QtGui.QTableWidgetItem(str(self.dungeonCount[self.i])))

QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter | QtCore.Qt.AlignCenter

QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled

似乎覆盖了。

在您的第一个块中,您创建 item,class QTableWidgetItem 的一个实例。 您已成功更改其对齐方式和标志。

当您调用 setItem(self.i, 0, QtGui.QTableWidgetItem("some text")) 时,您正在创建 class 的另一个实例。 item 被新的 QTableWidgetItem 替换,具有默认对齐方式和标志。

您应该跟踪 item 并在需要时更改其文本,如下所示:

self.item = QtGui.QTableWidgetItem()
self.item.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter)
self.tableWidget.setItem(0, 0, self.item)

#and then later
self.item.setText("my new text")

setItem 方法在给定的 row/column.

处设置 一个全新的 项目

如果您想修改 现有 项的文本,请执行以下操作:

item = self.tableWidget.item(self.i, 0)
item.setText(str(self.dungeonCount[self.i]))