PyQt QTableWidgetItem .setItem重写属性和标志

时间:2015-06-27 22:37:00

标签: python pyqt

我正在试图了解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'项时:

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

似乎会覆盖。

2 个答案:

答案 0 :(得分:0)

在第一个块中,您创建item,即类QTableWidgetItem的一个实例。 您成功更改了它的对齐和标记。

当您致电setItem(self.i, 0, QtGui.QTableWidgetItem("some text"))时,您正在创建该课程的另一个实例。 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")

答案 1 :(得分:0)

setItem方法在给定的行/列设置一个全新的项。

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

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