[Qt-interest] Responding to when a QSortFilterProxyModel is initialized
Stephen Kelly
steveire at gmail.com
Mon Sep 27 14:07:19 CEST 2010
Jeffrey Brendecke wrote:
> I am working on a Model-View-Delegate application that has the following
> characteristics:
>
> * Makes an asynchronous request for information read via the signal slot
> information from an external process. The information is a list of
> resources that are indivudually expensive to retrieve.
> * Fills an internal table in the model with that information once fully
> available. Changes to the table are bracketed with beginResetModel() and
> endResetModel(). Actually, the table is cleared and then refilled.
> * Sends a signal that the update is complete.
> * The QTableView wraps the source model in a QSortFilterProxyModel to
> allow sorting and filtering.
>
> What is supposed to happen next is for the View to make a request to the
> model for the resource that is first in the table and display it in an
> embedded editor. The resource request is made similarly asynchronously and
> the edit area is enabled after the resource has actually been retrieved.
>
> The Problem:
> * How does the source model know what is first in the table after the
> refresh?
// This is the first item in the proxy, which sorts and filters, so may not
be the same as the first item in the 'core' model.
const QModelIndex firstItem = view->model()->index(0, 0);
You can connect to the modelReset() signal to know when the resources are
refreshed. It is emitted when you call endResetModel in the 'core' model and
emitted symmetrically by the proxy.
HTH, and if it doesn't I guess I didn't understand the question :).
All the best,
Steve.
>
> It is well documented how to respond to user selection changes in the
> view, but unclear how to know when the QTableView has been initialized
> with new data after a refresh so that a request can be made to actually
> show the resource referenced by the first item in the table after the
> refresh.
>
> Is this something the model should initiate delivering the resource? It,
> however, does not know what is first item in the table is given the
> QSortFilterProxyModel.
>
> Trying to catch the request in the model's implementation of data() is too
> resource intensive given the volume of requests made on a refresh. As I
> mentioned, it is expensive to actually retrieve the resource.
>
> Thank you very much for any assistance.
>
> Sincerely,
>
> Jeffrey Brendecke
>
> Managing Director
> icanetix Software Systems and Consulting GmbH
> Untere Hagenstrasse 26
> 91217 Hersbruck
> Germany
>
> Commercial Registry B 25317 Nuremberg, Germany
> VAT-ID: DE250213502
More information about the Qt-interest-old
mailing list