diff options
Diffstat (limited to 'tests/auto/widgets/widgets')
38 files changed, 237 insertions, 99 deletions
diff --git a/tests/auto/widgets/widgets/qabstractscrollarea/qabstractscrollarea.pro b/tests/auto/widgets/widgets/qabstractscrollarea/qabstractscrollarea.pro index 911898407b..2d9aa52e3a 100644 --- a/tests/auto/widgets/widgets/qabstractscrollarea/qabstractscrollarea.pro +++ b/tests/auto/widgets/widgets/qabstractscrollarea/qabstractscrollarea.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qabstractscrollarea QT += widgets testlib SOURCES += tst_qabstractscrollarea.cpp diff --git a/tests/auto/widgets/widgets/qabstractslider/qabstractslider.pro b/tests/auto/widgets/widgets/qabstractslider/qabstractslider.pro index 020be08867..6453999786 100644 --- a/tests/auto/widgets/widgets/qabstractslider/qabstractslider.pro +++ b/tests/auto/widgets/widgets/qabstractslider/qabstractslider.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qabstractslider QT += widgets testlib SOURCES += tst_qabstractslider.cpp diff --git a/tests/auto/widgets/widgets/qabstractspinbox/qabstractspinbox.pro b/tests/auto/widgets/widgets/qabstractspinbox/qabstractspinbox.pro index 8fa1c0fcac..f9b601228e 100644 --- a/tests/auto/widgets/widgets/qabstractspinbox/qabstractspinbox.pro +++ b/tests/auto/widgets/widgets/qabstractspinbox/qabstractspinbox.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qabstractspinbox QT += widgets testlib SOURCES += tst_qabstractspinbox.cpp diff --git a/tests/auto/widgets/widgets/qcombobox/qcombobox.pro b/tests/auto/widgets/widgets/qcombobox/qcombobox.pro index 03e8ed75ed..88b9d08557 100644 --- a/tests/auto/widgets/widgets/qcombobox/qcombobox.pro +++ b/tests/auto/widgets/widgets/qcombobox/qcombobox.pro @@ -2,4 +2,3 @@ CONFIG += testcase TARGET = tst_qcombobox QT += widgets widgets-private gui-private core-private testlib SOURCES += tst_qcombobox.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index 09129f0676..eb8b610352 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -2308,9 +2308,10 @@ void tst_QComboBox::task191329_size() QStandardItemModel model(rows, 2); for (int row = 0; row < model.rowCount(); ++row) { + const QString rowS = QLatin1String("row ") + QString::number(row); for (int column = 0; column < model.columnCount(); ++column) { - QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); - model.setItem(row, column, item); + const QString text = rowS + QLatin1String(", column ") + QString::number(column); + model.setItem(row, column, new QStandardItem(text)); } } QTableView *table = new QTableView(); @@ -2687,7 +2688,8 @@ void tst_QComboBox::resetModel() void reset() { - QStringListModel::reset(); + QStringListModel::beginResetModel(); + QStringListModel::endResetModel(); } }; QComboBox cb; @@ -2859,10 +2861,11 @@ void tst_QComboBox::task_QTBUG_10491_currentIndexAndModelColumn() QStandardItemModel model(4, 4, &comboBox); for (int i = 0; i < 4; i++){ - model.setItem(i, 0, new QStandardItem(QString("Employee Nr %1").arg(i))); - model.setItem(i, 1, new QStandardItem(QString("Street Nr %1").arg(i))); - model.setItem(i, 2, new QStandardItem(QString("Town Nr %1").arg(i))); - model.setItem(i, 3, new QStandardItem(QString("Phone Nr %1").arg(i))); + const QString iS = QString::number(i); + model.setItem(i, 0, new QStandardItem(QLatin1String("Employee Nr ") + iS)); + model.setItem(i, 1, new QStandardItem(QLatin1String("Street Nr ") + iS)); + model.setItem(i, 2, new QStandardItem(QLatin1String("Town Nr ") + iS)); + model.setItem(i, 3, new QStandardItem(QLatin1String("Phone Nr ") + iS)); } comboBox.setModel(&model); comboBox.setModelColumn(0); @@ -2908,12 +2911,12 @@ void tst_QComboBox::itemData() // ensure that the currentText(), the DisplayRole and the EditRole // stay in sync when using QComboBox's default model for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); + QString itemText = QLatin1String("item text ") + QString::number(i); comboBox.addItem(itemText); } for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); + QString itemText = QLatin1String("item text ") + QString::number(i); QCOMPARE(comboBox.itemText(i), itemText); QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); @@ -2925,14 +2928,11 @@ void tst_QComboBox::itemData() QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); } - for (int i = 0; i < itemCount; ++i) { - // now change by using setItemText - QString itemText = QString("setItemText %1").arg(i); - comboBox.setItemText(i, itemText); - } + for (int i = 0; i < itemCount; ++i) // now change by using setItemText + comboBox.setItemText(i, QLatin1String("setItemText ") + QString::number(i)); for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("setItemText %1").arg(i); + QString itemText = QLatin1String("setItemText ") + QString::number(i); QCOMPARE(comboBox.itemText(i), itemText); QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); @@ -2946,12 +2946,12 @@ void tst_QComboBox::itemData() for (int i = 0; i < itemCount; ++i) { // now change by changing the DisplayRole's data - QString itemText = QString("setItemData(DisplayRole) %1").arg(i); + QString itemText = QLatin1String("setItemData(DisplayRole) ") + QString::number(i); comboBox.setItemData(i, QVariant(itemText), Qt::DisplayRole); } for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("setItemData(DisplayRole) %1").arg(i); + QString itemText = QLatin1String("setItemData(DisplayRole) ") + QString::number(i); QCOMPARE(comboBox.itemText(i), itemText); QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); @@ -2965,12 +2965,12 @@ void tst_QComboBox::itemData() for (int i = 0; i < itemCount; ++i) { // now change by changing the EditRole's data - QString itemText = QString("setItemData(EditRole) %1").arg(i); + QString itemText = QLatin1String("setItemData(EditRole) ") + QString::number(i); comboBox.setItemData(i, QVariant(itemText), Qt::EditRole); } for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("setItemData(EditRole) %1").arg(i); + QString itemText = QLatin1String("setItemData(EditRole) ") + QString::number(i); QCOMPARE(comboBox.itemText(i), itemText); QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); @@ -2987,14 +2987,14 @@ void tst_QComboBox::itemData() // set additional user data in the addItem call for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); - QString itemDataText = QString("item data %1").arg(i); - comboBox.addItem(itemText, QVariant(itemDataText)); + const QString iS = QString::number(i); + comboBox.addItem(QLatin1String("item text ") + iS, QVariant(QLatin1String("item data ") + iS)); } for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); - QString itemDataText = QString("item data %1").arg(i); + const QString iS = QString::number(i); + QString itemText = QLatin1String("item text ") + iS; + QString itemDataText = QLatin1String("item data ") + iS; QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); QCOMPARE(comboBox.itemData(i).toString(), itemDataText); @@ -3017,8 +3017,9 @@ void tst_QComboBox::itemData() QString qtlogoPath = QFINDTESTDATA("qtlogo.png"); QIcon icon = QIcon(QPixmap(qtlogoPath)); for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); - QString itemDataText = QString("item data %1").arg(i); + const QString iS = QString::number(i); + QString itemText = QLatin1String("item text ") + iS; + QString itemDataText = QLatin1String("item data ") + iS; double d = i; comboBox.addItem(itemText); comboBox.setItemData(i, QVariant(itemDataText), Qt::UserRole); @@ -3027,8 +3028,9 @@ void tst_QComboBox::itemData() } for (int i = 0; i < itemCount; ++i) { - QString itemText = QString("item text %1").arg(i); - QString itemDataText = QString("item data %1").arg(i); + const QString iS = QString::number(i); + QString itemText = QLatin1String("item text ") + iS; + QString itemDataText = QLatin1String("item data ") + iS; double d = i; QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); diff --git a/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro b/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro index 690edd5c9e..411185ae2a 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro +++ b/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qdatetimeedit QT += widgets testlib core-private widgets-private SOURCES += tst_qdatetimeedit.cpp diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index d41398046f..d496386773 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -3436,7 +3436,7 @@ void tst_QDateTimeEdit::deleteCalendarWidget() // it should create a new widget QVERIFY(edit.calendarWidget()); - QVERIFY(edit.calendarWidget()->objectName() != "cw1"); + QVERIFY(edit.calendarWidget()->objectName() != QLatin1String("cw1")); } } diff --git a/tests/auto/widgets/widgets/qdial/qdial.pro b/tests/auto/widgets/widgets/qdial/qdial.pro index 0af9633236..9bdd61f9d5 100644 --- a/tests/auto/widgets/widgets/qdial/qdial.pro +++ b/tests/auto/widgets/widgets/qdial/qdial.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qdial QT += widgets testlib SOURCES += tst_qdial.cpp diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/qdialogbuttonbox.pro b/tests/auto/widgets/widgets/qdialogbuttonbox/qdialogbuttonbox.pro index 9892c48e0c..7f2ad59581 100644 --- a/tests/auto/widgets/widgets/qdialogbuttonbox/qdialogbuttonbox.pro +++ b/tests/auto/widgets/widgets/qdialogbuttonbox/qdialogbuttonbox.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test QT += widgets testlib SOURCES += tst_qdialogbuttonbox.cpp diff --git a/tests/auto/widgets/widgets/qdockwidget/qdockwidget.pro b/tests/auto/widgets/widgets/qdockwidget/qdockwidget.pro index eca396f1a8..5c1ef52036 100644 --- a/tests/auto/widgets/widgets/qdockwidget/qdockwidget.pro +++ b/tests/auto/widgets/widgets/qdockwidget/qdockwidget.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qdockwidget QT += widgets widgets-private testlib QT += core-private gui-private diff --git a/tests/auto/widgets/widgets/qfocusframe/qfocusframe.pro b/tests/auto/widgets/widgets/qfocusframe/qfocusframe.pro index 6fa0589f95..404edcd075 100644 --- a/tests/auto/widgets/widgets/qfocusframe/qfocusframe.pro +++ b/tests/auto/widgets/widgets/qfocusframe/qfocusframe.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qfocusframe QT += widgets testlib SOURCES += tst_qfocusframe.cpp diff --git a/tests/auto/widgets/widgets/qfontcombobox/qfontcombobox.pro b/tests/auto/widgets/widgets/qfontcombobox/qfontcombobox.pro index b21729bb9b..418789ac0f 100644 --- a/tests/auto/widgets/widgets/qfontcombobox/qfontcombobox.pro +++ b/tests/auto/widgets/widgets/qfontcombobox/qfontcombobox.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qfontcombobox QT += widgets testlib SOURCES += tst_qfontcombobox.cpp diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp index 5d6fdf2851..09de0e6dc9 100644 --- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp +++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp @@ -248,7 +248,7 @@ void tst_QFontComboBox::writingSystem_data() QTest::newRow("Runic") << QFontDatabase::Runic; for (int i = 0; i < 31; ++i) - QTest::newRow(qPrintable(QString("enum %1").arg(i))) << (QFontDatabase::WritingSystem)i; + QTest::newRow(("enum " + QByteArray::number(i)).constData()) << (QFontDatabase::WritingSystem)i; } // public QFontDatabase::WritingSystem writingSystem() const diff --git a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp index 81a6ba2ee3..03bd79683f 100644 --- a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp +++ b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp @@ -73,22 +73,24 @@ static void provideFrameData() for (int lineWidth = 0; lineWidth < 3; ++lineWidth) { for (int midLineWidth = 0; midLineWidth < 3; ++midLineWidth) { - QTest::newRow(qPrintable(QStringLiteral("box_noshadow_%1_%2").arg(lineWidth).arg(midLineWidth))) - << "box_noshadow" << lineWidth << midLineWidth << QFrame::Box << (QFrame::Shadow)0; - QTest::newRow(qPrintable(QStringLiteral("box_plain_%1_%2").arg(lineWidth).arg(midLineWidth))) + const QByteArray postFix = '_' + QByteArray::number(lineWidth) + '_' + + QByteArray::number(midLineWidth); + QTest::newRow(("box_noshadow" + postFix).constData()) + << "box_noshadow" << lineWidth << midLineWidth << QFrame::Box << (QFrame::Shadow)0; + QTest::newRow(("box_plain" + postFix).constData()) << "box_plain" << lineWidth << midLineWidth << QFrame::Box << QFrame::Plain; - QTest::newRow(qPrintable(QStringLiteral("box_raised_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("box_raised" + postFix).constData()) << "box_raised" << lineWidth << midLineWidth << QFrame::Box << QFrame::Raised; - QTest::newRow(qPrintable(QStringLiteral("box_sunken_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("box_sunken" + postFix).constData()) << "box_sunken" << lineWidth << midLineWidth << QFrame::Box << QFrame::Sunken; - QTest::newRow(qPrintable(QStringLiteral("winpanel_noshadow_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("winpanel_noshadow" + postFix).constData()) << "winpanel_noshadow" << lineWidth << midLineWidth << QFrame::WinPanel << (QFrame::Shadow)0; - QTest::newRow(qPrintable(QStringLiteral("winpanel_plain_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("winpanel_plain" + postFix).constData()) << "winpanel_plain" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Plain; - QTest::newRow(qPrintable(QStringLiteral("winpanel_raised_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("winpanel_raised" + postFix).constData()) << "winpanel_raised" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Raised; - QTest::newRow(qPrintable(QStringLiteral("winpanel_sunken_%1_%2").arg(lineWidth).arg(midLineWidth))) + QTest::newRow(("winpanel_sunken" + postFix).constData()) << "winpanel_sunken" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Sunken; } } @@ -174,7 +176,10 @@ void tst_QFrame::testPainting() const QPixmap pixmap = frame.grab(); - const QString referenceFilePath = QFINDTESTDATA(QStringLiteral("images/%1_%2_%3.png").arg(basename).arg(lineWidth).arg(midLineWidth)); + const QString fileName = QLatin1String("images/") + basename + QLatin1Char('_') + + QString::number(lineWidth) + QLatin1Char('_') + QString::number(midLineWidth) + + QLatin1String(".png"); + const QString referenceFilePath = QFINDTESTDATA(fileName); const QPixmap referencePixmap(referenceFilePath); QVERIFY2(!referencePixmap.isNull(), qPrintable(QStringLiteral("Could not load reference pixmap %1").arg(referenceFilePath))); QCOMPARE(pixmap, referencePixmap); diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp index 53eec99258..d7a03deb45 100644 --- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp +++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp @@ -73,6 +73,7 @@ private slots: void childrenAreDisabled(); void propagateFocus(); void task_QTBUG_19170_ignoreMouseReleseEvent(); + void task_QTBUG_15519_propagateMouseEvents(); private: bool checked; @@ -80,6 +81,7 @@ private: qint64 clickTimeStamp; qint64 toggleTimeStamp; + static void sendMouseMoveEvent(QWidget *widget, const QPoint &localPos); }; tst_QGroupBox::tst_QGroupBox() @@ -502,5 +504,114 @@ void tst_QGroupBox::task_QTBUG_19170_ignoreMouseReleseEvent() QCOMPARE(box.isChecked(), false); } +class MouseEventTestWidget : public QWidget +{ +public: + bool mousePressed; + bool mouseReleased; + bool mouseMoved; + + void reset() + { + mousePressed = false; + mouseReleased = false; + mouseMoved = false; + } + +protected: + void mousePressEvent(QMouseEvent*) + { + mousePressed = true; + } + + void mouseReleaseEvent(QMouseEvent*) + { + mouseReleased = true; + } + + void mouseMoveEvent(QMouseEvent*) + { + mouseMoved = true; + } +}; + +void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents() +{ + MouseEventTestWidget parent; + QGroupBox box(&parent); + parent.setMouseTracking(true); + box.setMouseTracking(true); + box.resize(100, 100); + box.setTitle("This is a test for QTBUG-15519"); + box.show(); + + QStyleOptionGroupBox option; + option.initFrom(&box); + option.subControls = QStyle::SubControls(QStyle::SC_All); + QRect checkBoxRect = box.style()->subControlRect(QStyle::CC_GroupBox, &option, + QStyle::SC_GroupBoxCheckBox, &box); + + // Without a checkbox, all mouse events should propagate + + parent.reset(); + QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QCOMPARE(parent.mousePressed, true); + + parent.reset(); + QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center()); + QCOMPARE(parent.mousePressed, true); + + parent.reset(); + QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QCOMPARE(parent.mouseReleased, true); + + parent.reset(); + QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center()); + QCOMPARE(parent.mouseReleased, true); + + parent.reset(); + sendMouseMoveEvent(&box, checkBoxRect.center()); + QCOMPARE(parent.mouseMoved, true); + + parent.reset(); + sendMouseMoveEvent(&box, box.rect().center()); + QCOMPARE(parent.mouseMoved, true); + + // With a checkbox, presses and releases to the checkbox should not propagate + + box.setCheckable(true); + + parent.reset(); + QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QCOMPARE(parent.mousePressed, false); + + parent.reset(); + QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center()); + QCOMPARE(parent.mousePressed, true); + + parent.reset(); + QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QCOMPARE(parent.mouseReleased, false); + + parent.reset(); + QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center()); + QCOMPARE(parent.mouseReleased, true); + + parent.reset(); + sendMouseMoveEvent(&box, checkBoxRect.center()); + QCOMPARE(parent.mouseMoved, true); + + parent.reset(); + sendMouseMoveEvent(&box, box.rect().center()); + QCOMPARE(parent.mouseMoved, true); +} + +void tst_QGroupBox::sendMouseMoveEvent(QWidget *widget, const QPoint &localPos) +{ + // Send a MouseMove event without actually moving the pointer + QMouseEvent event(QEvent::MouseMove, localPos, Qt::NoButton, Qt::NoButton, Qt::NoModifier); + QApplication::sendEvent(widget, &event); +} + QTEST_MAIN(tst_QGroupBox) #include "tst_qgroupbox.moc" diff --git a/tests/auto/widgets/widgets/qkeysequenceedit/qkeysequenceedit.pro b/tests/auto/widgets/widgets/qkeysequenceedit/qkeysequenceedit.pro index 097cb00d11..c660b398ce 100644 --- a/tests/auto/widgets/widgets/qkeysequenceedit/qkeysequenceedit.pro +++ b/tests/auto/widgets/widgets/qkeysequenceedit/qkeysequenceedit.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qkeysequenceedit QT += widgets testlib SOURCES += tst_qkeysequenceedit.cpp diff --git a/tests/auto/widgets/widgets/qlabel/qlabel.pro b/tests/auto/widgets/widgets/qlabel/qlabel.pro index 6c259bc5a3..6a5757fb5c 100644 --- a/tests/auto/widgets/widgets/qlabel/qlabel.pro +++ b/tests/auto/widgets/widgets/qlabel/qlabel.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qlabel QT += widgets widgets-private testlib diff --git a/tests/auto/widgets/widgets/qlcdnumber/qlcdnumber.pro b/tests/auto/widgets/widgets/qlcdnumber/qlcdnumber.pro index 220380b1d5..1508806fb0 100644 --- a/tests/auto/widgets/widgets/qlcdnumber/qlcdnumber.pro +++ b/tests/auto/widgets/widgets/qlcdnumber/qlcdnumber.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qlcdnumber QT += widgets testlib SOURCES += tst_qlcdnumber.cpp diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index a41d80d7dd..f936670d9e 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -2244,6 +2244,7 @@ void tst_QLineEdit::deleteSelectedText() edit.setText(text); edit.selectAll(); +#ifndef QT_NO_CONTEXTMENU QMenu *menu = edit.createStandardContextMenu(); for (int i = 0; i < menu->actions().count(); ++i) { QAction *current = menu->actions().at(i); @@ -2252,6 +2253,7 @@ void tst_QLineEdit::deleteSelectedText() QVERIFY(edit.text().isEmpty()); } } +#endif // QT_NO_CONTEXTMENU } @@ -2864,6 +2866,11 @@ void tst_QLineEdit::insert() QCOMPARE(testWidget->text(), QString("No Crash! This is a nice test")); } +static inline QByteArray selectionTestName(int start, int length) +{ + return "selection start: " + QByteArray::number(start) + " length: " + QByteArray::number(length); +} + void tst_QLineEdit::setSelection_data() { QTest::addColumn<QString>("text"); @@ -2877,39 +2884,39 @@ void tst_QLineEdit::setSelection_data() int start, length, pos; start = 0; length = 1; pos = 1; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("A") << true; start = 0; length = 2; pos = 2; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("Ab") << true; start = 0; length = 4; pos = 4; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("Abc ") << true; start = -1; length = 0; pos = text.length(); - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString() << false; start = 34; length = 1; pos = 35; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("z") << true; start = 34; length = 2; pos = 35; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("z") << true; start = 34; length = -1; pos = 33; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("y") << true; start = 1; length = -2; pos = 0; - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString("A") << true; start = -1; length = -1; pos = text.length(); - QTest::newRow(QString("selection start: %1 length: %2").arg(start).arg(length).toLatin1()) + QTest::newRow(selectionTestName(start, length).constData()) << text << start << length << pos << QString() << false; } @@ -3290,7 +3297,7 @@ void tst_QLineEdit::inlineCompletion() QStandardItem *root = model->invisibleRootItem(); QStandardItem *items[5]; for (int i = 0; i < 5; i++) { - items[i] = new QStandardItem(QString("item%1").arg(i)); + items[i] = new QStandardItem(QLatin1String("item") + QString::number(i)); if ((i+2)%2 == 0) { // disable 0,2,4 items[i]->setFlags(items[i]->flags() & ~Qt::ItemIsEnabled); } diff --git a/tests/auto/widgets/widgets/qmainwindow/qmainwindow.pro b/tests/auto/widgets/widgets/qmainwindow/qmainwindow.pro index bd4fc6ba97..7e0a5320b0 100644 --- a/tests/auto/widgets/widgets/qmainwindow/qmainwindow.pro +++ b/tests/auto/widgets/widgets/qmainwindow/qmainwindow.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qmainwindow QT += widgets widgets-private testlib SOURCES += tst_qmainwindow.cpp diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index 6282028746..ebf05ca300 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -1369,7 +1369,7 @@ void tst_QMainWindow::restoreStateFromPreviousVersion() QVector<QDockWidget*> docks; for(int i = 0; i < 16; ++i) { - const QString name = QString::fromLatin1("dock %1").arg(i); + const QString name = QStringLiteral("dock ") + QString::number(i); QDockWidget *dock = new QDockWidget(name); docks += dock; dock->setObjectName(name); diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp index e23634c515..83a4e3bb59 100644 --- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp @@ -621,6 +621,11 @@ void tst_QMdiArea::showWindows() //#define USE_SHOW +static inline QString windowTitle(const QString &t, const QString &f) +{ + return t + QLatin1String(" - [") + f + QLatin1Char(']'); +} + void tst_QMdiArea::changeWindowTitle() { const QString mwc = QString::fromLatin1("MainWindow's Caption"); @@ -648,7 +653,7 @@ void tst_QMdiArea::changeWindowTitle() widget->setWindowState(Qt::WindowMaximized); #endif #if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) - QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), windowTitle(mwc, wc) ); #endif mw->hide(); @@ -657,7 +662,7 @@ void tst_QMdiArea::changeWindowTitle() QVERIFY(QTest::qWaitForWindowExposed(mw)); #if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) - QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), windowTitle(mwc, wc) ); #endif #ifdef USE_SHOW @@ -675,11 +680,11 @@ void tst_QMdiArea::changeWindowTitle() #endif qApp->processEvents(); #if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) - QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), windowTitle(mwc, wc) ); widget->setWindowTitle( wc2 ); - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc2) ); + QCOMPARE( mw->windowTitle(), windowTitle(mwc, wc2) ); mw->setWindowTitle( mwc2 ); - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc2).arg(wc2) ); + QCOMPARE( mw->windowTitle(), windowTitle(mwc2, wc2) ); #endif mw->show(); @@ -693,7 +698,7 @@ void tst_QMdiArea::changeWindowTitle() qApp->processEvents(); #if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc2).arg(wc2) ); + QCOMPARE( mw->windowTitle(), windowTitle(mwc2, wc2) ); #endif #ifdef USE_SHOW widget->showNormal(); @@ -714,7 +719,7 @@ void tst_QMdiArea::changeWindowTitle() #endif qApp->processEvents(); #if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc2).arg(wc2) ); + QCOMPARE( mw->windowTitle(), windowTitle(mwc2, wc2) ); #endif #ifdef USE_SHOW @@ -2321,7 +2326,7 @@ void tst_QMdiArea::setViewMode() iconPixmap.fill(Qt::red); for (int i = 0; i < 5; ++i) { QMdiSubWindow *subWindow = mdiArea.addSubWindow(new QWidget); - subWindow->setWindowTitle(QString(QLatin1String("Title %1")).arg(i)); + subWindow->setWindowTitle(QLatin1String("Title ") + QString::number(i)); subWindow->setWindowIcon(iconPixmap); } diff --git a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp index db252347ac..51176d8195 100644 --- a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp +++ b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp @@ -202,6 +202,7 @@ private slots: void task_226929(); void styleChange(); void testFullScreenState(); + void testRemoveBaseWidget(); }; void tst_QMdiSubWindow::initTestCase() @@ -396,7 +397,7 @@ void tst_QMdiSubWindow::mainWindowSupport() QMdiArea *nestedWorkspace = new QMdiArea; // :-) window->setWidget(nestedWorkspace); - window->widget()->setWindowTitle(QString::fromLatin1("Window %1").arg(i)); + window->widget()->setWindowTitle(QLatin1String("Window ") + QString::number(i)); workspace->addSubWindow(window); QVERIFY(!window->maximizedButtonsWidget()); @@ -423,8 +424,9 @@ void tst_QMdiSubWindow::mainWindowSupport() QVERIFY(window->maximizedSystemMenuIconWidget()); QCOMPARE(window->maximizedSystemMenuIconWidget(), qobject_cast<QWidget *>(mainWindow.menuBar() ->cornerWidget(Qt::TopLeftCorner))); - QCOMPARE(mainWindow.windowTitle(), QString::fromLatin1("%1 - [%2]") - .arg(originalWindowTitle, window->widget()->windowTitle())); + const QString expectedTitle = originalWindowTitle + QLatin1String(" - [") + + window->widget()->windowTitle() + QLatin1Char(']'); + QCOMPARE(mainWindow.windowTitle(), expectedTitle); #endif // Check that nested child windows don't set window title @@ -432,7 +434,7 @@ void tst_QMdiSubWindow::mainWindowSupport() QMdiSubWindow *nestedWindow = new QMdiSubWindow; nestedWindow->setWidget(new QWidget); nestedWorkspace->addSubWindow(nestedWindow); - nestedWindow->widget()->setWindowTitle(QString::fromLatin1("NestedWindow %1").arg(i)); + nestedWindow->widget()->setWindowTitle(QLatin1String("NestedWindow ") + QString::number(i)); nestedWindow->showMaximized(); qApp->processEvents(); QVERIFY(nestedWindow->isMaximized()); @@ -2080,6 +2082,27 @@ void tst_QMdiSubWindow::testFullScreenState() QCOMPARE(subWindow->size(), QSize(300, 300)); } +void tst_QMdiSubWindow::testRemoveBaseWidget() +{ + QMdiArea mdiArea; + mdiArea.show(); + + QWidget *widget1 = new QWidget; + mdiArea.addSubWindow(widget1); + + QWidget *widget2 = new QWidget; + mdiArea.addSubWindow(widget2); + + mdiArea.removeSubWindow(widget1); + QVERIFY(!widget1->parent()); + + widget2->setParent(widget1); + mdiArea.removeSubWindow(widget2); + QCOMPARE(widget2->parent(), widget1); + + delete widget1; +} + QTEST_MAIN(tst_QMdiSubWindow) #include "tst_qmdisubwindow.moc" diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 5ae0733965..eaa277093c 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -554,7 +554,7 @@ void tst_QMenu::widgetActionFocus() QMenu m; QListWidget *l = new QListWidget(&m); for (int i = 1; i<3 ; i++) - l->addItem(QString("item%1").arg(i)); + l->addItem(QStringLiteral("item" ) + QString::number(i)); QWidgetAction *wa = new QWidgetAction(&m); wa->setDefaultWidget(l); m.addAction(wa); @@ -747,7 +747,7 @@ void tst_QMenu::task250673_activeMultiColumnSubMenuPosition() uint i = 2; while (main.columnCount() < 2) { - main.addAction(QString("Item %1").arg(i)); + main.addAction(QLatin1String("Item ") + QString::number(i)); ++i; QVERIFY(i<1000); } @@ -1021,7 +1021,7 @@ public: MyMenu() : m_currentIndex(0) { for (int i = 0; i < 2; ++i) - dialogActions[i] = addAction( QString("dialog %1").arg(i), dialogs + i, SLOT(exec())); + dialogActions[i] = addAction(QLatin1String("dialog ") + QString::number(i), dialogs + i, SLOT(exec())); } void activateAction(int index) diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu_mac.mm b/tests/auto/widgets/widgets/qmenu/tst_qmenu_mac.mm index b1708d8669..7130e79276 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu_mac.mm +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu_mac.mm @@ -31,7 +31,7 @@ ** ****************************************************************************/ -#import <Cocoa/Cocoa.h> +#import <AppKit/AppKit.h> #include <QMenu> #include <QTest> diff --git a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST index 725b8e93b4..86c7141268 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST +++ b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST @@ -1,2 +1,14 @@ [clearAndGrab] opensuse-13.1 + +#QTBUG-31611 +[painter] +windows msvc-2010 32bit developer-build + +#QTBUG-31611 +[reparentToAlreadyCreated] +windows msvc-2010 32bit developer-build + +#QTBUG-31611 +[reparentToNotYetCreated] +windows msvc-2010 32bit developer-build diff --git a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro index bbc6e987af..2d4cff9e10 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro +++ b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro @@ -1,8 +1,5 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qopenglwidget QT += gui-private core-private testlib widgets SOURCES += tst_qopenglwidget.cpp - -win32-msvc2010:contains(QT_CONFIG, angle):CONFIG += insignificant_test # QTBUG-31611 diff --git a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp index 44a554ad82..1657751605 100644 --- a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp +++ b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp @@ -537,9 +537,6 @@ void tst_QPushButton::sizeHint_data() #if !defined(QT_NO_STYLE_WINDOWS) QTest::newRow("windows") << QString::fromLatin1("windows"); #endif -#if !defined(QT_NO_STYLE_GTK) - QTest::newRow("gtk") << QString::fromLatin1("gtk"); -#endif #if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) QTest::newRow("macintosh") << QString::fromLatin1("macintosh"); #endif diff --git a/tests/auto/widgets/widgets/qscrollarea/qscrollarea.pro b/tests/auto/widgets/widgets/qscrollarea/qscrollarea.pro index 0cd706420e..bdf18a0252 100644 --- a/tests/auto/widgets/widgets/qscrollarea/qscrollarea.pro +++ b/tests/auto/widgets/widgets/qscrollarea/qscrollarea.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qscrollarea QT += widgets testlib SOURCES += tst_qscrollarea.cpp diff --git a/tests/auto/widgets/widgets/qscrollbar/qscrollbar.pro b/tests/auto/widgets/widgets/qscrollbar/qscrollbar.pro index 8c6ea6e1d4..2863dd2034 100644 --- a/tests/auto/widgets/widgets/qscrollbar/qscrollbar.pro +++ b/tests/auto/widgets/widgets/qscrollbar/qscrollbar.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qscrollbar QT += widgets testlib SOURCES += tst_qscrollbar.cpp diff --git a/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro b/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro index ceb897c612..1149b50feb 100644 --- a/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro +++ b/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qsizegrip INCLUDEPATH += . QT += widgets testlib diff --git a/tests/auto/widgets/widgets/qslider/qslider.pro b/tests/auto/widgets/widgets/qslider/qslider.pro index d0a61e5a95..4c8b061459 100644 --- a/tests/auto/widgets/widgets/qslider/qslider.pro +++ b/tests/auto/widgets/widgets/qslider/qslider.pro @@ -3,7 +3,6 @@ ############################################################ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qslider QT += widgets testlib SOURCES += tst_qslider.cpp diff --git a/tests/auto/widgets/widgets/qsplitter/qsplitter.pro b/tests/auto/widgets/widgets/qsplitter/qsplitter.pro index c43847b11f..8ae745ea9d 100644 --- a/tests/auto/widgets/widgets/qsplitter/qsplitter.pro +++ b/tests/auto/widgets/widgets/qsplitter/qsplitter.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qsplitter QT += widgets testlib SOURCES += tst_qsplitter.cpp diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index a54ad6ecd0..9e854ff3ea 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -678,9 +678,9 @@ void tst_QSplitter::task187373_addAbstractScrollAreas_data() classNames << QLatin1String("QTreeView"); foreach (QString className, classNames) { - QTest::newRow(qPrintable(QString("%1 1").arg(className))) << className << false << true; - QTest::newRow(qPrintable(QString("%1 2").arg(className))) << className << true << false; - QTest::newRow(qPrintable(QString("%1 3").arg(className))) << className << true << true; + QTest::newRow(qPrintable(className + QLatin1String(" 1"))) << className << false << true; + QTest::newRow(qPrintable(className + QLatin1String(" 2"))) << className << true << false; + QTest::newRow(qPrintable(className + QLatin1String(" 3"))) << className << true << true; } } diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp index d060c4ceae..2a2bc1edf8 100644 --- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp +++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp @@ -149,7 +149,7 @@ private: void createWidgets() { for (int i = 0; i < m_n; ++i) { QLineEdit *le = new QLineEdit(this); - le->setObjectName(QString::fromLatin1("lineEdit%1").arg(i)); + le->setObjectName(QLatin1String("lineEdit") + QString::number(i)); layout ()->addWidget(le); m_les << le; } diff --git a/tests/auto/widgets/widgets/qtabbar/qtabbar.pro b/tests/auto/widgets/widgets/qtabbar/qtabbar.pro index 8772005bef..01b3c4a404 100644 --- a/tests/auto/widgets/widgets/qtabbar/qtabbar.pro +++ b/tests/auto/widgets/widgets/qtabbar/qtabbar.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qtabbar QT += widgets testlib SOURCES += tst_qtabbar.cpp diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp index ced2253a74..b983e6954a 100644 --- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp +++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp @@ -606,7 +606,7 @@ public slots: void updateTabText() { count++; - setTabText(0, QString("%1").arg(count)); + setTabText(0, QString::number(count)); } }; diff --git a/tests/auto/widgets/widgets/qtoolbox/qtoolbox.pro b/tests/auto/widgets/widgets/qtoolbox/qtoolbox.pro index a8c62ec54a..19b3a03443 100644 --- a/tests/auto/widgets/widgets/qtoolbox/qtoolbox.pro +++ b/tests/auto/widgets/widgets/qtoolbox/qtoolbox.pro @@ -1,5 +1,4 @@ CONFIG += testcase -CONFIG += parallel_test TARGET = tst_qtoolbox QT += widgets testlib SOURCES += tst_qtoolbox.cpp |