PyQt5:设置数据的QStandardItem

PyQt5:设置数据的QStandardItem

问题描述:

如果你建造一个QStandardItem像这样:PyQt5:设置数据的QStandardItem

item = QtGui.QStandardItem('Item Name') 

当此项目被添加到QStandardItemModel模式,被认为在QTreeView我得到那个说Item Name细胞。然而,当我构建一个这样的:

item = QtGui.QStandardItem() 
item.setData(123) 

我得到一个空单元格,但我仍然可以通过调用调用数据:

print(item.data()) 

,我将获得多少123。我怎样才能得到实际显示在单元格中的数字?

+0

'item.setData(str(123))'。 – ekhumoro

+0

虽然我需要它是一个可编辑的数字,但我不能依赖字符串来进行浮点转换。我不明白为什么如果我直接从模型中设置数据:'model.setData(model.index(0,1),123.987)'它会显示数字,但如果我在'QStandardItem'上执行它,它会赢得“T。 – NineTails

+0

另外我刚刚尝试了您的建议,但它也不起作用。你想让我粘贴一个可运行的示例程序吗?我只是认为这个问题可能太过于简单的答案。 – NineTails

传递给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))