QAbstractItemView: add isPersistentEditorOpen()

[ChangeLog][QtWidgets][QAbstractItemView/QTreeWidget/QTableWidget/QListWidget]
Added isPersistentEditorOpen().

Task-number: QTBUG-61139
Change-Id: I74997d9626812fed83591d32c503680575ec0f7c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
Marc Mutz 2017-06-01 13:04:12 +02:00
parent ab420484e7
commit 4088f4ce4d
9 changed files with 75 additions and 8 deletions

View File

@ -3138,7 +3138,7 @@ int QAbstractItemView::sizeHintForColumn(int column) const
Opens a persistent editor on the item at the given \a index. Opens a persistent editor on the item at the given \a index.
If no editor exists, the delegate will create a new editor. If no editor exists, the delegate will create a new editor.
\sa closePersistentEditor() \sa closePersistentEditor(), isPersistentEditorOpen()
*/ */
void QAbstractItemView::openPersistentEditor(const QModelIndex &index) void QAbstractItemView::openPersistentEditor(const QModelIndex &index)
{ {
@ -3157,7 +3157,7 @@ void QAbstractItemView::openPersistentEditor(const QModelIndex &index)
/*! /*!
Closes the persistent editor for the item at the given \a index. Closes the persistent editor for the item at the given \a index.
\sa openPersistentEditor() \sa openPersistentEditor(), isPersistentEditorOpen()
*/ */
void QAbstractItemView::closePersistentEditor(const QModelIndex &index) void QAbstractItemView::closePersistentEditor(const QModelIndex &index)
{ {
@ -3171,6 +3171,19 @@ void QAbstractItemView::closePersistentEditor(const QModelIndex &index)
} }
} }
/*!
\since 5.10
Returns whether a persistent editor is open for the item at index \a index.
\sa openPersistentEditor(), closePersistentEditor()
*/
bool QAbstractItemView::isPersistentEditorOpen(const QModelIndex &index) const
{
Q_D(const QAbstractItemView);
return d->editorForIndex(index).widget;
}
/*! /*!
\since 4.1 \since 4.1

View File

@ -213,6 +213,7 @@ public:
void openPersistentEditor(const QModelIndex &index); void openPersistentEditor(const QModelIndex &index);
void closePersistentEditor(const QModelIndex &index); void closePersistentEditor(const QModelIndex &index);
bool isPersistentEditorOpen(const QModelIndex &index) const;
void setIndexWidget(const QModelIndex &index, QWidget *widget); void setIndexWidget(const QModelIndex &index, QWidget *widget);
QWidget *indexWidget(const QModelIndex &index) const; QWidget *indexWidget(const QModelIndex &index) const;

View File

@ -1617,7 +1617,7 @@ void QListWidget::editItem(QListWidgetItem *item)
Opens an editor for the given \a item. The editor remains open after Opens an editor for the given \a item. The editor remains open after
editing. editing.
\sa closePersistentEditor() \sa closePersistentEditor(), isPersistentEditorOpen()
*/ */
void QListWidget::openPersistentEditor(QListWidgetItem *item) void QListWidget::openPersistentEditor(QListWidgetItem *item)
{ {
@ -1629,7 +1629,7 @@ void QListWidget::openPersistentEditor(QListWidgetItem *item)
/*! /*!
Closes the persistent editor for the given \a item. Closes the persistent editor for the given \a item.
\sa openPersistentEditor() \sa openPersistentEditor(), isPersistentEditorOpen()
*/ */
void QListWidget::closePersistentEditor(QListWidgetItem *item) void QListWidget::closePersistentEditor(QListWidgetItem *item)
{ {
@ -1638,6 +1638,20 @@ void QListWidget::closePersistentEditor(QListWidgetItem *item)
QAbstractItemView::closePersistentEditor(index); QAbstractItemView::closePersistentEditor(index);
} }
/*!
\since 5.10
Returns whether a persistent editor is open for item \a item.
\sa openPersistentEditor(), closePersistentEditor()
*/
bool QListWidget::isPersistentEditorOpen(QListWidgetItem *item) const
{
Q_D(const QListWidget);
const QModelIndex index = d->listModel()->index(item);
return QAbstractItemView::isPersistentEditorOpen(index);
}
/*! /*!
\since 4.1 \since 4.1

View File

@ -240,6 +240,8 @@ public:
void editItem(QListWidgetItem *item); void editItem(QListWidgetItem *item);
void openPersistentEditor(QListWidgetItem *item); void openPersistentEditor(QListWidgetItem *item);
void closePersistentEditor(QListWidgetItem *item); void closePersistentEditor(QListWidgetItem *item);
using QAbstractItemView::isPersistentEditorOpen;
bool isPersistentEditorOpen(QListWidgetItem *item) const;
QWidget *itemWidget(QListWidgetItem *item) const; QWidget *itemWidget(QListWidgetItem *item) const;
void setItemWidget(QListWidgetItem *item, QWidget *widget); void setItemWidget(QListWidgetItem *item, QWidget *widget);

View File

@ -2221,7 +2221,7 @@ void QTableWidget::editItem(QTableWidgetItem *item)
/*! /*!
Opens an editor for the give \a item. The editor remains open after editing. Opens an editor for the give \a item. The editor remains open after editing.
\sa closePersistentEditor() \sa closePersistentEditor(), isPersistentEditorOpen()
*/ */
void QTableWidget::openPersistentEditor(QTableWidgetItem *item) void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
{ {
@ -2235,7 +2235,7 @@ void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
/*! /*!
Closes the persistent editor for \a item. Closes the persistent editor for \a item.
\sa openPersistentEditor() \sa openPersistentEditor(), isPersistentEditorOpen()
*/ */
void QTableWidget::closePersistentEditor(QTableWidgetItem *item) void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
{ {
@ -2246,6 +2246,20 @@ void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
QAbstractItemView::closePersistentEditor(index); QAbstractItemView::closePersistentEditor(index);
} }
/*!
\since 5.10
Returns whether a persistent editor is open for item \a item.
\sa openPersistentEditor(), closePersistentEditor()
*/
bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const
{
Q_D(const QTableWidget);
const QModelIndex index = d->tableModel()->index(item);
return QAbstractItemView::isPersistentEditorOpen(index);
}
/*! /*!
\since 4.1 \since 4.1

View File

@ -263,6 +263,8 @@ public:
void editItem(QTableWidgetItem *item); void editItem(QTableWidgetItem *item);
void openPersistentEditor(QTableWidgetItem *item); void openPersistentEditor(QTableWidgetItem *item);
void closePersistentEditor(QTableWidgetItem *item); void closePersistentEditor(QTableWidgetItem *item);
using QAbstractItemView::isPersistentEditorOpen;
bool isPersistentEditorOpen(QTableWidgetItem *item) const;
QWidget *cellWidget(int row, int column) const; QWidget *cellWidget(int row, int column) const;
void setCellWidget(int row, int column, QWidget *widget); void setCellWidget(int row, int column, QWidget *widget);

View File

@ -2907,7 +2907,7 @@ void QTreeWidget::editItem(QTreeWidgetItem *item, int column)
/*! /*!
Opens a persistent editor for the \a item in the given \a column. Opens a persistent editor for the \a item in the given \a column.
\sa closePersistentEditor() \sa closePersistentEditor(), isPersistentEditorOpen()
*/ */
void QTreeWidget::openPersistentEditor(QTreeWidgetItem *item, int column) void QTreeWidget::openPersistentEditor(QTreeWidgetItem *item, int column)
@ -2922,7 +2922,7 @@ void QTreeWidget::openPersistentEditor(QTreeWidgetItem *item, int column)
This function has no effect if no persistent editor is open for this This function has no effect if no persistent editor is open for this
combination of item and column. combination of item and column.
\sa openPersistentEditor() \sa openPersistentEditor(), isPersistentEditorOpen()
*/ */
void QTreeWidget::closePersistentEditor(QTreeWidgetItem *item, int column) void QTreeWidget::closePersistentEditor(QTreeWidgetItem *item, int column)
@ -2931,6 +2931,21 @@ void QTreeWidget::closePersistentEditor(QTreeWidgetItem *item, int column)
QAbstractItemView::closePersistentEditor(d->index(item, column)); QAbstractItemView::closePersistentEditor(d->index(item, column));
} }
/*!
\since 5.10
Returns whether a persistent editor is open for item \a item in
column \a column.
\sa openPersistentEditor(), closePersistentEditor()
*/
bool QTreeWidget::isPersistentEditorOpen(QTreeWidgetItem *item, int column) const
{
Q_D(const QTreeWidget);
return QAbstractItemView::isPersistentEditorOpen(d->index(item, column));
}
/*! /*!
\since 4.1 \since 4.1

View File

@ -300,6 +300,8 @@ public:
void editItem(QTreeWidgetItem *item, int column = 0); void editItem(QTreeWidgetItem *item, int column = 0);
void openPersistentEditor(QTreeWidgetItem *item, int column = 0); void openPersistentEditor(QTreeWidgetItem *item, int column = 0);
void closePersistentEditor(QTreeWidgetItem *item, int column = 0); void closePersistentEditor(QTreeWidgetItem *item, int column = 0);
using QAbstractItemView::isPersistentEditorOpen;
bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const;
QWidget *itemWidget(QTreeWidgetItem *item, int column) const; QWidget *itemWidget(QTreeWidgetItem *item, int column) const;
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget); void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget);

View File

@ -626,7 +626,9 @@ void tst_QAbstractItemView::rowDelegate()
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QModelIndex index = model.index(3, 0); QModelIndex index = model.index(3, 0);
QVERIFY(!view.isPersistentEditorOpen(index));
view.openPersistentEditor(index); view.openPersistentEditor(index);
QVERIFY(view.isPersistentEditorOpen(index));
QWidget *w = view.indexWidget(index); QWidget *w = view.indexWidget(index);
QVERIFY(w); QVERIFY(w);
QCOMPARE(w->metaObject()->className(), "QWidget"); QCOMPARE(w->metaObject()->className(), "QWidget");
@ -646,7 +648,9 @@ void tst_QAbstractItemView::columnDelegate()
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QModelIndex index = model.index(0, 3); QModelIndex index = model.index(0, 3);
QVERIFY(!view.isPersistentEditorOpen(index));
view.openPersistentEditor(index); view.openPersistentEditor(index);
QVERIFY(view.isPersistentEditorOpen(index));
QWidget *w = view.indexWidget(index); QWidget *w = view.indexWidget(index);
QVERIFY(w); QVERIFY(w);
QCOMPARE(w->metaObject()->className(), "QWidget"); QCOMPARE(w->metaObject()->className(), "QWidget");