python - `setData` 方法怎么会失败?

标签 python pyqt5

我在下面复制的 QAbstractItemModel.setData 文档表示,如果成功,该方法应返回 true,否则返回 false。我的问题是:这个方法怎么会不成功?

bool QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

Sets the role data for the item at index to value.

Returns true if successful; otherwise returns false.

The dataChanged() signal should be emitted if the data was successfully set.

The base class implementation returns false. This function and data() must be reimplemented for editable models.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

See also Qt::ItemDataRole, data(), and itemData().

最佳答案

setData()返回值的目的是指示与角色和QModelIndex关联的信息是否被编辑,返回true还是false取决于开发者。

一些说明上述内容的示例:

  • 如果您希望模型不可编辑(默认情况下为任何模型),则始终返回 false。

  • 如果您只希望某些项目可编辑或不可编辑,那么您将根据项目返回 true 或 false。

  • 如果您希望新值满足某些限制。一个实际的例子是,如果要编辑的项目必须是年龄,那么对于负值,它必须返回 false,对于其他情况,它必须返回 true。

关于python - `setData` 方法怎么会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64145912/

相关文章:

python - Gevent 多核使用

python - PyQt 显示来自 opencv 的视频流

python csv unicode 示例

javascript - 如何在页面加载时将 jinja 代码中的时间值转换为浏览器的本地时区?

python - QFrame边框不显示

python-3.x - PyQt5 QWindow + PyOpenGL 错误 1282 'invalid operation' 与每个 OpenGL 函数

python - 如何在显示来自 cam 的视频时制作屏幕截图?

python - pyqt :how to emit a signal when NextButton of a QwizardPage was clicked

python - 在应用程序引擎中将时间的字符串表示形式转换为日期时间

python - 巴特沃斯滤波器 - 输出 x (-1)?