如何调用数据已更改
How do I call dataChanged
以下是我的添加行类。它是由代码而不是表调用的,我希望它正确调用 dataChanged 添加新行时更改,尽管这不起作用,但表不执行任何操作。我做错了什么?
void MyModel::add(const Person& p)
{
people.push_back(p);
QModelIndex top = createIndex(people.count() - 1, 0, 0);
QModelIndex bottom = createIndex(people.count() - 1, 3, 0);
emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}
dataChanged
仅适用于现有数据,您需要调用beginInsertRows()
/endInsertRows()
void MyModel::add(const Person& p)
{
beginInsertRows(QModelIndex(), people.count(), people.count());
people.push_back(p);
endInsertRows();
QModelIndex top = createIndex(people.count() - 1, 0, 0);
QModelIndex bottom = createIndex(people.count() - 1, 3, 0);
emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}
这应该行得通。也许你甚至不需要emit dataChanged
相关文章:
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 调用在 HXX 文件中声明的静态数据成员
- 使用 pybind11 调用 Python 函数时避免复制输入数据
- 从C++调用 Python 脚本以持续流式传输数据
- 从 cpp lib 调用函数时的数据类型转换
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- 使用ifstream时,被调用文件中的数据不会打印
- 通过外部分配的数据调用特征 GEMM
- 调用Main将替换矢量对象并覆盖数据
- 模板 使用数据数组调用函数时扩展参数包
- 只需调用对象即可获取对象数据
- 如果两个线程调用同一个函数,但函数中的所有变量都是局部变量,我还需要担心线程之间共享数据吗?
- 在模板化数据结构上调用 begin() 或 end()
- 在向量上调用 clear() 实际上不会删除 data() 中的数据?
- 通过 lambda 调用成员函数时意外未初始化的数据
- 如何使用模板根据数据类型调用函数?
- C++函数调用后丢失的数据
- 用内存中的Fortran数据调用C代码
- C++ 构造函数/析构函数调用 &对动态创建的数据调用"new"是否会删除旧数据?
- 使用派生类的数据调用基类的方法:有没有一种优雅的方法可以做到这一点?