aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2021-12-07 15:04:04 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2021-12-08 13:12:12 +0000
commitc17f633a7ecf9e4651af0b485f9f71afbd2cbb73 (patch)
tree3964af9119ce554fb11de4828e63c913d5d38963
parent8c139603a18ef3efff5ff46de9cac488b3e93bfa (diff)
QmlProjectManager: Add widgetApp qml project property
Widget was the default apptype in Qt5, but in Qt6 the default was changed to gui, so projects with qml modules that depend on widgets can no longer be launched. Notable example of this is QtCharts. Added "widgetApp" qml project property to allow users to specify if they want widget or gui based application. Task-number: QDS-5686 Change-Id: If0787421c79d4ba24a0f8513c8538126bcf29b4e Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r--src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp4
-rw-r--r--src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h4
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp7
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.h1
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp5
5 files changed, 21 insertions, 0 deletions
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
index 962b403492..80b2d08ca7 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
@@ -123,6 +123,10 @@ QmlProjectItem *QmlProjectFileFormat::parseProjectFile(const Utils::FilePath &fi
if (qt6ProjectProperty.isValid() && qt6ProjectProperty.value.toBool())
projectItem->setQt6Project(qt6ProjectProperty.value.toBool());
+ const auto widgetAppProperty = rootNode->property("widgetApp");
+ if (widgetAppProperty.isValid())
+ projectItem->setWidgetApp(widgetAppProperty.value.toBool());
+
if (debug)
qDebug() << "importPath:" << importPathsProperty.value << "mainFile:" << mainFileProperty.value;
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
index 90d17e4859..a104e90646 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
@@ -78,6 +78,9 @@ public:
QString mainFile() const { return m_mainFile; }
void setMainFile(const QString &mainFilePath) { m_mainFile = mainFilePath; }
+ bool widgetApp() const { return m_widgetApp; }
+ void setWidgetApp(bool widgetApp) { m_widgetApp = widgetApp; }
+
void appendContent(QmlProjectContentItem *item) { m_content.append(item); }
Utils::EnvironmentItems environment() const;
@@ -99,6 +102,7 @@ protected:
bool m_forceFreeType = false;
bool m_qtForMCUs = false;
bool m_qt6Project = false;
+ bool m_widgetApp = false;
};
} // namespace QmlProjectManager
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index c17f7f158b..35ff194f95 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -585,6 +585,13 @@ bool QmlBuildSystem::forceFreeType() const
return false;
}
+bool QmlBuildSystem::widgetApp() const
+{
+ if (m_projectItem)
+ return m_projectItem.data()->widgetApp();
+ return false;
+}
+
bool QmlBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FilePaths *)
{
if (!dynamic_cast<QmlProjectNode *>(context))
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 4f347d07e1..9defdbc0ed 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -93,6 +93,7 @@ public:
QString primaryLanguage() const;
void setPrimaryLanguage(QString language);
bool forceFreeType() const;
+ bool widgetApp() const;
bool addFiles(const QStringList &filePaths);
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index f66c3005d0..e0c7cb3045 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -227,6 +227,11 @@ QString QmlProjectRunConfiguration::commandLineArguments() const
ProcessArgs::addArg(&args, "windows:fontengine=freetype", osType);
}
+ if (bs->qt6Project() && bs->widgetApp()) {
+ ProcessArgs::addArg(&args, "--apptype", osType);
+ ProcessArgs::addArg(&args, "widget", osType);
+ }
+
const QString main = bs->targetFile(FilePath::fromString(mainScript())).toString();
if (!main.isEmpty())
ProcessArgs::addArg(&args, main, osType);