Fix deprecation of QComboBox:::currentIndexChanged(const QString&)
Don't introduce another overload with two parameters. Users
want a simple signal to connect to, not another overload. Deprecate
the currentIndexChanged(QString) overload, usage of that can/should
get replaced by currentTextChanged().
This partially reverts commit 11dc7b35c8
.
Change-Id: I5e7d16413f3d62b1a5a7a197f510af2c45cdfa55
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
This commit is contained in:
parent
b15ed929f3
commit
46ebd11e66
@ -904,7 +904,8 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
|
|||||||
This signal is sent when the user chooses an item in the combobox.
|
This signal is sent when the user chooses an item in the combobox.
|
||||||
The item's \a index is passed. Note that this signal is sent even
|
The item's \a index is passed. Note that this signal is sent even
|
||||||
when the choice is not changed. If you need to know when the
|
when the choice is not changed. If you need to know when the
|
||||||
choice actually changes, use signal currentIndexChanged().
|
choice actually changes, use signal currentIndexChanged() or
|
||||||
|
currentTextChanged().
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -914,7 +915,8 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
|
|||||||
This signal is sent when the user chooses an item in the combobox.
|
This signal is sent when the user chooses an item in the combobox.
|
||||||
The item's \a text is passed. Note that this signal is sent even
|
The item's \a text is passed. Note that this signal is sent even
|
||||||
when the choice is not changed. If you need to know when the
|
when the choice is not changed. If you need to know when the
|
||||||
choice actually changes, use signal currentIndexChanged().
|
choice actually changes, use signal currentIndexChanged() or
|
||||||
|
currentTextChanged().
|
||||||
|
|
||||||
\obsolete Use QComboBox::textActivated() instead
|
\obsolete Use QComboBox::textActivated() instead
|
||||||
*/
|
*/
|
||||||
@ -925,7 +927,8 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
|
|||||||
This signal is sent when the user chooses an item in the combobox.
|
This signal is sent when the user chooses an item in the combobox.
|
||||||
The item's \a text is passed. Note that this signal is sent even
|
The item's \a text is passed. Note that this signal is sent even
|
||||||
when the choice is not changed. If you need to know when the
|
when the choice is not changed. If you need to know when the
|
||||||
choice actually changes, use signal currentIndexChanged().
|
choice actually changes, use signal currentIndexChanged() or
|
||||||
|
currentTextChanged().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -959,8 +962,6 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
|
|||||||
changes either through user interaction or programmatically. The
|
changes either through user interaction or programmatically. The
|
||||||
item's \a index is passed or -1 if the combobox becomes empty or the
|
item's \a index is passed or -1 if the combobox becomes empty or the
|
||||||
currentIndex was reset.
|
currentIndex was reset.
|
||||||
|
|
||||||
\obsolete Use currentIndexChanged(int index, const QString &text) instead
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -971,17 +972,8 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
|
|||||||
changes either through user interaction or programmatically. The
|
changes either through user interaction or programmatically. The
|
||||||
item's \a text is passed.
|
item's \a text is passed.
|
||||||
|
|
||||||
\obsolete Use currentIndexChanged(int index, const QString &text) instead
|
\obsolete Use currentIndexChanged(int) and get the text from
|
||||||
*/
|
the itemText(int) method.
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn void QComboBox::currentIndexChanged(int index, const QString &text)
|
|
||||||
\since 5.15
|
|
||||||
|
|
||||||
This signal is sent whenever the currentIndex in the combobox
|
|
||||||
changes either through user interaction or programmatically. The
|
|
||||||
item's \a index is passed or -1 if the combobox becomes empty or
|
|
||||||
the currentIndex was reset. The item's \a text is also passed.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -1013,7 +1005,6 @@ QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent)
|
|||||||
d->init();
|
d->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class QComboBox
|
\class QComboBox
|
||||||
\brief The QComboBox widget is a combined button and popup list.
|
\brief The QComboBox widget is a combined button and popup list.
|
||||||
@ -1036,9 +1027,10 @@ QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent)
|
|||||||
to clear the displayed string without changing the combobox's
|
to clear the displayed string without changing the combobox's
|
||||||
contents.
|
contents.
|
||||||
|
|
||||||
There are two signals emitted if the current item of a combobox
|
There are three signals emitted if the current item of a combobox
|
||||||
changes, currentIndexChanged() and activated().
|
changes, currentIndexChanged(), currentTextChanged() and activated().
|
||||||
currentIndexChanged() is always emitted regardless if the change
|
currentIndexChanged() and currentTextChanged() are always emitted
|
||||||
|
regardless if the change
|
||||||
was done programmatically or by user interaction, while
|
was done programmatically or by user interaction, while
|
||||||
activated() is only emitted when the change is caused by user
|
activated() is only emitted when the change is caused by user
|
||||||
interaction. The highlighted() signal is emitted when the user
|
interaction. The highlighted() signal is emitted when the user
|
||||||
@ -1466,14 +1458,13 @@ void QComboBoxPrivate::_q_emitCurrentIndexChanged(const QModelIndex &index)
|
|||||||
{
|
{
|
||||||
Q_Q(QComboBox);
|
Q_Q(QComboBox);
|
||||||
const QString text = itemText(index);
|
const QString text = itemText(index);
|
||||||
#if QT_DEPRECATED_SINCE(5, 15)
|
emit q->currentIndexChanged(index.row());
|
||||||
|
#if QT_DEPRECATED_SINCE(5, 13)
|
||||||
QT_WARNING_PUSH
|
QT_WARNING_PUSH
|
||||||
QT_WARNING_DISABLE_DEPRECATED
|
QT_WARNING_DISABLE_DEPRECATED
|
||||||
emit q->currentIndexChanged(index.row());
|
|
||||||
emit q->currentIndexChanged(text);
|
emit q->currentIndexChanged(text);
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
#endif
|
#endif
|
||||||
emit q->currentIndexChanged(index.row(), text);
|
|
||||||
// signal lineEdit.textChanged already connected to signal currentTextChanged, so don't emit double here
|
// signal lineEdit.textChanged already connected to signal currentTextChanged, so don't emit double here
|
||||||
if (!lineEdit)
|
if (!lineEdit)
|
||||||
emit q->currentTextChanged(text);
|
emit q->currentTextChanged(text);
|
||||||
|
@ -233,13 +233,12 @@ Q_SIGNALS:
|
|||||||
void textActivated(const QString &);
|
void textActivated(const QString &);
|
||||||
void highlighted(int index);
|
void highlighted(int index);
|
||||||
void textHighlighted(const QString &);
|
void textHighlighted(const QString &);
|
||||||
#if QT_DEPRECATED_SINCE(5, 15)
|
|
||||||
QT_DEPRECATED_VERSION_X_5_15("Use currentIndexChanged(int, const QString &) instead")
|
|
||||||
void currentIndexChanged(int index);
|
void currentIndexChanged(int index);
|
||||||
QT_DEPRECATED_VERSION_X_5_15("Use currentIndexChanged(int, const QString &) instead")
|
#if QT_DEPRECATED_SINCE(5, 15)
|
||||||
|
QT_DEPRECATED_VERSION_X_5_15(
|
||||||
|
"Use currentIndexChanged(int) instead, and get the text using itemText(index)")
|
||||||
void currentIndexChanged(const QString &);
|
void currentIndexChanged(const QString &);
|
||||||
#endif
|
#endif
|
||||||
void currentIndexChanged(int index, const QString &text);
|
|
||||||
void currentTextChanged(const QString &);
|
void currentTextChanged(const QString &);
|
||||||
#if QT_DEPRECATED_SINCE(5, 15)
|
#if QT_DEPRECATED_SINCE(5, 15)
|
||||||
QT_DEPRECATED_VERSION_X(5, 15, "Use textActivated() instead")
|
QT_DEPRECATED_VERSION_X(5, 15, "Use textActivated() instead")
|
||||||
|
@ -1208,7 +1208,8 @@ void tst_QComboBox::currentIndex()
|
|||||||
QVERIFY(testWidget->currentText().isEmpty());
|
QVERIFY(testWidget->currentText().isEmpty());
|
||||||
|
|
||||||
// spy on currentIndexChanged
|
// spy on currentIndexChanged
|
||||||
QSignalSpy indexChangedSpy(testWidget, SIGNAL(currentIndexChanged(int, QString)));
|
QSignalSpy indexChangedInt(testWidget, SIGNAL(currentIndexChanged(int)));
|
||||||
|
QSignalSpy indexChangedString(testWidget, SIGNAL(currentIndexChanged(QString)));
|
||||||
|
|
||||||
// stuff items into it
|
// stuff items into it
|
||||||
foreach(QString text, initialItems) {
|
foreach(QString text, initialItems) {
|
||||||
@ -1232,12 +1233,16 @@ void tst_QComboBox::currentIndex()
|
|||||||
QCOMPARE(testWidget->currentText(), expectedCurrentText);
|
QCOMPARE(testWidget->currentText(), expectedCurrentText);
|
||||||
|
|
||||||
// check that signal count is correct
|
// check that signal count is correct
|
||||||
QCOMPARE(indexChangedSpy.count(), expectedSignalCount);
|
QCOMPARE(indexChangedInt.count(), expectedSignalCount);
|
||||||
|
QCOMPARE(indexChangedString.count(), expectedSignalCount);
|
||||||
|
|
||||||
// compare with last sent signal values
|
// compare with last sent signal values
|
||||||
if (indexChangedSpy.count())
|
if (indexChangedInt.count())
|
||||||
QCOMPARE(indexChangedSpy.at(indexChangedSpy.count() - 1).at(0).toInt(),
|
QCOMPARE(indexChangedInt.at(indexChangedInt.count() - 1).at(0).toInt(),
|
||||||
testWidget->currentIndex());
|
testWidget->currentIndex());
|
||||||
|
if (indexChangedString.count())
|
||||||
|
QCOMPARE(indexChangedString.at(indexChangedString.count() - 1).at(0).toString(),
|
||||||
|
testWidget->currentText());
|
||||||
|
|
||||||
if (edit) {
|
if (edit) {
|
||||||
testWidget->setCurrentIndex(-1);
|
testWidget->setCurrentIndex(-1);
|
||||||
@ -2336,8 +2341,7 @@ public:
|
|||||||
{
|
{
|
||||||
QStringList list;
|
QStringList list;
|
||||||
list << "one" << "two";
|
list << "one" << "two";
|
||||||
connect(this, SIGNAL(currentIndexChanged(int, QString)),
|
connect(this, SIGNAL(currentIndexChanged(int)), this, SLOT(onCurrentIndexChanged(int)));
|
||||||
this, SLOT(onCurrentIndexChanged(int)));
|
|
||||||
addItems(list);
|
addItems(list);
|
||||||
}
|
}
|
||||||
public slots:
|
public slots:
|
||||||
@ -2763,7 +2767,7 @@ void tst_QComboBox::resetModel()
|
|||||||
};
|
};
|
||||||
QComboBox cb;
|
QComboBox cb;
|
||||||
StringListModel model({"1", "2"});
|
StringListModel model({"1", "2"});
|
||||||
QSignalSpy spy(&cb, QOverload<int, const QString &>::of(&QComboBox::currentIndexChanged));
|
QSignalSpy spy(&cb, QOverload<int>::of(&QComboBox::currentIndexChanged));
|
||||||
QCOMPARE(spy.count(), 0);
|
QCOMPARE(spy.count(), 0);
|
||||||
QCOMPARE(cb.currentIndex(), -1); //no selection
|
QCOMPARE(cb.currentIndex(), -1); //no selection
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user