这是我setData的源模型:
bool TreeModel::setData(const QModelIndex& index, const QVariant& value, int role)
{
if (!index.isValid() || role != Qt::EditRole)
return false;
TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
item->setData(index.column(), value);
emit dataChanged(index, index);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我将dataChanged信号从源模型连接到dataChanged代理模型的信号,但显示代理模型的表视图只有在我点击它时才会更新。在这种情况下会出现什么问题?我应该以某种方式dataChanged在代理模型中手动发出信号吗?
来自模型的数据:
QVariant TreeModel::data(const QModelIndex& index, int role) const
{
if (!index.isValid() || role != Qt::DisplayRole)
return {};
TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
return item->dataAt(index.column());
}
Run Code Online (Sandbox Code Playgroud)
来自 TreeItem:
QVariant TreeItem::dataAt(int n) const
{
if (n < m_data.size())
return m_data[n];
else
return {}; …Run Code Online (Sandbox Code Playgroud)