diff options
-rw-r--r-- | src/widgets/itemviews/qlistwidget.cpp | 85 | ||||
-rw-r--r-- | src/widgets/itemviews/qlistwidget.h | 23 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp | 26 |
3 files changed, 77 insertions, 57 deletions
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp index 6e0bdb3f22..ea92c5605b 100644 --- a/src/widgets/itemviews/qlistwidget.cpp +++ b/src/widgets/itemviews/qlistwidget.cpp @@ -583,24 +583,6 @@ Qt::DropActions QListModel::supportedDropActions() const */ /*! - \fn void QListWidgetItem::setSelected(bool select) - \since 4.2 - - Sets the selected state of the item to \a select. - - \sa isSelected() -*/ - -/*! - \fn bool QListWidgetItem::isSelected() const - \since 4.2 - - Returns \c true if the item is selected; otherwise returns \c false. - - \sa setSelected() -*/ - -/*! \fn void QListWidgetItem::setHidden(bool hide) \since 4.2 @@ -1002,6 +984,50 @@ QDataStream &operator>>(QDataStream &in, QListWidgetItem &item) */ /*! + \fn void QListWidgetItem::setSelected(bool select) + \since 4.2 + + Sets the selected state of the item to \a select. + + \sa isSelected() +*/ +void QListWidgetItem::setSelected(bool select) +{ + const QListModel *model = listModel(); + if (!model || !view->selectionModel()) + return; + const QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); + if (selectionMode == QAbstractItemView::NoSelection) + return; + const QModelIndex index = model->index(this); + if (selectionMode == QAbstractItemView::SingleSelection) + view->selectionModel()->select(index, select + ? QItemSelectionModel::ClearAndSelect + : QItemSelectionModel::Deselect); + else + view->selectionModel()->select(index, select + ? QItemSelectionModel::Select + : QItemSelectionModel::Deselect); +} + +/*! + \fn bool QListWidgetItem::isSelected() const + \since 4.2 + + Returns \c true if the item is selected; otherwise returns \c false. + + \sa setSelected() +*/ +bool QListWidgetItem::isSelected() const +{ + const QListModel *model = listModel(); + if (!model || !view->selectionModel()) + return false; + const QModelIndex index = model->index(this); + return view->selectionModel()->isSelected(index); +} + +/*! \fn void QListWidgetItem::setFlags(Qt::ItemFlags flags) Sets the item flags for the list item to \a flags. @@ -1743,6 +1769,7 @@ void QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget) QAbstractItemView::setIndexWidget(index, widget); } +#if QT_DEPRECATED_SINCE(5, 13) /*! Returns \c true if \a item is selected; otherwise returns \c false. @@ -1752,9 +1779,7 @@ void QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget) */ bool QListWidget::isItemSelected(const QListWidgetItem *item) const { - Q_D(const QListWidget); - QModelIndex index = d->listModel()->index(const_cast<QListWidgetItem*>(item)); - return selectionModel()->isSelected(index); + return ((item && item->listWidget() == this) ? item->isSelected() : false); } /*! @@ -1767,20 +1792,10 @@ bool QListWidget::isItemSelected(const QListWidgetItem *item) const */ void QListWidget::setItemSelected(const QListWidgetItem *item, bool select) { - Q_D(QListWidget); - QModelIndex index = d->listModel()->index(const_cast<QListWidgetItem*>(item)); - - if (d->selectionMode == SingleSelection) { - selectionModel()->select(index, select - ? QItemSelectionModel::ClearAndSelect - : QItemSelectionModel::Deselect); - } else if (d->selectionMode != NoSelection) { - selectionModel()->select(index, select - ? QItemSelectionModel::Select - : QItemSelectionModel::Deselect); - } - + if (item && item->listWidget() == this) + const_cast<QListWidgetItem*>(item)->setSelected(select); } +#endif /*! Returns a list of all selected items in the list widget. @@ -1816,6 +1831,7 @@ QList<QListWidgetItem*> QListWidget::findItems(const QString &text, Qt::MatchFla return items; } +#if QT_DEPRECATED_SINCE(5, 13) /*! Returns \c true if the \a item is explicitly hidden; otherwise returns \c false. @@ -1839,6 +1855,7 @@ void QListWidget::setItemHidden(const QListWidgetItem *item, bool hide) { setRowHidden(row(item), hide); } +#endif /*! Scrolls the view if necessary to ensure that the \a item is visible. diff --git a/src/widgets/itemviews/qlistwidget.h b/src/widgets/itemviews/qlistwidget.h index e96f639502..c093d13e6d 100644 --- a/src/widgets/itemviews/qlistwidget.h +++ b/src/widgets/itemviews/qlistwidget.h @@ -72,8 +72,8 @@ public: inline QListWidget *listWidget() const { return view; } - inline void setSelected(bool select); - inline bool isSelected() const; + void setSelected(bool select); + bool isSelected() const; inline void setHidden(bool hide); inline bool isHidden() const; @@ -167,7 +167,6 @@ public: private: QListModel *listModel() const; -private: int rtti; QVector<void *> dummy; QListWidget *view; @@ -256,13 +255,21 @@ public: void setItemWidget(QListWidgetItem *item, QWidget *widget); inline void removeItemWidget(QListWidgetItem *item); +#if QT_DEPRECATED_SINCE(5, 13) + QT_DEPRECATED_X ("Use QListWidgetItem::isSelected() instead") bool isItemSelected(const QListWidgetItem *item) const; + QT_DEPRECATED_X ("Use QListWidgetItem::setSelected() instead") void setItemSelected(const QListWidgetItem *item, bool select); +#endif QList<QListWidgetItem*> selectedItems() const; QList<QListWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags) const; +#if QT_DEPRECATED_SINCE(5, 13) + QT_DEPRECATED_X ("Use QListWidgetItem::isHidden() instead") bool isItemHidden(const QListWidgetItem *item) const; + QT_DEPRECATED_X ("Use QListWidgetItem::setHidden() instead") void setItemHidden(const QListWidgetItem *item, bool hide); +#endif #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) protected: #endif @@ -341,17 +348,11 @@ inline void QListWidget::addItem(QListWidgetItem *aitem) inline QListWidgetItem *QListWidget::itemAt(int ax, int ay) const { return itemAt(QPoint(ax, ay)); } -inline void QListWidgetItem::setSelected(bool aselect) -{ if (view) view->setItemSelected(this, aselect); } - -inline bool QListWidgetItem::isSelected() const -{ return (view ? view->isItemSelected(this) : false); } - inline void QListWidgetItem::setHidden(bool ahide) -{ if (view) view->setItemHidden(this, ahide); } +{ if (view) view->setRowHidden(view->row(this), ahide); } inline bool QListWidgetItem::isHidden() const -{ return (view ? view->isItemHidden(this) : false); } +{ return (view ? view->isRowHidden(view->row(this)) : false); } QT_END_NAMESPACE diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp index d8e14df353..0c1b20d61a 100644 --- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp @@ -344,7 +344,7 @@ void tst_QListWidget::addItem2() testWidget->addItem(item); QCOMPARE(testWidget->count(), ++count); QCOMPARE(testWidget->item(testWidget->count()-1), item); - QCOMPARE(testWidget->isItemHidden(item), false); + QCOMPARE(item->isHidden(), false); } void tst_QListWidget::addItems() @@ -402,9 +402,11 @@ void tst_QListWidget::closePersistentEditor() void tst_QListWidget::setItemHidden() { +#if QT_DEPRECATED_SINCE(5, 13) // Boundary checking testWidget->setItemHidden(0, true); testWidget->setItemHidden(0, false); +#endif int totalHidden = 0; for (int i = 0; i < testWidget->model()->rowCount(); ++i) @@ -421,27 +423,27 @@ void tst_QListWidget::setItemHidden() newTotal++; QCOMPARE(newTotal, totalHidden); - testWidget->setItemHidden(item, true); - QCOMPARE(testWidget->isItemHidden(item), true); + item->setHidden(true); + QCOMPARE(item->isHidden(), true); // Check that nothing else changed newTotal = 0; for (int i = 0; i < testWidget->model()->rowCount(); ++i) - if (testWidget->isItemHidden(testWidget->item(i))) + if (testWidget->item(i)->isHidden()) newTotal++; QCOMPARE(newTotal, totalHidden + 1); - testWidget->setItemHidden(item, false); - QCOMPARE(testWidget->isItemHidden(item), false); + item->setHidden(false); + QCOMPARE(item->isHidden(), false); // Check that nothing else changed newTotal = 0; for (int i = 0; i < testWidget->model()->rowCount(); ++i) - if (testWidget->isItemHidden(testWidget->item(i))) + if (testWidget->item(i)->isHidden()) newTotal++; QCOMPARE(newTotal, totalHidden); - testWidget->setItemHidden(item, true); + item->setHidden(true); } void tst_QListWidget::setCurrentItem_data() @@ -847,7 +849,7 @@ void tst_QListWidget::selectedItems() testWidget->setSelectionMode(QListWidget::SingleSelection); for (int i=0; i<itemCount; ++i) { QListWidgetItem *item = testWidget->item(i); - testWidget->setItemSelected(item, true); + item->setSelected(true); QVERIFY(item->isSelected()); QCOMPARE(testWidget->selectedItems().count(), 1); } @@ -860,10 +862,10 @@ void tst_QListWidget::selectedItems() QCOMPARE(testWidget->count(), itemCount); // hide items foreach (int row, hiddenRows) - testWidget->setItemHidden(testWidget->item(row), true); + testWidget->item(row)->setHidden(true); // select items foreach (int row, selectedRows) - testWidget->setItemSelected(testWidget->item(row), true); + testWidget->item(row)->setSelected(true); // check that the correct number of items and the expected items are there QList<QListWidgetItem *> selectedItems = testWidget->selectedItems(); @@ -874,7 +876,7 @@ void tst_QListWidget::selectedItems() //check that isSelected agrees with selectedItems for (int i=0; i<itemCount; ++i) { QListWidgetItem *item = testWidget->item(i); - if (testWidget->isItemSelected(item)) + if (item->isSelected()) QVERIFY(selectedItems.contains(item)); } } |