aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMarco Benelli <marco.benelli@qt.io>2017-01-19 15:47:51 +0100
committerMarco Benelli <marco.benelli@qt.io>2017-01-31 09:55:19 +0000
commitbdb18b54717f2f97364de811bebc14a31becf1b7 (patch)
tree39353ef455d8b9f8d5282d26970c325dbd5980f1 /tools
parentdc0a7d7021b52adfea1e128557ff35c003a49431 (diff)
qmlplugindump: add -qapp option
Some modules (ie QtChart) require a QApplication instead of the QGuiApplication that qmlplugindump use by default. This option let the user specify if a QApplication is needed. Task-number: QTBUG-58264 Change-Id: I10e68d0d3eab2afad315b57fef9ce92c42e70124 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlplugindump/main.cpp36
-rw-r--r--tools/qmlplugindump/qmlplugindump.pro1
2 files changed, 30 insertions, 7 deletions
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index 443ede4bf0..5a3bc14eb7 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -33,6 +33,10 @@
#include <QtQuick/private/qquickevents_p_p.h>
#include <QtQuick/private/qquickpincharea_p.h>
+#ifdef QT_WIDGETS_LIB
+#include <QApplication>
+#endif // QT_WIDGETS_LIB
+
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
#include <QtCore/QFileInfo>
@@ -739,8 +743,8 @@ void sigSegvHandler(int) {
void printUsage(const QString &appName)
{
std::cerr << qPrintable(QString(
- "Usage: %1 [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] [-merge <file-to-merge.qmltypes>] [-output <output-file.qmltypes>] [-noforceqtquick] module.uri version [module/import/path]\n"
- " %1 [-v] [-noinstantiate] -path path/to/qmldir/directory [version]\n"
+ "Usage: %1 [-v] [-qapp] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] [-merge <file-to-merge.qmltypes>] [-output <output-file.qmltypes>] [-noforceqtquick] module.uri version [module/import/path]\n"
+ " %1 [-v] [-qapp] [-noinstantiate] -path path/to/qmldir/directory [version]\n"
" %1 [-v] -builtins\n"
"Example: %1 Qt.labs.folderlistmodel 2.0 /home/user/dev/qt-install/imports").arg(
appName)) << std::endl;
@@ -985,10 +989,25 @@ int main(int argc, char *argv[])
else
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);
- QGuiApplication app(argc, argv);
+ // Check which kind of application should be instantiated.
+ bool useQApplication = false;
+ for (int i = 0; i < argc; ++i) {
+ QString arg = QLatin1String(argv[1]);
+ if (arg == QLatin1String("--qapp") || arg == QLatin1String("-qapp"))
+ useQApplication = true;
+ }
+
+#ifdef QT_WIDGETS_LIB
+ QScopedPointer<QCoreApplication> app(useQApplication
+ ? new QApplication(argc, argv)
+ : new QGuiApplication(argc, argv));
+#else
+ QScopedPointer<QCoreApplication> app(new QGuiApplication(argc, argv));
+#endif // QT_WIDGETS_LIB
+
QCoreApplication::setApplicationVersion(QLatin1String(QT_VERSION_STR));
- const QStringList args = app.arguments();
- const QString appName = QFileInfo(app.applicationFilePath()).baseName();
+ const QStringList args = app->arguments();
+ const QString appName = QFileInfo(app->applicationFilePath()).baseName();
if (args.size() < 2) {
printUsage(appName);
return EXIT_INVALIDARGUMENTS;
@@ -1058,6 +1077,9 @@ int main(int argc, char *argv[])
} else if (arg == QLatin1String("--defaultplatform")
|| arg == QLatin1String("-defaultplatform")) {
continue;
+ } else if (arg == QLatin1String("--qapp")
+ || arg == QLatin1String("-qapp")) {
+ continue;
} else {
std::cerr << "Invalid argument: " << qPrintable(arg) << std::endl;
return EXIT_INVALIDARGUMENTS;
@@ -1322,8 +1344,8 @@ int main(int argc, char *argv[])
QTimer timer;
timer.setSingleShot(true);
timer.setInterval(0);
- QObject::connect(&timer, SIGNAL(timeout()), &app, SLOT(quit()));
+ QObject::connect(&timer, SIGNAL(timeout()), app.data(), SLOT(quit()));
timer.start();
- return app.exec();
+ return app->exec();
}
diff --git a/tools/qmlplugindump/qmlplugindump.pro b/tools/qmlplugindump/qmlplugindump.pro
index 16d9a3f4d9..2749ec943f 100644
--- a/tools/qmlplugindump/qmlplugindump.pro
+++ b/tools/qmlplugindump/qmlplugindump.pro
@@ -1,4 +1,5 @@
QT += qml qml-private quick-private core-private
+qtHaveModule(widgets): QT += widgets
CONFIG += no_import_scan