问题描述
在下面,您将找到我的自定义模型。我把它简化为必要的东西:
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 (将#修改为@)