diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-06-13 16:23:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-06 08:19:38 +0200 |
commit | 9ce12cc8de940cdd450a28f4bd079acfc3621aa3 (patch) | |
tree | ca07f5b57179b58caae43f0297be4f4d9834d8e5 /tests | |
parent | c207724c9bb8e205e756086950063cc91656e401 (diff) |
Add side widgets to QLineEdit via QAction.
Add QLineEdit::addAction() overloads,
allowing for a variable number of icons or user-defined
widgets.
Change-Id: Id298f18c2f47cc998170357e65cc6098df851aab
Done-with: Kevin.Ottens@kdab.com
Reviewed-by: Thomas Zander <zander@kde.org>
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index ae3fefc45a..cd715b7b06 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -46,6 +46,9 @@ #include "qstringlist.h" #include "qstyle.h" #include "qvalidator.h" +#include "qwidgetaction.h" +#include "qimage.h" +#include "qicon.h" #include "qcompleter.h" #include "qstandarditemmodel.h" #include <qpa/qplatformtheme.h> @@ -61,8 +64,12 @@ #include <private/qlineedit_p.h> #include <private/qwidgetlinecontrol_p.h> #include <qmenu.h> +#include <qlabel.h> #include <qlayout.h> #include <qspinbox.h> +#include <qlistview.h> +#include <qstringlistmodel.h> +#include <qsortfilterproxymodel.h> #include <qdebug.h> #include "qcommonstyle.h" @@ -290,6 +297,8 @@ private slots: void undoRedoAndEchoModes_data(); void undoRedoAndEchoModes(); + void sideWidgets(); + protected slots: void editingFinished(); @@ -4048,5 +4057,39 @@ void tst_QLineEdit::undoRedoAndEchoModes() QCOMPARE(testWidget->text(), expected.at(2)); } +void tst_QLineEdit::sideWidgets() +{ + QWidget testWidget; + QVBoxLayout *l = new QVBoxLayout(&testWidget); + QLineEdit *lineEdit = new QLineEdit(&testWidget); + l->addWidget(lineEdit); + l->addSpacerItem(new QSpacerItem(0, 50, QSizePolicy::Ignored, QSizePolicy::Fixed)); + QImage image(QSize(20, 20), QImage::Format_ARGB32); + image.fill(Qt::yellow); + QAction *iconAction = new QAction(QIcon(QPixmap::fromImage(image)), QString(), lineEdit); + QWidgetAction *label1Action = new QWidgetAction(lineEdit); + label1Action->setDefaultWidget(new QLabel(QStringLiteral("l1"))); + QWidgetAction *label2Action = new QWidgetAction(lineEdit); + label2Action->setDefaultWidget(new QLabel(QStringLiteral("l2"))); + QWidgetAction *label3Action = new QWidgetAction(lineEdit); + label3Action->setDefaultWidget(new QLabel(QStringLiteral("l3"))); + lineEdit->addAction(iconAction, QLineEdit::LeadingPosition); + lineEdit->addAction(label2Action, QLineEdit::LeadingPosition); + lineEdit->addAction(label1Action, QLineEdit::TrailingPosition); + lineEdit->addAction(label3Action, QLineEdit::TrailingPosition); + testWidget.move(300, 300); + testWidget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&testWidget)); + // Arbitrarily add/remove actions, trying to detect crashes. Add QTRY_VERIFY(false) to view the result. + delete label3Action; + lineEdit->removeAction(label2Action); + lineEdit->removeAction(iconAction); + lineEdit->removeAction(label1Action); + lineEdit->removeAction(iconAction); + lineEdit->removeAction(label1Action); + lineEdit->addAction(iconAction); + lineEdit->addAction(iconAction); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" |