diff options
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index b766595d83..d62c7628d0 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -1064,7 +1064,9 @@ QComboBoxPrivateContainer* QComboBoxPrivate::viewContainer() Q_Q(QComboBox); container = new QComboBoxPrivateContainer(new QComboBoxListView(q), q); + disconnectModel(); container->itemView()->setModel(model); + connectModel(); container->itemView()->setTextElideMode(Qt::ElideMiddle); updateDelegate(true); updateLayoutDirection(); @@ -2055,7 +2057,6 @@ void QComboBox::setModel(QAbstractItemModel *model) } d->model = model; - d->connectModel(); if (d->container) { d->container->itemView()->setModel(model); @@ -2064,6 +2065,8 @@ void QComboBox::setModel(QAbstractItemModel *model) d, &QComboBoxPrivate::emitHighlighted, Qt::UniqueConnection); } + d->connectModel(); + setRootModelIndex(QModelIndex()); d->trySetValidIndex(); @@ -2487,8 +2490,11 @@ void QComboBox::setView(QAbstractItemView *itemView) return; } - if (itemView->model() != d->model) + if (itemView->model() != d->model) { + d->disconnectModel(); itemView->setModel(d->model); + d->connectModel(); + } d->viewContainer()->setItemView(itemView); } |