python - PyQt5 : Setting data for a QStandardItem

标签 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。如何让数字实际显示在单元格中?

最佳答案

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

关于python - PyQt5 : Setting data for a QStandardItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42194649/

相关文章:

python - 如何在Python中按行追加Dataframe

c++ - 如何在 Ubuntu Qt 中获取事件窗口标题?

c++ - 未知对象的序列化

python - 如何检查 PyQt5 在 Mac 上是否正确安装?

python - 如何使用在不同项目中构建的分类模型对新文本进行分类?

python - 如何从 Spacy 加载任意语言

QtCreator : Issues not displayed in Issue panel any more

python - 使用 PyQt4/5 隐式 OAuth2 授权

python - Pyside Qt centralwidget 设置样式表不工作

python - Pandas 用 nan 值切割了一系列