小编Dav*_*veK的帖子

QAbstractTableModel 编辑而不清除单元格中的先前数据

我创建了一个基于 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)

c++ qt qtableview qabstracttablemodel qt5

5
推荐指数
1
解决办法
1302
查看次数

如何迭代 QML ListModel 的所有元素?

如何在 QML 中迭代ListElementa 的所有个体ListModel

qt qml qt5 listmodel

0
推荐指数
1
解决办法
3452
查看次数

标签 统计

qt ×2

qt5 ×2

c++ ×1

listmodel ×1

qabstracttablemodel ×1

qml ×1

qtableview ×1