PyQt5:设置数据的QStandardItem
问题描述:
如果你建造一个QStandardItem
像这样:PyQt5:设置数据的QStandardItem
item = QtGui.QStandardItem('Item Name')
当此项目被添加到QStandardItemModel
模式,被认为在QTreeView
我得到那个说Item Name
细胞。然而,当我构建一个这样的:
item = QtGui.QStandardItem()
item.setData(123)
我得到一个空单元格,但我仍然可以通过调用调用数据:
print(item.data())
,我将获得多少123
。我怎样才能得到实际显示在单元格中的数字?
答
传递给QStandardItem
构造函数的参数设置DisplayRole的数据。所以等效的方法是,要么:
item.setData(str(123), QtCore.Qt.DisplayRole)
或:
item.setText(str(123))
但是如果你想将数据存储在其一部开拓创新的数据类型,而不是首先将其转换为字符串,可以使用QStyledItemDelegate
来控制原始数据的显示方式:
class ItemDelegate(QStyledItemDelegate):
def displayText(self, value, locale):
if isinstance(value, float):
return '%08f' % value
return value
view.setItemDelegate(ItemDelegate(view))
'item.setData(str(123))'。 – ekhumoro
虽然我需要它是一个可编辑的数字,但我不能依赖字符串来进行浮点转换。我不明白为什么如果我直接从模型中设置数据:'model.setData(model.index(0,1),123.987)'它会显示数字,但如果我在'QStandardItem'上执行它,它会赢得“T。 – NineTails
另外我刚刚尝试了您的建议,但它也不起作用。你想让我粘贴一个可运行的示例程序吗?我只是认为这个问题可能太过于简单的答案。 – NineTails