PyQt5:设置QStandardItem

时间:2017-02-12 23:49:04

标签: python qt pyqt qtreeview qstandarditem

如果我像这样构建一个QStandardItem

item = QtGui.QStandardItem('Item Name')

将此项目添加到QStandardItemModel模型并在QTreeView中查看时,我会看到一个显示Item Name的单元格。但是,当我构建一个像:

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

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

来调用数据
print(item.data())

我会得到号码123。如何获得实际显示在单元格中的数字?

1 个答案:

答案 0 :(得分:1)

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