我创建了一个基于 QAbstractTableModel 的模型,允许用户编辑该模型中的数据。该模型显示在 QMainWindow 中的 QTableView 中。到目前为止,在我的模型中,我能够使单元格可编辑,并在编辑完成后保存用户输入的任何内容。
问题是当用户开始编辑时,它会“清除”该单元格的先前内容。因此,例如,如果我只想更改单元格中字符串的拼写,则必须重新键入整个值。我希望在编辑时编辑器将从模型中已有的数据开始,而不是空的。
我怎样才能做到这一点?
问题示例:
在我开始编辑单元格之前:
我一开始编辑,单元格就是空的。我希望它以模型中已有的先前值作为星标:
这是我的模型的最小示例。我的实际模型要大得多,并且使用结构而不是 QVariants 的二维数组来存储数据。
标题:
const int COLS= 2;
const int ROWS= 6;
class EditableTableModel : public QAbstractTableModel
{
Q_OBJECT
private:
QVariant tableData[ROWS][COLS];
public:
EditableTableModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
QVariant headerData(int section, …Run Code Online (Sandbox Code Playgroud) 如何在 QML 中迭代ListElementa 的所有个体ListModel?