我从 QAbstractTableModel 派生了一个模型,现在我想通知,整行的数据已更改。例如,如果索引为 5 的行的数据发生更改(4 列),则使用以下代码可以按预期工作。
emit dataChanged(index(5,0), index(5, 0));
emit dataChanged(index(5,1), index(5, 1));
emit dataChanged(index(5,2), index(5, 2));
emit dataChanged(index(5,3), index(5, 3));
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试仅使用一次发出来实现相同的目的,则视图中所有行的所有列都会更新。
emit dataChanged(index(5, 0), index(5, 3));
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
演示.h
#pragma once
#include <QAbstractTableModel>
#include <QTime>
#include <QTimer>
class Demo : public QAbstractTableModel
{
Q_OBJECT
QTimer * t;
public:
Demo()
{
t = new QTimer(this);
t->setInterval(1000);
connect(t, SIGNAL(timeout()) , this, SLOT(timerHit()));
t->start();
}
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override …Run Code Online (Sandbox Code Playgroud)