我正在试图了解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
似乎会覆盖。
答案 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]))