[Interest] Proxied view not updating live when source model does
Murphy, Sean
Sean.Murphy at centauricorp.com
Wed Sep 22 20:04:57 CEST 2021
> to both rowCount() and columnCount() removed those errors and now my
> application runs silently.
I should have explained better. It runs silently in the sense that
the QAbstractItemModelTester instances aren't printing out
any information any more.
The broken behavior still exists where the view connected to the
proxy model isn't repainting the corresponding row as the source
model's data changes. Instead it is repainting the same row as
the source.
For example:
1. If initially populate the source model with 3 rows of data
A 1
B 2
C 3
The proxied view correctly shows this data inverted:
C 3
B 2
A 1
2. If I then edit cell (0,0) in the source view from 'A' to 'Z':
Z 1
B 2
C 3
The proxied view doesn't update, still showing an 'A' in cell
(2,0) which is supposed to map to source (0,0):
C 3
B 2
A 1
3. If I then edit cell (2,0) in the source view from 'C' to 'X':
Z 1
B 2
X 3
The proxy view updates to:
C 3
B 2
Z 1
I still think the problem is that the dataChanged() signal that
automatically gets emitted by the proxy model off from the
source model's dataChanged() signal has the EXACT SAME
INDEX as the source model:
"baseModel::slotDataChanged: Index: (2, 0)"
"invertRowsModel::slotDataChanged: Index: (2, 0)"
I think the correct behavior for the proxy should be that when
the source's dataChanged() signal fires, the indices in that
signal should be translated through mapFromSource() to then
get re-emitted from the proxy model so the attached view would
then call the proxy's data() with the mapped index (in this example,
when source data changes at (2,0) the proxied view should be
informed that index (0,0) changed to refresh that data), but that
doesn't seem to be happening automatically...
Sean
More information about the Interest
mailing list