diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index f78723099e4..95ead3ca59f 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -1060,7 +1060,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(); @@ -2051,7 +2053,6 @@ void QComboBox::setModel(QAbstractItemModel *model) } d->model = model; - d->connectModel(); if (d->container) { d->container->itemView()->setModel(model); @@ -2060,6 +2061,8 @@ void QComboBox::setModel(QAbstractItemModel *model) d, &QComboBoxPrivate::emitHighlighted, Qt::UniqueConnection); } + d->connectModel(); + setRootModelIndex(QModelIndex()); d->trySetValidIndex(); @@ -2483,8 +2486,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); }