diff options
Diffstat (limited to 'tests/manual')
46 files changed, 2011 insertions, 27 deletions
diff --git a/tests/manual/corelib/tools/qhash/main.cpp b/tests/manual/corelib/tools/qhash/main.cpp new file mode 100644 index 0000000000..fd38350c88 --- /dev/null +++ b/tests/manual/corelib/tools/qhash/main.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +//#define QT_STRICT_ITERATORS +#include <QHash> + +void testEraseNoError() +{ + QHash<int, int> a; + + a.insert(100, 100); + a.insert(101, 200); + a.insert(5, 50); + a.insertMulti(5, 60); + a.insertMulti(5, 70); + a.insertMulti(5, 80); + + QHash<int, int>::iterator i = a.begin(); + while (i.key() != 5) + ++i; + ++i; + a.erase(i); + + qDebug() << "Erase - got no errors on iterator check"; +} + +void testErase() +{ + QHash<int, int> a, b; + a.insert(5, 50); + a.insert(6, 60); + a.insert(7, 70); + b = a; + a.erase(a.begin()); + b.erase(b.end() - 1); + qDebug() << "Erase - Executing line with error now."; + a.erase(b.begin()); +} + + +int main() +{ + testEraseNoError(); + testErase(); + return 0; +} diff --git a/tests/manual/corelib/tools/qhash/main.pro b/tests/manual/corelib/tools/qhash/main.pro new file mode 100644 index 0000000000..bba41b9c12 --- /dev/null +++ b/tests/manual/corelib/tools/qhash/main.pro @@ -0,0 +1 @@ +SOURCES = main.cpp diff --git a/tests/manual/corelib/tools/qlist/main.cpp b/tests/manual/corelib/tools/qlist/main.cpp new file mode 100644 index 0000000000..8c1ee2890c --- /dev/null +++ b/tests/manual/corelib/tools/qlist/main.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QDebug> +//#define QT_STRICT_ITERATORS +#include <QVector> +void testErase() +{ + QList<int> a, b; + a.append(5); + a.append(6); + a.append(7); + b = a; + a.erase(a.begin()); + qDebug() << "erase - Executing line with error now."; + // a.erase(a.end()); + a.erase(b.begin()); +} +void testInsert() +{ + QList<int> a, b; + a.insert(a.begin(), 1); + a.insert(a.begin(), 2); + a.insert(a.end(), 3); + b = a; + qDebug() << "insert - Executing line with error now."; + a.insert(b.begin(), 4); +} +int main() +{ + // testErase(); + testInsert(); + return 0; +}
\ No newline at end of file diff --git a/tests/manual/corelib/tools/qlist/main.pro b/tests/manual/corelib/tools/qlist/main.pro new file mode 100644 index 0000000000..bba41b9c12 --- /dev/null +++ b/tests/manual/corelib/tools/qlist/main.pro @@ -0,0 +1 @@ +SOURCES = main.cpp diff --git a/tests/manual/corelib/tools/qmap/main.cpp b/tests/manual/corelib/tools/qmap/main.cpp new file mode 100644 index 0000000000..0d88e3f170 --- /dev/null +++ b/tests/manual/corelib/tools/qmap/main.cpp @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//#define Q_NO_DEBUGMAP_PARENT_TEST +// Comment in line above to skip the parent test. +#include <QtCore/QMap> +#include <QDebug> + +void noBugErase() +{ + QMap<int, int> a, b; + a[10] = 11; + a[11] = 12; + b = a; + b.erase(b.begin()); +} + +void noBugInsertWithHints() +{ + QMap<int, int> a; + QMap<int, int> b; + for (int u = 100; u < 10000; u += 20) + a.insert(u, u); + b = a; + QMap<int, int>::const_iterator b_ite(b.begin()); // b.begin() ensures correct detach() + ++b_ite; + b.insert(b_ite, 501, 501); + b.insert(b_ite, 115, 115); + QMap<int, int> c; + c = b; + c.setSharable(false); +} + +void testInsertWithHintCorruption() +{ + qDebug() << "Starting testInsertWithHintCorruption"; + + QMap<int, int> a; + QMap<int, int> b; + for (int u = 100; u < 10000; u += 20) + a.insert(u, u); + b = a; + QMap<int, int>::const_iterator b_ite = b.constBegin(); + ++b_ite; + b.insert(b_ite, 501, 501); + b.insert(b_ite, 115, 115); // insert with wrong hint. + QMap<int, int> c; + c = b; + c.setSharable(false); + qDebug() << "End of testInsertWithHintCorruption - failed silently"; +} + +void testEraseCorruption() +{ + qDebug() << "Starting testEraseCorruption"; + + QMap<int, int> a, b; + a[10] = 11; + a[11] = 12; + b = a; + b.erase(a.begin()); + qDebug() << "End of testEraseCorruption - failed silently"; +} + +int main() +{ + noBugErase(); + noBugInsertWithHints(); + + // testEraseCorruption(); + testInsertWithHintCorruption(); + return 0; +} diff --git a/tests/manual/corelib/tools/qmap/qmaptest.pro b/tests/manual/corelib/tools/qmap/qmaptest.pro new file mode 100644 index 0000000000..fbe7013144 --- /dev/null +++ b/tests/manual/corelib/tools/qmap/qmaptest.pro @@ -0,0 +1,2 @@ +TEMPLATE = app +SOURCES = main.cpp diff --git a/tests/manual/corelib/tools/qset/main.cpp b/tests/manual/corelib/tools/qset/main.cpp new file mode 100644 index 0000000000..34a6c58c63 --- /dev/null +++ b/tests/manual/corelib/tools/qset/main.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +//#define QT_STRICT_ITERATORS +#include <QSet> + +void testErase() +{ + QSet<int> a, b; + a.insert(5); + a.insert(6); + a.insert(7); + b = a; + a.erase(a.begin()); + b.erase(b.end() - 1); + qDebug() << "erase - no errors until now"; + a.erase(b.begin()); +} + +int main() +{ + testErase(); + return 0; +} diff --git a/tests/manual/corelib/tools/qset/main.pro b/tests/manual/corelib/tools/qset/main.pro new file mode 100644 index 0000000000..bba41b9c12 --- /dev/null +++ b/tests/manual/corelib/tools/qset/main.pro @@ -0,0 +1 @@ +SOURCES = main.cpp diff --git a/tests/manual/corelib/tools/qvarlengtharray/main.cpp b/tests/manual/corelib/tools/qvarlengtharray/main.cpp new file mode 100644 index 0000000000..759f4b3905 --- /dev/null +++ b/tests/manual/corelib/tools/qvarlengtharray/main.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +//#define QT_STRICT_ITERATORS +#include <QVarLengthArray> + +void testErase() +{ + QVarLengthArray<int> a, b; + a.append(5); + a.append(6); + a.append(7); + b = a; + a.erase(a.begin()); + a.erase(a.end() - 1); + qDebug() << "erase - no errors until now"; + // a.erase(a.end()); + a.erase(b.begin()); +} + +void testInsert() +{ + QVarLengthArray<int> a, b; + a.insert(a.begin(), 1); + a.insert(a.begin(), 2); + a.insert(a.end(), 3); + b = a; + qDebug() << "insert - no errors until now"; + a.insert(b.begin(), 1, 4); +} + +int main() +{ + // testErase(); + testInsert(); + return 0; +} diff --git a/tests/manual/corelib/tools/qvarlengtharray/main.pro b/tests/manual/corelib/tools/qvarlengtharray/main.pro new file mode 100644 index 0000000000..4ce070ab75 --- /dev/null +++ b/tests/manual/corelib/tools/qvarlengtharray/main.pro @@ -0,0 +1 @@ +SOURCES=main.cpp diff --git a/tests/manual/corelib/tools/qvector/main.cpp b/tests/manual/corelib/tools/qvector/main.cpp new file mode 100644 index 0000000000..2dce4a9264 --- /dev/null +++ b/tests/manual/corelib/tools/qvector/main.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +//#define QT_STRICT_ITERATORS +#include <QVector> + +void testErase() +{ + QVector<int> a, b; + a.append(5); + a.append(6); + a.append(7); + b = a; + a.erase(a.begin()); + a.erase(a.end() - 1); + qDebug() << "erase - no errors until now"; + // a.erase(a.end()); + a.erase(b.begin()); +} + +void testInsert() +{ + QVector<int> a, b; + a.insert(a.begin(), 1, 1); + a.insert(a.begin(), 1, 2); + a.insert(a.begin(), 1, 3); + b = a; + qDebug() << "insert - no errors until now"; + a.insert(b.begin(), 1, 4); +} + +int main() +{ + testErase(); + // testInsert(); + return 0; +} diff --git a/tests/manual/corelib/tools/qvector/main.pro b/tests/manual/corelib/tools/qvector/main.pro new file mode 100644 index 0000000000..bba41b9c12 --- /dev/null +++ b/tests/manual/corelib/tools/qvector/main.pro @@ -0,0 +1 @@ +SOURCES = main.cpp diff --git a/tests/manual/dialogs/colordialogpanel.h b/tests/manual/dialogs/colordialogpanel.h index 05ca336a23..7f2898cea0 100644 --- a/tests/manual/dialogs/colordialogpanel.h +++ b/tests/manual/dialogs/colordialogpanel.h @@ -45,9 +45,11 @@ #include <QPointer> #include <QColorDialog> +QT_BEGIN_NAMESPACE class QComboBox; class QCheckBox; class QPushButton; +QT_END_NAMESPACE class ColorDialogPanel : public QWidget { diff --git a/tests/manual/dialogs/dialogs.pro b/tests/manual/dialogs/dialogs.pro index 4ed200ab7f..d19c3026d0 100644 --- a/tests/manual/dialogs/dialogs.pro +++ b/tests/manual/dialogs/dialogs.pro @@ -5,6 +5,6 @@ TARGET = dialogs TEMPLATE = app SOURCES += main.cpp filedialogpanel.cpp colordialogpanel.cpp fontdialogpanel.cpp \ - wizardpanel.cpp + wizardpanel.cpp messageboxpanel.cpp HEADERS += filedialogpanel.h colordialogpanel.h fontdialogpanel.h \ - wizardpanel.h + wizardpanel.h messageboxpanel.h diff --git a/tests/manual/dialogs/filedialogpanel.cpp b/tests/manual/dialogs/filedialogpanel.cpp index a342122570..000d755cef 100644 --- a/tests/manual/dialogs/filedialogpanel.cpp +++ b/tests/manual/dialogs/filedialogpanel.cpp @@ -154,9 +154,11 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) , m_nameFilterDetailsVisible(new QCheckBox(tr("Name filter details visible"))) , m_resolveSymLinks(new QCheckBox(tr("Resolve symlinks"))) , m_native(new QCheckBox(tr("Use native dialog"))) + , m_customDirIcons(new QCheckBox(tr("Don't use custom directory icons"))) , m_acceptMode(createCombo(this, acceptModeComboData, sizeof(acceptModeComboData)/sizeof(ComboData))) , m_fileMode(createCombo(this, fileModeComboData, sizeof(fileModeComboData)/sizeof(ComboData))) , m_viewMode(createCombo(this, viewModeComboData, sizeof(viewModeComboData)/sizeof(ComboData))) + , m_allowedSchemes(new QLineEdit(this)) , m_defaultSuffix(new QLineEdit(this)) , m_directory(new QLineEdit(this)) , m_selectedFileName(new QLineEdit(this)) @@ -171,11 +173,13 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) optionsLayout->addRow(tr("AcceptMode:"), m_acceptMode); optionsLayout->addRow(tr("FileMode:"), m_fileMode); optionsLayout->addRow(tr("ViewMode:"), m_viewMode); + optionsLayout->addRow(tr("Allowed Schemes:"), m_allowedSchemes); optionsLayout->addRow(m_native); optionsLayout->addRow(m_confirmOverWrite); optionsLayout->addRow(m_nameFilterDetailsVisible); optionsLayout->addRow(m_resolveSymLinks); optionsLayout->addRow(m_readOnly); + optionsLayout->addRow(m_customDirIcons); // Files QGroupBox *filesGroupBox = new QGroupBox(tr("Files / Filters")); @@ -216,9 +220,13 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) row = 0; column++; addButton(tr("getOpenFileName"), buttonLayout, row, column, this, SLOT(getOpenFileName())); + addButton(tr("getOpenFileUrl"), buttonLayout, row, column, this, SLOT(getOpenFileUrl())); addButton(tr("getOpenFileNames"), buttonLayout, row, column, this, SLOT(getOpenFileNames())); + addButton(tr("getOpenFileUrls"), buttonLayout, row, column, this, SLOT(getOpenFileUrls())); addButton(tr("getSaveFileName"), buttonLayout, row, column, this, SLOT(getSaveFileName())); + addButton(tr("getSaveFileUrl"), buttonLayout, row, column, this, SLOT(getSaveFileUrl())); addButton(tr("getExistingDirectory"), buttonLayout, row, column, this, SLOT(getExistingDirectory())); + addButton(tr("getExistingDirectoryUrl"), buttonLayout, row, column, this, SLOT(getExistingDirectoryUrl())); addButton(tr("Restore defaults"), buttonLayout, row, column, this, SLOT(restoreDefaults())); // Main layout @@ -316,9 +324,16 @@ QFileDialog::Options FileDialogPanel::options() const result |= QFileDialog::DontConfirmOverwrite; if (!m_native->isChecked()) result |= QFileDialog::DontUseNativeDialog; + if (!m_customDirIcons->isChecked()) + result |= QFileDialog::DontUseCustomDirectoryIcons; return result; } +QStringList FileDialogPanel::allowedSchemes() const +{ + return m_allowedSchemes->text().simplified().split(' ', QString::SkipEmptyParts); +} + void FileDialogPanel::getOpenFileNames() { QString selectedFilter = m_selectedNameFilter->text().trimmed(); @@ -334,6 +349,22 @@ void FileDialogPanel::getOpenFileNames() } } +void FileDialogPanel::getOpenFileUrls() +{ + QString selectedFilter = m_selectedNameFilter->text().trimmed(); + const QList<QUrl> files = + QFileDialog::getOpenFileUrls(this, tr("getOpenFileNames Qt %1").arg(QLatin1String(QT_VERSION_STR)), + QUrl(m_directory->text()), filterString(), &selectedFilter, options(), + allowedSchemes()); + if (!files.isEmpty()) { + QString result; + QDebug(&result).nospace() + << "Files: " << QUrl::toStringList(files) + << "\nName filter: " << selectedFilter; + QMessageBox::information(this, tr("getOpenFileNames"), result, QMessageBox::Ok); + } +} + void FileDialogPanel::getOpenFileName() { QString selectedFilter = m_selectedNameFilter->text().trimmed(); @@ -349,6 +380,22 @@ void FileDialogPanel::getOpenFileName() } } +void FileDialogPanel::getOpenFileUrl() +{ + QString selectedFilter = m_selectedNameFilter->text().trimmed(); + const QUrl file = + QFileDialog::getOpenFileUrl(this, tr("getOpenFileUrl Qt %1").arg(QLatin1String(QT_VERSION_STR)), + QUrl(m_directory->text()), filterString(), &selectedFilter, options(), + allowedSchemes()); + if (file.isValid()) { + QString result; + QDebug(&result).nospace() + << "File: " << file.toString() + << "\nName filter: " << selectedFilter; + QMessageBox::information(this, tr("getOpenFileName"), result, QMessageBox::Ok); + } +} + void FileDialogPanel::getSaveFileName() { QString selectedFilter = m_selectedNameFilter->text().trimmed(); @@ -364,6 +411,22 @@ void FileDialogPanel::getSaveFileName() } } +void FileDialogPanel::getSaveFileUrl() +{ + QString selectedFilter = m_selectedNameFilter->text().trimmed(); + const QUrl file = + QFileDialog::getSaveFileUrl(this, tr("getSaveFileName Qt %1").arg(QLatin1String(QT_VERSION_STR)), + QUrl(m_directory->text()), filterString(), &selectedFilter, options(), + allowedSchemes()); + if (file.isValid()) { + QString result; + QDebug(&result).nospace() + << "File: " << file.toString() + << "\nName filter: " << selectedFilter; + QMessageBox::information(this, tr("getSaveFileNames"), result, QMessageBox::Ok); + } +} + void FileDialogPanel::getExistingDirectory() { const QString dir = @@ -373,17 +436,29 @@ void FileDialogPanel::getExistingDirectory() QMessageBox::information(this, tr("getExistingDirectory"), QLatin1String("Directory: ") + dir, QMessageBox::Ok); } +void FileDialogPanel::getExistingDirectoryUrl() +{ + const QUrl dir = + QFileDialog::getExistingDirectoryUrl(this, tr("getExistingDirectory Qt %1").arg(QLatin1String(QT_VERSION_STR)), + QUrl(m_directory->text()), options() | QFileDialog::ShowDirsOnly, + allowedSchemes()); + if (!dir.isEmpty()) + QMessageBox::information(this, tr("getExistingDirectory"), QLatin1String("Directory: ") + dir.toString(), QMessageBox::Ok); +} + void FileDialogPanel::restoreDefaults() { QFileDialog d; setComboBoxValue(m_acceptMode, d.acceptMode()); setComboBoxValue(m_fileMode, d.fileMode()); setComboBoxValue(m_viewMode, d.viewMode()); + m_allowedSchemes->setText(QString()); m_confirmOverWrite->setChecked(d.confirmOverwrite()); m_nameFilterDetailsVisible->setChecked(d.isNameFilterDetailsVisible()); m_resolveSymLinks->setChecked(d.resolveSymlinks()); m_readOnly->setChecked(d.isReadOnly()); m_native->setChecked(true); + m_customDirIcons->setChecked(d.testOption(QFileDialog::DontUseCustomDirectoryIcons)); m_directory->setText(QDir::homePath()); m_defaultSuffix->setText(QLatin1String("txt")); m_nameFilters->setPlainText(QLatin1String("Any files (*)\nImage files (*.png *.xpm *.jpg)\nText files (*.txt)")); diff --git a/tests/manual/dialogs/filedialogpanel.h b/tests/manual/dialogs/filedialogpanel.h index 2977de4164..2e1d5d4de9 100644 --- a/tests/manual/dialogs/filedialogpanel.h +++ b/tests/manual/dialogs/filedialogpanel.h @@ -46,11 +46,13 @@ #include <QFileDialog> #include <QPointer> +QT_BEGIN_NAMESPACE class QPushButton; class QCheckBox; class QComboBox; class QLineEdit; class QPlainTextEdit; +QT_END_NAMESPACE class LabelLineEdit; class FileDialogPanel : public QWidget @@ -66,9 +68,13 @@ public slots: void deleteNonModalDialog(); void deleteModalDialog(); void getOpenFileNames(); + void getOpenFileUrls(); void getOpenFileName(); + void getOpenFileUrl(); void getSaveFileName(); + void getSaveFileUrl(); void getExistingDirectory(); + void getExistingDirectoryUrl(); void accepted(); void showAcceptedResult(); void restoreDefaults(); @@ -80,6 +86,7 @@ private slots: private: QString filterString() const; QFileDialog::Options options() const; + QStringList allowedSchemes() const; void applySettings(QFileDialog *d) const; QCheckBox *m_readOnly; @@ -87,9 +94,11 @@ private: QCheckBox *m_nameFilterDetailsVisible; QCheckBox *m_resolveSymLinks; QCheckBox *m_native; + QCheckBox *m_customDirIcons; QComboBox *m_acceptMode; QComboBox *m_fileMode; QComboBox *m_viewMode; + QLineEdit *m_allowedSchemes; QLineEdit *m_defaultSuffix; QLineEdit *m_directory; QLineEdit *m_selectedFileName; diff --git a/tests/manual/dialogs/fontdialogpanel.cpp b/tests/manual/dialogs/fontdialogpanel.cpp index 02f05f9580..c72bf77351 100644 --- a/tests/manual/dialogs/fontdialogpanel.cpp +++ b/tests/manual/dialogs/fontdialogpanel.cpp @@ -67,12 +67,20 @@ FontDialogPanel::FontDialogPanel(QWidget *parent) , m_fontSizeBox(new QDoubleSpinBox) , m_noButtons(new QCheckBox(tr("Don't display OK/Cancel buttons"))) , m_dontUseNativeDialog(new QCheckBox(tr("Don't use native dialog"))) + , m_scalableFilter(new QCheckBox(tr("Filter scalable fonts"))) + , m_nonScalableFilter(new QCheckBox(tr("Filter non scalable fonts"))) + , m_monospacedFilter(new QCheckBox(tr("Filter monospaced fonts"))) + , m_proportionalFilter(new QCheckBox(tr("Filter proportional fonts"))) { // Options QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"), this); QVBoxLayout *optionsLayout = new QVBoxLayout(optionsGroupBox); optionsLayout->addWidget(m_noButtons); optionsLayout->addWidget(m_dontUseNativeDialog); + optionsLayout->addWidget(m_scalableFilter); + optionsLayout->addWidget(m_nonScalableFilter); + optionsLayout->addWidget(m_monospacedFilter); + optionsLayout->addWidget(m_proportionalFilter); // Font QGroupBox *fontGroupBox = new QGroupBox(tr("Font"), this); @@ -201,6 +209,10 @@ void FontDialogPanel::applySettings(QFontDialog *d) const { d->setOption(QFontDialog::NoButtons, m_noButtons->isChecked()); d->setOption(QFontDialog::DontUseNativeDialog, m_dontUseNativeDialog->isChecked()); + d->setOption(QFontDialog::ScalableFonts, m_scalableFilter->isChecked()); + d->setOption(QFontDialog::NonScalableFonts, m_nonScalableFilter->isChecked()); + d->setOption(QFontDialog::MonospacedFonts, m_monospacedFilter->isChecked()); + d->setOption(QFontDialog::ProportionalFonts, m_proportionalFilter->isChecked()); QFont font = m_fontFamilyBox->currentFont(); font.setPointSizeF(m_fontSizeBox->value()); diff --git a/tests/manual/dialogs/fontdialogpanel.h b/tests/manual/dialogs/fontdialogpanel.h index f3bbbb3939..4592c2ec6e 100644 --- a/tests/manual/dialogs/fontdialogpanel.h +++ b/tests/manual/dialogs/fontdialogpanel.h @@ -45,10 +45,12 @@ #include <QPointer> #include <QFontDialog> +QT_BEGIN_NAMESPACE class QCheckBox; class QPushButton; class QFontComboBox; class QDoubleSpinBox; +QT_END_NAMESPACE class FontDialogPanel : public QWidget { @@ -77,6 +79,10 @@ private: QDoubleSpinBox *m_fontSizeBox; QCheckBox *m_noButtons; QCheckBox *m_dontUseNativeDialog; + QCheckBox *m_scalableFilter; + QCheckBox *m_nonScalableFilter; + QCheckBox *m_monospacedFilter; + QCheckBox *m_proportionalFilter; QPushButton *m_deleteNonModalDialogButton; QPushButton *m_deleteModalDialogButton; QString m_result; diff --git a/tests/manual/dialogs/main.cpp b/tests/manual/dialogs/main.cpp index 4ad2842e44..c5f14cabef 100644 --- a/tests/manual/dialogs/main.cpp +++ b/tests/manual/dialogs/main.cpp @@ -43,6 +43,7 @@ #include "colordialogpanel.h" #include "fontdialogpanel.h" #include "wizardpanel.h" +#include "messageboxpanel.h" #include <QMainWindow> #include <QApplication> @@ -73,6 +74,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) tabWidget->addTab(new ColorDialogPanel, tr("QColorDialog")); tabWidget->addTab(new FontDialogPanel, tr("QFontDialog")); tabWidget->addTab(new WizardPanel, tr("QWizard")); + tabWidget->addTab(new MessageBoxPanel, tr("QMessageBox")); setCentralWidget(tabWidget); } diff --git a/tests/manual/dialogs/messageboxpanel.cpp b/tests/manual/dialogs/messageboxpanel.cpp new file mode 100644 index 0000000000..6fc84e11fd --- /dev/null +++ b/tests/manual/dialogs/messageboxpanel.cpp @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "messageboxpanel.h" + +#include <QGroupBox> +#include <QPushButton> +#include <QVBoxLayout> +#include <QHBoxLayout> +#include <QMessageBox> +#include <QPushButton> +#include <QDebug> +#include <QComboBox> +#include <QLineEdit> +#include <QLabel> +#include <QCheckBox> + +MessageBoxPanel::MessageBoxPanel(QWidget *parent) : QWidget(parent) +,m_iconComboBox(new QComboBox) +,m_textInMsgBox(new QLineEdit) +,m_informativeText(new QLineEdit) +,m_detailedtext(new QLineEdit) +,m_buttonsMask(new QLineEdit) +,m_btnExec(new QPushButton) +,m_btnShowApply(new QPushButton) +,m_resultLabel(new QLabel) +,m_chkReallocMsgBox(new QCheckBox(QString::fromLatin1("Reallocate Message Box"))) +,m_msgbox(new QMessageBox) +{ + // --- Options --- + QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"), this); + QVBoxLayout *optionsLayout = new QVBoxLayout(optionsGroupBox); + + // text + optionsLayout->addWidget(new QLabel(QString::fromLatin1("Message box text"))); + m_textInMsgBox->setText(QString::fromLatin1("This is a simple test with a text that is not long")); + optionsLayout->addWidget(m_textInMsgBox); + + // informative text + optionsLayout->addWidget(new QLabel(QString::fromLatin1("Informative Text"))); + optionsLayout->addWidget(m_informativeText); + + // detailed text + optionsLayout->addWidget(new QLabel(QString::fromLatin1("detailed Text"))); + optionsLayout->addWidget(m_detailedtext); + + // icon + QStringList items; + items << "NoIcon" << "Information" << "Warning" << "Critical" << "Question"; + m_iconComboBox->addItems(items); + optionsLayout->addWidget(new QLabel(QString::fromLatin1("Message box icon"))); + optionsLayout->addWidget(m_iconComboBox); + + // buttons mask + optionsLayout->addWidget(new QLabel(QString::fromLatin1("Message box button mask (in hex)"))); + m_validator = new QRegExpValidator(QRegExp("0[xX]?[0-9a-fA-F]+"), this); + m_buttonsMask->setMaxLength(10); + m_buttonsMask->setValidator(m_validator); + m_buttonsMask->setText(QString::fromLatin1("0x00300400")); + optionsLayout->addWidget(m_buttonsMask); + + // reallocate + optionsLayout->addWidget(m_chkReallocMsgBox); + optionsLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding)); + + // Exec/Show + QGroupBox *execGroupBox = new QGroupBox(tr("Exec")); + QVBoxLayout *execLayout = new QVBoxLayout(execGroupBox); + m_btnExec->setText(QString::fromLatin1("Exec message box")); + connect(m_btnExec, SIGNAL(clicked()), this, SLOT(doExec())); + execLayout->addWidget(m_btnExec); + + m_btnShowApply->setText(QString::fromLatin1("Show / apply")); + connect(m_btnShowApply, SIGNAL(clicked()), this, SLOT(doShowApply())); + execLayout->addWidget(m_btnShowApply); + + // result label + execLayout->addWidget(m_resultLabel); + + execLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding)); + execGroupBox->setLayout(execLayout); + + // Main layout + QHBoxLayout *mainLayout = new QHBoxLayout(); + mainLayout->addWidget(optionsGroupBox); + mainLayout->addWidget(execGroupBox); + + setLayout(mainLayout); +} + +void MessageBoxPanel::setupMessageBox(QMessageBox &box) +{ + m_resultLabel->setText(QString()); + box.setText(m_textInMsgBox->text()); + box.setInformativeText(m_informativeText->text()); + box.setDetailedText(m_detailedtext->text()); + + QString btnHexText = m_buttonsMask->text(); + btnHexText = btnHexText.replace(QString::fromLatin1("0x"), QString(), Qt::CaseInsensitive); + bool ok; + QMessageBox::StandardButtons btns = (QMessageBox::StandardButtons) btnHexText.toUInt(&ok, 16); + box.setStandardButtons((QMessageBox::StandardButtons) btns); + if (box.standardButtons() == (QMessageBox::StandardButtons) 0) + box.setStandardButtons(QMessageBox::Ok); // just to have something. + + box.setIcon((QMessageBox::Icon) m_iconComboBox->currentIndex()); +} + +MessageBoxPanel::~MessageBoxPanel() +{ + if (m_msgbox) + m_msgbox->deleteLater(); +} + +void MessageBoxPanel::doExec() +{ + if (!m_msgbox || m_chkReallocMsgBox->isChecked()) { + if (m_msgbox) + m_msgbox->deleteLater(); + m_msgbox = new QMessageBox; + } + setupMessageBox(*m_msgbox); + m_msgbox->setWindowModality(Qt::NonModal); + + int res = m_msgbox->exec(); + QString sres; + sres.setNum(res, 16); + m_resultLabel->setText(QString::fromLatin1("Return value (hex): %1").arg(sres)); +} + +void MessageBoxPanel::doShowApply() +{ + if (!m_msgbox || m_chkReallocMsgBox->isChecked()) { + if (m_msgbox) + m_msgbox->deleteLater(); + m_msgbox = new QMessageBox; + } + setupMessageBox(*m_msgbox); + if (!m_msgbox->isVisible()) { + m_msgbox->setWindowModality(Qt::NonModal); + m_msgbox->show(); + } +} diff --git a/tests/manual/dialogs/messageboxpanel.h b/tests/manual/dialogs/messageboxpanel.h new file mode 100644 index 0000000000..9f7e35210c --- /dev/null +++ b/tests/manual/dialogs/messageboxpanel.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2013 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MESSAGEBOXPANEL_H +#define MESSAGEBOXPANEL_H + +#include <QWidget> + +QT_BEGIN_NAMESPACE +class QComboBox; +class QCheckBox; +class QPushButton; +class QLineEdit; +class QValidator; +class QLabel; +class QMessageBox; +class QCheckBox; +QT_END_NAMESPACE + +class MessageBoxPanel : public QWidget +{ + Q_OBJECT +public: + explicit MessageBoxPanel(QWidget *parent = 0); + ~MessageBoxPanel(); + +public slots: + void doExec(); + void doShowApply(); + +private: + QComboBox *m_iconComboBox; + QLineEdit *m_textInMsgBox; + QLineEdit *m_informativeText; + QLineEdit *m_detailedtext; + QLineEdit *m_buttonsMask; + QPushButton *m_btnExec; + QPushButton *m_btnShowApply; + QValidator *m_validator; + QLabel *m_resultLabel; + QCheckBox *m_chkReallocMsgBox; + QMessageBox *m_msgbox; + void setupMessageBox(QMessageBox &box); +}; + +#endif diff --git a/tests/manual/dialogs/wizardpanel.h b/tests/manual/dialogs/wizardpanel.h index 6a2268e94c..10e0c5071e 100644 --- a/tests/manual/dialogs/wizardpanel.h +++ b/tests/manual/dialogs/wizardpanel.h @@ -46,7 +46,9 @@ class WizardStyleControl; class WizardOptionsControl; +QT_BEGIN_NAMESPACE class QWizard; +QT_END_NAMESPACE class WizardPanel : public QWidget { diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro index 5beeec27c2..381922288f 100644 --- a/tests/manual/manual.pro +++ b/tests/manual/manual.pro @@ -20,6 +20,7 @@ qlayout \ qlocale \ qnetworkaccessmanager/qget \ qnetworkconfigurationmanager \ +qnetworkconfiguration \ qnetworkreply \ qpainfo \ qscreen \ diff --git a/tests/manual/qdesktopservices/tst_qdesktopservices.cpp b/tests/manual/qdesktopservices/tst_qdesktopservices.cpp index 534816a01b..9c39002fba 100644 --- a/tests/manual/qdesktopservices/tst_qdesktopservices.cpp +++ b/tests/manual/qdesktopservices/tst_qdesktopservices.cpp @@ -104,6 +104,11 @@ void tst_QDesktopServices::openUrl_data() << QUrl("http://google.com/search?q=/profile/5") << "This should search \"/profile/5\" on Google."; + // see QTBUG-31945 + QTest::newRow("two-fragments") + << QUrl("http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81") + << "This should open \"Implementing a Container View Controller\" in the UIViewController docs"; + QTest::newRow("mail") << QUrl("mailto:development@qt-project.org") << "This should open an email composer with the destination set to development@qt-project.org"; @@ -118,7 +123,7 @@ void tst_QDesktopServices::openUrl() QFETCH(QUrl, data); QFETCH(QString, message); qWarning("\n\nOpening \"%s\": %s", qPrintable(data.toString()), qPrintable(message)); - QDesktopServices::openUrl(data); + QVERIFY(QDesktopServices::openUrl(data)); } QTEST_MAIN(tst_QDesktopServices) diff --git a/tests/manual/qnetworkconfiguration/main.cpp b/tests/manual/qnetworkconfiguration/main.cpp new file mode 100644 index 0000000000..c611cfc9e2 --- /dev/null +++ b/tests/manual/qnetworkconfiguration/main.cpp @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research in Motion. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +#include <qtest.h> +#include <QtTest/QtTest> +#include <QtNetwork/qnetworkconfiguration.h> +#include <QtNetwork/qnetworkconfigmanager.h> + +class tst_qnetworkconfiguration : public QObject +{ + Q_OBJECT + +private slots: + void bearerType(); + void bearerTypeFamily(); +}; + +void tst_qnetworkconfiguration::bearerType() +{ + QNetworkConfigurationManager m; + QList<QNetworkConfiguration> allConfs = m.allConfigurations(); + QElapsedTimer timer; + for (int a = 0; a < allConfs.count(); a++) { + timer.start(); + QNetworkConfiguration::BearerType type = allConfs.at(a).bearerType(); + qint64 elapsed = timer.elapsed(); + QString typeString; + switch (type) { + case QNetworkConfiguration::BearerUnknown: + typeString = QLatin1String("Unknown"); + break; + case QNetworkConfiguration::BearerEthernet: + typeString = QLatin1String("Ethernet"); + break; + case QNetworkConfiguration::BearerWLAN: + typeString = QLatin1String("WLAN"); + break; + case QNetworkConfiguration::Bearer2G: + typeString = QLatin1String("2G"); + break; + case QNetworkConfiguration::BearerCDMA2000: + typeString = QLatin1String("CDMA2000"); + break; + case QNetworkConfiguration::BearerWCDMA: + typeString = QLatin1String("WCDMA"); + break; + case QNetworkConfiguration::BearerHSPA: + typeString = QLatin1String("HSPA"); + break; + case QNetworkConfiguration::BearerBluetooth: + typeString = QLatin1String("Bluetooth"); + break; + case QNetworkConfiguration::BearerWiMAX: + typeString = QLatin1String("WiMAX"); + break; + case QNetworkConfiguration::BearerEVDO: + typeString = QLatin1String("EVDO"); + break; + case QNetworkConfiguration::BearerLTE: + typeString = QLatin1String("LTE"); + break; + default: + typeString = "unknown bearer (?)"; + } + + const char *isDefault = (allConfs.at(a) == m.defaultConfiguration()) + ? "*DEFAULT*" : ""; + qDebug() << isDefault << "identifier:" << allConfs.at(a).identifier() + << "bearer type name:" << allConfs.at(a).bearerTypeName() + << "bearer type:" << type << "(" << typeString << ")" + << "elapsed:" << elapsed; + QCOMPARE(allConfs.at(a).bearerTypeName(), typeString); + } +} + +void tst_qnetworkconfiguration::bearerTypeFamily() +{ + QNetworkConfigurationManager m; + foreach (const QNetworkConfiguration &config, + m.allConfigurations(QNetworkConfiguration::Active)) { + QString family; + switch (config.bearerTypeFamily()) { + case QNetworkConfiguration::Bearer3G: + family = QLatin1String("Bearer3G"); + break; + case QNetworkConfiguration::Bearer4G: + family = QLatin1String("Bearer4G"); + break; + default: + family = config.bearerTypeName(); + } + qDebug() << config.name() << "has bearer type" + << config.bearerTypeName() << "of bearer type family" + << family; + } +} + +QTEST_MAIN(tst_qnetworkconfiguration) + +#include "main.moc" diff --git a/tests/manual/qnetworkconfiguration/qnetworkconfiguration.pro b/tests/manual/qnetworkconfiguration/qnetworkconfiguration.pro new file mode 100644 index 0000000000..25ef41b92a --- /dev/null +++ b/tests/manual/qnetworkconfiguration/qnetworkconfiguration.pro @@ -0,0 +1,7 @@ +TEMPLATE = app +TARGET = tst_qnetworkconfiguration + +QT -= gui +QT += network testlib + +SOURCES += main.cpp diff --git a/tests/manual/qpainfo/main.cpp b/tests/manual/qpainfo/main.cpp index 6b712304a0..0f5119bab3 100644 --- a/tests/manual/qpainfo/main.cpp +++ b/tests/manual/qpainfo/main.cpp @@ -49,6 +49,7 @@ #include <QStringList> #include <QVariant> #include <QFont> +#include <QFontDatabase> #include <QSysInfo> #include <QLibraryInfo> #include <QStandardPaths> @@ -85,6 +86,12 @@ std::ostream &operator<<(std::ostream &str, const QStringList &l) return str; } +std::ostream &operator<<(std::ostream &str, const QFont &f) +{ + std::cout << '"' << f.family().toStdString() << "\" " << f.pointSize(); + return str; +} + static QStringList toNativeSeparators(QStringList in) { for (int i = 0; i < in.size(); ++i) @@ -184,7 +191,12 @@ int main(int argc, char **argv) << " from " << platformTheme->themeHint(QPlatformTheme::IconThemeSearchPaths).toStringList() << '\n'; } if (const QFont *systemFont = platformTheme->font()) - std::cout << " System font: \"" << systemFont->family().toStdString() << "\" " << systemFont->pointSize() << '\n'; + std::cout << " System font: " << *systemFont<< '\n'; + std::cout << " General font : " << QFontDatabase::systemFont(QFontDatabase::GeneralFont) << '\n' + << " Fixed font : " << QFontDatabase::systemFont(QFontDatabase::FixedFont) << '\n' + << " Title font : " << QFontDatabase::systemFont(QFontDatabase::TitleFont) << '\n' + << " Smallest font: " << QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont) << "\n\n"; + if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FileDialog)) std::cout << " Native file dialog\n"; if (platformTheme->usePlatformNativeDialog(QPlatformTheme::ColorDialog)) diff --git a/tests/manual/qtabletevent/regular_widgets/main.cpp b/tests/manual/qtabletevent/regular_widgets/main.cpp index 1e2f5c00da..ce77cf8cff 100644 --- a/tests/manual/qtabletevent/regular_widgets/main.cpp +++ b/tests/manual/qtabletevent/regular_widgets/main.cpp @@ -43,12 +43,38 @@ #include <QDebug> #include <QMouseEvent> #include <QTabletEvent> -#include <QWidget> +#include <QMainWindow> +#include <QMenuBar> +#include <QMenu> +#include <QAction> +#include <QVector> +#include <QPainter> +#include <QCursor> + +enum TabletPointType { + TabletButtonPress, + TabletButtonRelease, + TabletMove, + TabletDraw +}; + +struct TabletPoint +{ + TabletPoint(const QPoint &p = QPoint(), TabletPointType t = TabletMove) : pos(p), type(t) {} + + QPoint pos; + TabletPointType type; +}; class EventReportWidget : public QWidget { + Q_OBJECT public: EventReportWidget(); + +public slots: + void clearPoints() { m_points.clear(); update(); } + protected: void mouseDoubleClickEvent(QMouseEvent *event) { outputMouseEvent(event); } void mouseMoveEvent(QMouseEvent *event) { outputMouseEvent(event); } @@ -57,11 +83,14 @@ protected: void tabletEvent(QTabletEvent *); + void paintEvent(QPaintEvent *); + private: void outputMouseEvent(QMouseEvent *event); bool m_lastIsMouseMove; bool m_lastIsTabletMove; + QVector<TabletPoint> m_points; }; EventReportWidget::EventReportWidget() @@ -69,6 +98,34 @@ EventReportWidget::EventReportWidget() , m_lastIsTabletMove(false) { } +void EventReportWidget::paintEvent(QPaintEvent *) +{ + QPainter p(this); + const QRect geom = QRect(QPoint(0, 0), size()); + p.fillRect(geom, Qt::white); + p.drawRect(QRect(geom.topLeft(), geom.bottomRight() - QPoint(1,1))); + foreach (const TabletPoint &t, m_points) { + if (geom.contains(t.pos)) { + QPainterPath pp; + pp.addEllipse(t.pos, 5, 5); + switch (t.type) { + case TabletButtonPress: + p.fillPath(pp, Qt::black); + break; + case TabletButtonRelease: + p.fillPath(pp, Qt::red); + break; + case TabletMove: + p.drawPath(pp); + break; + case TabletDraw: + p.fillPath(pp, Qt::blue); + break; + } + } + } +} + void EventReportWidget::tabletEvent(QTabletEvent *event) { QWidget::tabletEvent(event); @@ -89,14 +146,20 @@ void EventReportWidget::tabletEvent(QTabletEvent *event) m_lastIsTabletMove = true; type = QString::fromLatin1("TabletMove"); + m_points.push_back(TabletPoint(event->pos(), event->pressure() ? TabletDraw : TabletMove)); + update(); break; case QEvent::TabletPress: m_lastIsTabletMove = false; type = QString::fromLatin1("TabletPress"); + m_points.push_back(TabletPoint(event->pos(), TabletButtonPress)); + update(); break; case QEvent::TabletRelease: m_lastIsTabletMove = false; type = QString::fromLatin1("TabletRelease"); + m_points.push_back(TabletPoint(event->pos(), TabletButtonRelease)); + update(); break; default: Q_ASSERT(false); @@ -105,7 +168,8 @@ void EventReportWidget::tabletEvent(QTabletEvent *event) qDebug() << "Tablet event, type = " << type << " position = " << event->pos() - << " global position = " << event->globalPos(); + << " global position = " << event->globalPos() + << " cursor at " << QCursor::pos(); } void EventReportWidget::outputMouseEvent(QMouseEvent *event) @@ -144,7 +208,18 @@ void EventReportWidget::outputMouseEvent(QMouseEvent *event) int main(int argc, char *argv[]) { QApplication app(argc, argv); - EventReportWidget widget; - widget.show(); + QMainWindow mainWindow; + mainWindow.setWindowTitle(QString::fromLatin1("Tablet Test %1").arg(QT_VERSION_STR)); + EventReportWidget *widget = new EventReportWidget; + widget->setMinimumSize(640, 480); + QMenu *fileMenu = mainWindow.menuBar()->addMenu("File"); + QObject::connect(fileMenu->addAction("Clear"), SIGNAL(triggered()), widget, SLOT(clearPoints())); + QAction *quitAction = fileMenu->addAction("Quit"); + QObject::connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); + quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); + mainWindow.setCentralWidget(widget); + mainWindow.show(); return app.exec(); } + +#include "main.moc" diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.cpp b/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.cpp new file mode 100644 index 0000000000..463366433c --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.cpp @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/QtWidgets> + +const int rowCount = 2000; + +class TableDialog : public QDialog +{ + Q_OBJECT +public: + TableDialog() : model(rowCount, 3) { create(); } + void create() + { + resize(1000, 233); + gridLayout = new QGridLayout(this); + tableView = new QTableView(this); + + gridLayout->addWidget(tableView, 0, 0, 2, 1); + spinPrecision = new QSpinBox(this); + gridLayout->addWidget(spinPrecision, 0, 1, 1, 1); + verticalSpacer = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addItem(verticalSpacer, 1, 1, 1, 1); + + QString ii = QString::fromLatin1("ii"); + QStringList is; + spinPrecision->setMinimum(-1); + spinPrecision->setMaximum(rowCount + 2); + for (int u = 0; u < rowCount; ++u) { + if (u % 25 == 0) + ii += QString::fromLatin1("i"); + else + ii[ii.length() - 1] = QChar::fromLatin1('a' + (u % 25)); + ii[ii.length() - 2] = QChar::fromLatin1('i'); + is.append(ii); + } + + for (int u = 0; u < rowCount; ++u) { + QString col1; + col1 = QString::fromLatin1("Row: %1").arg(u); + model.setData(model.index(u, 0), col1); + model.setData(model.index(u, 1), is[u]); + model.setData(model.index(u, 2), is[rowCount - u -1]); + } + tableView->setModel(&model); + + tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + tableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + tableView->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents); + spinPrecision->setValue(tableView->horizontalHeader()->resizeContentsPrecision()); + connect(spinPrecision, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int))); + } // setupUi +protected slots: + void slotValueChanged(int newval); +protected: + QGridLayout *gridLayout; + QTableView *tableView; + QSpinBox *spinPrecision; + QSpacerItem *verticalSpacer; + QStandardItemModel model; +}; + +void TableDialog::slotValueChanged(int newval) +{ + tableView->horizontalHeader()->setResizeContentsPrecision(newval, true); +} + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + TableDialog d1; + d1.show(); + app.exec(); +} + +#include "testtable1.moc" diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.pro b/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.pro new file mode 100644 index 0000000000..e07f40bc2f --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/tablehorz/testtable1.pro @@ -0,0 +1,2 @@ +SOURCES = testtable1.cpp +QT += widgets diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.cpp b/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.cpp new file mode 100644 index 0000000000..027801d528 --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.cpp @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/QtWidgets> + +const int columnCount = 1500; + +class TableDialog : public QDialog +{ + Q_OBJECT +public: + TableDialog() : model(2, columnCount) { create(); } + void create() + { + resize(1200, 400); + gridLayout = new QGridLayout(this); + tableView = new QTableView(this); + + gridLayout->addWidget(tableView, 0, 0, 2, 1); + spinPrecision = new QSpinBox(this); + gridLayout->addWidget(spinPrecision, 0, 1, 1, 1); + verticalSpacer = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addItem(verticalSpacer, 1, 1, 1, 1); + + QString ii = QString::fromLatin1("ii"); + QStringList is; + spinPrecision->setMinimum(-1); + spinPrecision->setMaximum(columnCount + 2); + + QFont f = QApplication::font(); + for (int u = 0; u < columnCount; ++u) { + int size = 10 + (u % 63); + f.setPixelSize(size); + QString col; + if (u % 50 < 25) + col = QChar::fromLatin1('a' + (u % 25)); + else + col = QChar::fromLatin1('A' + (u % 25)); + + int v = columnCount - u - 1; + model.setData(model.index(0, u), col); + model.setData(model.index(1, v), col); + + model.setData(model.index(0, u), f, Qt::FontRole); + model.setData(model.index(1, v), f, Qt::FontRole); + } + tableView->setModel(&model); + + for (int u = 0; u < columnCount; ++ u) + tableView->horizontalHeader()->resizeSection(u, 60); + + // Make last index in first row a bit special + f.setPixelSize(96); + model.setData(model.index(0, columnCount - 1), f, Qt::FontRole); + model.setData(model.index(0, columnCount - 1), QString::fromLatin1("qI")); + tableView->horizontalHeader()->resizeSection(columnCount - 1, 140); + + tableView->verticalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + tableView->verticalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + spinPrecision->setValue(tableView->verticalHeader()->resizeContentsPrecision()); + connect(spinPrecision, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int))); + } // setupUi +protected slots: + void slotValueChanged(int newval); +protected: + QGridLayout *gridLayout; + QTableView *tableView; + QSpinBox *spinPrecision; + QSpacerItem *verticalSpacer; + QStandardItemModel model; +}; + +void TableDialog::slotValueChanged(int newval) +{ + tableView->verticalHeader()->setResizeContentsPrecision(newval, true); +} + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + TableDialog d1; + d1.show(); + app.exec(); +} + +#include "testtable2.moc" diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.pro b/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.pro new file mode 100644 index 0000000000..b887fcb14b --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/tablevert/testtable2.pro @@ -0,0 +1,2 @@ +SOURCES = testtable2.cpp +QT += widgets diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.cpp b/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.cpp new file mode 100644 index 0000000000..c48d933fcd --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.cpp @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/QtWidgets> + +class TreeDialog : public QDialog +{ + Q_OBJECT +public: + TreeDialog() { create(); } +protected: + void create() + { + resize(1000, 233); + gridLayout = new QGridLayout(this); + treeWidget = new QTreeWidget(this); + + gridLayout->addWidget(treeWidget, 0, 0, 2, 1); + spinPrecision = new QSpinBox(this); + gridLayout->addWidget(spinPrecision, 0, 1, 1, 1); + verticalSpacer = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addItem(verticalSpacer, 1, 1, 1, 1); + + QStringList itemInfo("Col1"); + itemInfo.append("Col2"); + itemInfo.append("Col3"); + itemInfo.append("Dummy"); + // Developer no. could also have been social security number og some other id. + treeWidget->setHeaderLabels(itemInfo); + + QStringList sl1("This is Root Item"); + sl1.append("i"); + QTreeWidgetItem *rootitem = new QTreeWidgetItem(treeWidget, sl1); + + QStringList sl2("This is Child1 Item"); + sl2.append("WW"); + QTreeWidgetItem *child1 = new QTreeWidgetItem(rootitem, sl2); + + QString ii = QString::fromLatin1("ii"); + QStringList is; + const int rowCount = 3000; + spinPrecision->setMinimum(-1); + spinPrecision->setMaximum(rowCount + 5); + for (int u = 0; u < rowCount; ++u) { + if (u % 25 == 0) + ii += QString::fromLatin1("i"); + else + ii[ii.length() - 1] = QChar::fromLatin1('a' + (u % 25)); + ii[ii.length() - 2] = QChar::fromLatin1('i'); + is.append(ii); + } + + for (int u = 0; u < rowCount - 2; ++u) { // -2 since we have rootitem and child1 + QString col1; + col1 = QString::fromLatin1("This is child item %1").arg(u + 2); + + QStringList sl(col1); + sl.append(is[u]); + sl.append(is[rowCount - u - 1]); + + if (u > 500) + new QTreeWidgetItem(rootitem, sl); + else + new QTreeWidgetItem(child1, sl); + } + treeWidget->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + treeWidget->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + treeWidget->header()->setSectionResizeMode(2, QHeaderView::ResizeToContents); + spinPrecision->setValue(treeWidget->header()->resizeContentsPrecision()); + connect(spinPrecision, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int))); + } // setupUi +protected slots: + void slotValueChanged(int newval); +protected: + QGridLayout *gridLayout; + QTreeWidget *treeWidget; + QSpinBox *spinPrecision; + QSpacerItem *verticalSpacer; +}; + +void TreeDialog::slotValueChanged(int newval) +{ + treeWidget->header()->setResizeContentsPrecision(newval, true); +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + TreeDialog d1; + d1.show(); + app.exec(); +} + +#include "testtree.moc" diff --git a/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.pro b/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.pro new file mode 100644 index 0000000000..c062586eac --- /dev/null +++ b/tests/manual/widgets/itemviews/autoResizePrecision/treeview/testtree.pro @@ -0,0 +1,2 @@ +SOURCES = testtree.cpp +QT += widgets diff --git a/tests/manual/widgets/itemviews/delegate/example.cpp b/tests/manual/widgets/itemviews/delegate/example.cpp index c65f49f266..dcebf437b1 100644 --- a/tests/manual/widgets/itemviews/delegate/example.cpp +++ b/tests/manual/widgets/itemviews/delegate/example.cpp @@ -45,6 +45,7 @@ #include <QStandardItemModel> #include <QItemDelegate> #include <QDebug> +#include <QComboBox> class ExampleEditor : public QLineEdit { @@ -56,13 +57,26 @@ public: class ExampleDelegate : public QItemDelegate { public: - ExampleDelegate():QItemDelegate() { m_editor = new ExampleEditor(0); } + ExampleDelegate() : QItemDelegate() + { + m_editor = new ExampleEditor(0); + m_combobox = new QComboBox(0); + m_combobox->addItem(QString::fromUtf8("item1")); + m_combobox->addItem(QString::fromUtf8("item2")); + } protected: - QWidget* createEditor(QWidget *p, const QStyleOptionViewItem &o, const QModelIndex &) const + QWidget* createEditor(QWidget *p, const QStyleOptionViewItem &o, const QModelIndex &i) const { - m_editor->setParent(p); - m_editor->setGeometry(o.rect); - return m_editor; + // doubleclick rownumber 3 (last row) to see the difference. + if (i.row() == 3) { + m_combobox->setParent(p); + m_combobox->setGeometry(o.rect); + return m_combobox; + } else { + m_editor->setParent(p); + m_editor->setGeometry(o.rect); + return m_editor; + } } void destroyEditor(QWidget *editor, const QModelIndex &) const { @@ -71,10 +85,25 @@ protected: } // Avoid setting data - and therefore show that the editor keeps its state. - void setEditorData(QWidget*, const QModelIndex &) const { } + void setEditorData(QWidget* w, const QModelIndex &) const + { + QComboBox *combobox = qobject_cast<QComboBox*>(w); + if (combobox) { + qDebug() << "Try to show popup at once"; + // Now we could try to make a call to + // QCoreApplication::processEvents(); + // But it does not matter. The fix: + // https://codereview.qt-project.org/40608 + // is blocking QComboBox from reacting to this doubleclick edit event + // and we need to do that since the mouseReleaseEvent has not yet happened, + // and therefore cannot be processed. + combobox->showPopup(); + } + } ~ExampleDelegate() { delete m_editor; } mutable ExampleEditor *m_editor; + mutable QComboBox *m_combobox; }; int main(int argc, char *argv[]) diff --git a/tests/manual/widgets/itemviews/itemviews.pro b/tests/manual/widgets/itemviews/itemviews.pro index 58b02bfc0d..6b91531a87 100644 --- a/tests/manual/widgets/itemviews/itemviews.pro +++ b/tests/manual/widgets/itemviews/itemviews.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -SUBDIRS = delegate qheaderview qtreeview +SUBDIRS = delegate qheaderview qtreeview qtreewidget diff --git a/tests/manual/widgets/itemviews/qtreeview/main.cpp b/tests/manual/widgets/itemviews/qtreeview/main.cpp index 296ba6bcbf..22b4e07f75 100644 --- a/tests/manual/widgets/itemviews/qtreeview/main.cpp +++ b/tests/manual/widgets/itemviews/qtreeview/main.cpp @@ -39,17 +39,34 @@ ** ****************************************************************************/ - -#include <QtWidgets/QFileSystemModel> -#include <QtWidgets/QtWidgets> +#include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); - QFileSystemModel *model = new QFileSystemModel; - model->setRootPath(QDir::currentPath()); - QTreeView *tree = new QTreeView(); - tree->setModel(model); - tree->show(); - app.exec(); + QFileSystemModel model; + QWidget window; + QTreeView *tree = new QTreeView(&window); + tree->setMaximumSize(1000, 600); + + QHBoxLayout *layout = new QHBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->addWidget(tree); + + window.setLayout(layout); + model.setRootPath(""); + tree->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); + tree->setModel(&model); + + tree->setAnimated(false); + tree->setIndentation(20); + tree->setSortingEnabled(true); + tree->header()->setStretchLastSection(false); + + window.setWindowTitle(QObject::tr("Dir View")); + tree->header()->setSectionResizeMode(QHeaderView::ResizeToContents); + + window.show(); + + return app.exec(); } diff --git a/tests/manual/widgets/itemviews/qtreewidget/main.cpp b/tests/manual/widgets/itemviews/qtreewidget/main.cpp new file mode 100644 index 0000000000..9428113250 --- /dev/null +++ b/tests/manual/widgets/itemviews/qtreewidget/main.cpp @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QVBoxLayout> +#include <QTreeWidget> +#include <QGroupBox> +#include <QRadioButton> +#include <QDialog> +#include <QApplication> +#include <QHeaderView> + +class ExampleDlg : public QDialog +{ + Q_OBJECT +public: + QVBoxLayout *groupLayout; + QVBoxLayout *dialogLayout; + QTreeWidget *treeWidget; + QGroupBox *groupBox; + QRadioButton *radioFirstName; + QRadioButton *radioLastName; + QRadioButton *radioDeveloperNo; + QRadioButton *radioTitle; + + ExampleDlg() : QDialog(0) + { + dialogLayout = new QVBoxLayout(this); + treeWidget = new QTreeWidget(this); + dialogLayout->addWidget(treeWidget); + + groupBox = new QGroupBox(this); + groupLayout = new QVBoxLayout(groupBox); + radioFirstName = new QRadioButton("First Name", groupBox); + groupLayout->addWidget(radioFirstName); + radioLastName = new QRadioButton("Last Name", groupBox); + groupLayout->addWidget(radioLastName); + radioDeveloperNo = new QRadioButton("Developer No.", groupBox); + groupLayout->addWidget(radioDeveloperNo); + radioTitle = new QRadioButton("Title", groupBox); + groupLayout->addWidget(radioTitle); + dialogLayout->addWidget(groupBox); + + QStringList item1sl("Barry"); + item1sl.append("Butter"); + item1sl.append("12199"); + item1sl.append("Key Maintainer"); + QTreeWidgetItem *item1 = new QTreeWidgetItem(treeWidget, item1sl); + + QStringList item2sl("Cordon"); + item2sl.append("Rampsey"); + item2sl.append("59299"); + item2sl.append("Maintainer"); + QTreeWidgetItem *item2 = new QTreeWidgetItem(item1, item2sl); + + QStringList item3sl("Samuel le"); + item3sl.append("Smackson"); + item3sl.append("708"); + item3sl.append("Contributer"); + /* QTreeWidgetItem *item3 = */ new QTreeWidgetItem(item2, item3sl); + + QStringList item4sl("Georg"); + item4sl.append("Ambush"); + item4sl.append("86999"); + item4sl.append("Area Maintainer"); + QTreeWidgetItem *item4 = new QTreeWidgetItem(item1, item4sl); + + QStringList item5sl("Arne"); + item5sl.append("Strassenleger"); + item5sl.append("338999"); + item5sl.append("Approver"); + /* QTreeWidgetItem *item4 =*/ new QTreeWidgetItem(item4, item5sl); + + treeWidget->setColumnCount(item2sl.size()); + QStringList itemInfo("First Name"); + itemInfo.append("Last Name"); + itemInfo.append("Developer No."); + // Developer no. could also have been social security number og some other id. + itemInfo.append("Title"); + treeWidget->setHeaderLabels(itemInfo); + radioFirstName->setChecked(true); + + connect(radioFirstName, SIGNAL(toggled(bool)), this, SLOT(fixDataInTree(bool))); + connect(radioLastName, SIGNAL(toggled(bool)), this, SLOT(fixDataInTree(bool))); + connect(radioDeveloperNo, SIGNAL(toggled(bool)), this, SLOT(fixDataInTree(bool))); + connect(radioTitle, SIGNAL(toggled(bool)), this, SLOT(fixDataInTree(bool))); + treeWidget->setTreePosition(-1); + } + + protected slots: + void fixDataInTree(bool checked) + { + if (!checked) + return; + int colInTree = 0; // first Name + if (radioLastName->isChecked()) + colInTree = 1; + if (radioDeveloperNo->isChecked()) + colInTree = 2; + if (radioTitle->isChecked()) + colInTree = 3; + treeWidget->header()->swapSections(0, treeWidget->header()->visualIndex(colInTree)); + } +}; + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + ExampleDlg d; + d.show(); + app.exec(); +} + +#include "main.moc" diff --git a/tests/manual/widgets/itemviews/qtreewidget/qtreewidgettest.pro b/tests/manual/widgets/itemviews/qtreewidget/qtreewidgettest.pro new file mode 100644 index 0000000000..4b1da9be38 --- /dev/null +++ b/tests/manual/widgets/itemviews/qtreewidget/qtreewidgettest.pro @@ -0,0 +1,4 @@ +TEMPLATE = app +SOURCES = main.cpp +QT += widgets core-private +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/manual/widgets/kernel/kernel.pro b/tests/manual/widgets/kernel/kernel.pro new file mode 100644 index 0000000000..968d71724f --- /dev/null +++ b/tests/manual/widgets/kernel/kernel.pro @@ -0,0 +1,2 @@ +TEMPLATE = subdirs +SUBDIRS = qtooltip sizeonhide diff --git a/tests/manual/widgets/kernel/qtooltip/main.cpp b/tests/manual/widgets/kernel/qtooltip/main.cpp new file mode 100644 index 0000000000..a7a2b9915c --- /dev/null +++ b/tests/manual/widgets/kernel/qtooltip/main.cpp @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Lund Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QTest> +#include <QDialog> +#include <QToolTip> +#include <QLabel> +#include <QPushButton> +#include <QVBoxLayout> +#include <QProxyStyle> +#include <QSpinBox> + +class QToolTipTest : public QProxyStyle +{ + Q_OBJECT +public: + QToolTipTest() : QProxyStyle() + { + wakeTime = QApplication::style()->styleHint(SH_ToolTip_WakeUpDelay); + sleepTime = QApplication::style()->styleHint(SH_ToolTip_FallAsleepDelay); + } + + int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const + { + switch (hint) { + case SH_ToolTip_WakeUpDelay: + return wakeTime; + case SH_ToolTip_FallAsleepDelay: + return sleepTime; + default: + return QProxyStyle::styleHint(hint, option, widget, returnData); + } + } + +public slots: + void setWakeTime(int wake) { wakeTime = wake; } + void setSleepTime(int sleep) { sleepTime = sleep; } +protected: + int wakeTime; + int sleepTime; +}; + +class TestDialog : public QDialog +{ + Q_OBJECT +public: + TestDialog(QToolTipTest *s); + QToolTipTest *style; +protected slots: + void showSomeToolTips(); +}; + +void TestDialog::showSomeToolTips() +{ + QPoint p(100 + 20, 100 + 20); + + for (int u = 1; u < 20; u += 5) { + QString s = tr("Seconds: ") + QString::number(u); + QToolTip::showText(p, s, 0, QRect(), 1000 * u); + QTest::qWait((u + 1) * 1000); + } + + QToolTip::showText(p, tr("Seconds: 2"), 0, QRect(), 2000); + QTest::qWait(3000); + + QToolTip::showText(p, tr("Standard label"), 0, QRect()); + QTest::qWait(12000); +} + +TestDialog::TestDialog(QToolTipTest *s) : style(s) +{ + // Notice that these tool tips will disappear if another tool tip is shown. + QLabel *label1 = new QLabel(tr("Tooltip - Only two seconds display")); + label1->setToolTip(tr("2 seconds display")); + label1->setToolTipDuration(2000); + Q_ASSERT(label1->toolTipDuration() == 2000); + + QLabel *label2 = new QLabel(tr("Tooltip - 30 seconds display time")); + label2->setToolTip(tr("30 seconds display")); + label2->setToolTipDuration(30000); + + QPushButton *pb = new QPushButton(tr("&Test")); + pb->setToolTip(tr("Show some tool tips.")); + Q_ASSERT(pb->toolTipDuration() == -1); + connect(pb, SIGNAL(clicked()), this, SLOT(showSomeToolTips())); + + QLabel *wakeLabel = new QLabel(tr("Wake Delay:")); + QSpinBox *wakeSpinBox = new QSpinBox(); + wakeSpinBox->setRange(0, 100000); + wakeSpinBox->setValue(style->styleHint(QStyle::SH_ToolTip_WakeUpDelay)); + connect(wakeSpinBox, SIGNAL(valueChanged(int)), style, SLOT(setWakeTime(int))); + + QLabel *sleepLabel = new QLabel(tr("Sleep Delay:")); + QSpinBox *sleepSpinBox = new QSpinBox(); + sleepSpinBox->setRange(0, 100000); + sleepSpinBox->setValue(style->styleHint(QStyle::SH_ToolTip_FallAsleepDelay)); + connect(sleepSpinBox, SIGNAL(valueChanged(int)), style, SLOT(setSleepTime(int))); + + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(label1); + layout->addWidget(label2); + layout->addWidget(pb); + layout->addWidget(wakeLabel); + layout->addWidget(wakeSpinBox); + layout->addWidget(wakeLabel); + layout->addWidget(sleepLabel); + layout->addWidget(sleepSpinBox); + + setLayout(layout); +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + QToolTipTest *style = new QToolTipTest(); + QApplication::setStyle(style); + TestDialog dlg(style); + dlg.show(); + return app.exec(); +} + +#include "main.moc" diff --git a/tests/manual/widgets/kernel/qtooltip/main.pro b/tests/manual/widgets/kernel/qtooltip/main.pro new file mode 100644 index 0000000000..dac880a10e --- /dev/null +++ b/tests/manual/widgets/kernel/qtooltip/main.pro @@ -0,0 +1,2 @@ +SOURCES = main.cpp +QT += widgets testlib diff --git a/tests/manual/widgets/kernel/sizeonhide/main.cpp b/tests/manual/widgets/kernel/sizeonhide/main.cpp new file mode 100644 index 0000000000..e8b95dfe28 --- /dev/null +++ b/tests/manual/widgets/kernel/sizeonhide/main.cpp @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWidgets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> + +class KeepSizeExampleDlg : public QDialog +{ + Q_OBJECT +public: + QGridLayout *gridLayout; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout; + QCheckBox *checkBox; + QCheckBox *checkBox2; + QCheckBox *checkBox3; + QCheckBox *checkBox4; + QGroupBox *groupBox; + QVBoxLayout *verticalLayout2; + QRadioButton *radioButton; + QRadioButton *radioButton2; + QRadioButton *radioButton3; + QTableView *tableView; + QPushButton *pushButton; + QSpacerItem *horizontalSpacer; + + KeepSizeExampleDlg() + { + QWidget *form = this; + form->resize(408, 295); + gridLayout = new QGridLayout(form); + horizontalLayout = new QHBoxLayout(); + verticalLayout = new QVBoxLayout(); + checkBox = new QCheckBox(form); + verticalLayout->addWidget(checkBox); + checkBox2 = new QCheckBox(form); + verticalLayout->addWidget(checkBox2); + checkBox3 = new QCheckBox(form); + verticalLayout->addWidget(checkBox3); + checkBox4 = new QCheckBox(form); + verticalLayout->addWidget(checkBox4); + horizontalLayout->addLayout(verticalLayout); + groupBox = new QGroupBox(form); + verticalLayout2 = new QVBoxLayout(groupBox); + radioButton = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton); + radioButton2 = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton2); + radioButton3 = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton3); + horizontalLayout->addWidget(groupBox); + gridLayout->addLayout(horizontalLayout, 0, 0, 1, 2); + tableView = new QTableView(form); + gridLayout->addWidget(tableView, 1, 0, 1, 2); + pushButton = new QPushButton(form); + gridLayout->addWidget(pushButton, 2, 0, 1, 1); + horizontalSpacer = new QSpacerItem(340, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + gridLayout->addItem(horizontalSpacer, 2, 1, 1, 1); + checkBox->setText(QString::fromUtf8("CheckBox1")); + checkBox2->setText(QString::fromUtf8("CheckBox2")); + checkBox3->setText(QString::fromUtf8("CheckBox - for client A only")); + checkBox4->setText(QString::fromUtf8("CheckBox - also for client A")); + groupBox->setTitle(QString::fromUtf8("Mode")); + radioButton->setText(QString::fromUtf8("Mode 1")); + radioButton2->setText(QString::fromUtf8("Mode 2")); + radioButton3->setText(QString::fromUtf8("Mode 3")); + pushButton->setText(QString::fromUtf8("&Hide/Show")); + + QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(showOrHide())); + } + + protected slots: + void showOrHide() + { + if (checkBox3->isVisible()) { + checkBox3->hide(); + checkBox4->hide(); + } else { + checkBox3->show(); + checkBox4->show(); + } + } +}; + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + KeepSizeExampleDlg d; + QSizePolicy policyKeepSpace = d.checkBox3->sizePolicy(); + policyKeepSpace.setRetainSizeWhenHidden(true); + d.checkBox3->setSizePolicy(policyKeepSpace); + d.checkBox4->setSizePolicy(policyKeepSpace); + d.show(); + app.exec(); +} + +#include "main.moc" diff --git a/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro b/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro new file mode 100644 index 0000000000..1969392ab3 --- /dev/null +++ b/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro @@ -0,0 +1,3 @@ +TEMPLATE = app +SOURCES = main.cpp +QT += widgets core-private diff --git a/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp b/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp index aec2479239..bb05570f18 100644 --- a/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp +++ b/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp @@ -49,7 +49,7 @@ public: setFlags(QGraphicsItem::ItemIsSelectable); } - void paint(QPainter *painter, const QStyleOptionGraphicsItem * /* option*/, QWidget * /*widget*/) + void paint(QPainter *painter, const QStyleOptionGraphicsItem * /* option*/, QWidget * /*widget*/) Q_DECL_OVERRIDE { if (isSelected()) painter->fillRect(rect(), QColor(255, 0, 0)); @@ -68,7 +68,7 @@ public: connect(this, SIGNAL(rubberBandChanged(QRect, QPointF, QPointF)), this, SLOT(updateRubberbandInfo(QRect, QPointF, QPointF))); } protected: - void mouseMoveEvent(QMouseEvent *event) + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE { QGraphicsView::mouseMoveEvent(event); diff --git a/tests/manual/widgets/widgets.pro b/tests/manual/widgets/widgets.pro index 4e2e4c7cee..e9dcdf39e7 100644 --- a/tests/manual/widgets/widgets.pro +++ b/tests/manual/widgets/widgets.pro @@ -1,2 +1,3 @@ TEMPLATE = subdirs -SUBDIRS = itemviews qgraphicsview +SUBDIRS = itemviews qgraphicsview kernel + |