From bab630e4bf0a9a651a7e15d0d15f9c0f57ab5e46 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 12 Dec 2012 22:40:30 +0100 Subject: QDialogButtonBox: add a missing constructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Setting the buttons in the constructor is a use-case that happens more often than setting the orientation. Yet, there was a (Qt::Orientation,QWidget*) constructor, but no (StandardButtons,QWidget*) one. This patch adds it. Change-Id: If6a5c9f7450a388cd77bd93c8dd144b2fdc11847 Reviewed-by: Friedemann Kleint Reviewed-by: David Faure (KDE) Reviewed-by: Kevin Ottens Reviewed-by: Konstantin Ritt Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qdialogbuttonbox.cpp | 15 +++++++++ src/widgets/widgets/qdialogbuttonbox.h | 3 +- .../qdialogbuttonbox/tst_qdialogbuttonbox.cpp | 37 ++++++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp index bc5d84e259..226969cdd1 100644 --- a/src/widgets/widgets/qdialogbuttonbox.cpp +++ b/src/widgets/widgets/qdialogbuttonbox.cpp @@ -668,6 +668,21 @@ QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent) d_func()->initLayout(); } +/*! + \since 5.2 + + Constructs a horizontal button box with the given \a parent, containing + the standard buttons specified by \a buttons. + + \sa orientation, addButton() +*/ +QDialogButtonBox::QDialogButtonBox(StandardButtons buttons, QWidget *parent) + : QWidget(*new QDialogButtonBoxPrivate(Qt::Horizontal), parent, 0) +{ + d_func()->initLayout(); + d_func()->createStandardButtons(buttons); +} + /*! Constructs a button box with the given \a orientation and \a parent, containing the standard buttons specified by \a buttons. diff --git a/src/widgets/widgets/qdialogbuttonbox.h b/src/widgets/widgets/qdialogbuttonbox.h index 6715c590e2..d8e1a997d4 100644 --- a/src/widgets/widgets/qdialogbuttonbox.h +++ b/src/widgets/widgets/qdialogbuttonbox.h @@ -115,7 +115,8 @@ public: QDialogButtonBox(QWidget *parent = 0); QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = 0); - QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation = Qt::Horizontal, + explicit QDialogButtonBox(StandardButtons buttons, QWidget *parent = 0); + QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = 0); ~QDialogButtonBox(); diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp index b0e454b643..db5b89f396 100644 --- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp +++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp @@ -72,6 +72,8 @@ private slots: void testConstructor2_data(); void testConstructor3(); void testConstructor3_data(); + void testConstructor4(); + void testConstructor4_data(); void setOrientation_data(); void setOrientation(); void addButton1_data(); @@ -201,6 +203,41 @@ void tst_QDialogButtonBox::testConstructor3() QTEST(buttonBox.buttons().count(), "buttonCount"); } +void tst_QDialogButtonBox::testConstructor4_data() +{ + QTest::addColumn("buttons"); + QTest::addColumn("buttonCount"); + + QTest::newRow("nothing") << (QDialogButtonBox::StandardButtons)0 << 0; + QTest::newRow("only 1") << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1; + QTest::newRow("only 1.. twice") + << (QDialogButtonBox::Ok | QDialogButtonBox::Ok) + << 1; + QTest::newRow("only 2") + << (QDialogButtonBox::Ok | QDialogButtonBox::Cancel) + << 2; + QTest::newRow("two different things") + << (QDialogButtonBox::Save | QDialogButtonBox::Close) + << 2; + QTest::newRow("three") + << (QDialogButtonBox::Ok + | QDialogButtonBox::Cancel + | QDialogButtonBox::Help) + << 3; + QTest::newRow("everything") + << (QDialogButtonBox::StandardButtons)UINT_MAX + << 18; +} + +void tst_QDialogButtonBox::testConstructor4() +{ + QFETCH(QDialogButtonBox::StandardButtons, buttons); + + QDialogButtonBox buttonBox(buttons); + QCOMPARE(buttonBox.orientation(), Qt::Horizontal); + QTEST(buttonBox.buttons().count(), "buttonCount"); +} + void tst_QDialogButtonBox::setOrientation_data() { QTest::addColumn("orientation"); -- cgit v1.2.3