Qt 从自定义 QAbstractListModel 中删除行不起作用

问题描述

在下面,您将找到我的自定义模型。我把它简化为必要的东西:


class myClass : public QAbstractListModel
{
    Q_OBJECT

    enum Role {
        id=Qt::UserRole,call,name,date,time,};

public:
    ...

private:
    QList<QJsonObject> database;
    ...
};


...

void myClass::onMQTT(...)
{
    ...
    QJsonObject jsonObject = jsonResponse.object();

    if(database.size() == 8) {
        beginRemoveRows(QModelIndex(),0);
            database.pop_front();
        endRemoveRows();
    }


    beginInsertRows(QModelIndex(),database.size(),database.size());
        database.push_back(jsonObject);
    endInsertRows();    
}

...

为了显示,我使用了 QML ListView。显示效果很好。每次我通过网络收到数据包时,都会调用 onMQTT 回调,并将新内容添加数据库中,并且还会显示在 ListView 中。

当列表中有8个元素时,删除最旧的元素并添加一个新元素。但是,不会执行行的移除。事实上,8 个最旧的元素保持可见,并且没有添加任何新元素。我只看到第一个传入的 8 条消息,仅此而已。尽管数据库中的数据交换正确,但它根本没有更新。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)