QAbstractTableModel
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
QAbstractTableModel::setData() 是一个用于设置表格模型中特定索引处的数据的方法。它接收三个参数:
const QModelIndex &index:表示要设置数据的单元格的索引。
const QVariant &value:表示要设置的新值,可以是任何数据类型。
int role:表示要设置的数据的角色,例如 Qt::EditRole(编辑角色)或 Qt::DisplayRole(显示角色)。
该方法返回一个布尔值,表示数据是否成功设置。如果成功设置数据,则返回 true;否则返回 false。
以下是使用示例
#include <QAbstractTableModel>
#include <QVariant>
class MyTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
MyTableModel(QObject *parent = nullptr);
// ... 其他方法 ...
// 重写 setData 方法
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
};
bool MyTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (role == Qt::EditRole) {
// 获取当前行和列
int row = index.row();
int column = index.column();
// 检查索引是否有效
if (!index.isValid()) {
return false;
}
// 更新数据
m_data[row][column] = value;
// 通知视图数据已更改
emit dataChanged(index, index);
return true;
}
// 如果角色不是编辑角色,返回 false
return false;
}