From bff5100177a2e1fb4f685ce72f935484ab027203 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 17 Jul 2013 10:38:56 +0200 Subject: Add clearButton-property to QLineEdit. Based on addAction-API. Change-Id: Ie6c3d2d728b23a85cdd80428c92ee8208ae0a65c Done-with: Kevin.Ottens@kdab.com Reviewed-by: Frederik Gladhorn --- .../widgets/widgets/qlineedit/tst_qlineedit.cpp | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'tests/auto/widgets/widgets/qlineedit') diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index cd715b7b06..3000aad9ce 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -297,6 +297,7 @@ private slots: void undoRedoAndEchoModes_data(); void undoRedoAndEchoModes(); + void clearButton(); void sideWidgets(); protected slots: @@ -4057,6 +4058,47 @@ void tst_QLineEdit::undoRedoAndEchoModes() QCOMPARE(testWidget->text(), expected.at(2)); } +void tst_QLineEdit::clearButton() +{ + // Construct a listview with a stringlist model and filter model. + QWidget testWidget; + QVBoxLayout *l = new QVBoxLayout(&testWidget); + QLineEdit *filterLineEdit = new QLineEdit(&testWidget); + l->addWidget(filterLineEdit); + QListView *listView = new QListView(&testWidget); + QStringListModel *model = new QStringListModel(QStringList() << QStringLiteral("aa") << QStringLiteral("ab") << QStringLiteral("cc"), listView); + QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(listView); + filterModel->setSourceModel(model); + connect(filterLineEdit, SIGNAL(textChanged(QString)), filterModel, SLOT(setFilterFixedString(QString))); + listView->setModel(filterModel); + l->addWidget(listView); + testWidget.move(300, 300); + testWidget.show(); + qApp->setActiveWindow(&testWidget); + QVERIFY(QTest::qWaitForWindowActive(&testWidget)); + // Flip the clear button on,off, trying to detect crashes. + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(false); + QVERIFY(!filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(false); + QVERIFY(!filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + // Emulate filtering + QToolButton *clearButton = filterLineEdit->findChild(); + QVERIFY(clearButton); + QCOMPARE(filterModel->rowCount(), 3); + QTest::keyClick(filterLineEdit, 'a'); + QTRY_COMPARE(filterModel->rowCount(), 2); // matches 'aa', 'ab' + QTest::keyClick(filterLineEdit, 'b'); + QTRY_COMPARE(filterModel->rowCount(), 1); // matches 'ab' + QTest::mouseClick(clearButton, Qt::LeftButton, 0, QRect(QPoint(0, 0), clearButton->size()).center()); + QTRY_COMPARE(filterModel->rowCount(), 3); +} + void tst_QLineEdit::sideWidgets() { QWidget testWidget; -- cgit v1.2.3