summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp21
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.h4
2 files changed, 16 insertions, 9 deletions
diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp
index 69160043ea..063bb0de8c 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.cpp
+++ b/src/corelib/itemmodels/qabstractproxymodel.cpp
@@ -122,16 +122,19 @@ QAbstractProxyModel::~QAbstractProxyModel()
void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
{
Q_D(QAbstractProxyModel);
- if (d->model)
- disconnect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
-
- if (sourceModel) {
- d->model = sourceModel;
- connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
- } else {
- d->model = QAbstractItemModelPrivate::staticEmptyModel();
+ if (sourceModel != d->model) {
+ if (d->model)
+ disconnect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
+
+ if (sourceModel) {
+ d->model = sourceModel;
+ connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
+ } else {
+ d->model = QAbstractItemModelPrivate::staticEmptyModel();
+ }
+ d->roleNames = d->model->roleNames();
+ emit sourceModelChanged();
}
- d->roleNames = d->model->roleNames();
}
/*!
diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h
index d80fcb683c..4dcbdfda50 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.h
+++ b/src/corelib/itemmodels/qabstractproxymodel.h
@@ -57,6 +57,7 @@ class QItemSelection;
class Q_CORE_EXPORT QAbstractProxyModel : public QAbstractItemModel
{
Q_OBJECT
+ Q_PROPERTY(QAbstractItemModel* sourceModel READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged)
public:
explicit QAbstractProxyModel(QObject *parent = 0);
@@ -94,6 +95,9 @@ public:
QStringList mimeTypes() const;
Qt::DropActions supportedDropActions() const;
+Q_SIGNALS:
+ void sourceModelChanged();
+
protected:
QAbstractProxyModel(QAbstractProxyModelPrivate &, QObject *parent);