diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-07-17 10:38:56 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-08 12:55:48 +0200 |
commit | bff5100177a2e1fb4f685ce72f935484ab027203 (patch) | |
tree | 24b5fb36a855549bb263810a7efbab5b0f7517f2 /tests | |
parent | bc87acaa1f72d907c68aa6fdb1586191eee8aead (diff) |
Add clearButton-property to QLineEdit.
Based on addAction-API.
Change-Id: Ie6c3d2d728b23a85cdd80428c92ee8208ae0a65c
Done-with: Kevin.Ottens@kdab.com
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
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<QToolButton *>(); + 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; |