diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.cpp b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.cpp index 356e2444f6a..990f98dee40 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.cpp +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.cpp @@ -1,24 +1,30 @@ %{Cpp:LicenseTemplate}\ #include "%{JS: Util.relativeFilePath('%{Path}/%{HdrFileName}', '%{Path}' + '/' + Util.path('%{SrcFileName}'))}" -@if %{GenerateForm} +@if %{GenerateForm} && %{JS: QtSupport.uiAsPointer() } #include "%{UiHdrFileName}" @endif %{JS: Cpp.openNamespaces('%{Class}')}\ %{CN}::%{CN}(QWidget *parent) : %{BaseClass}(parent) -@if %{GenerateForm} +@if %{GenerateForm} && %{JS: QtSupport.uiAsPointer() } , ui(new Ui::%{CN}) @endif { @if %{GenerateForm} +@if %{JS: QtSupport.uiAsPointer() } ui->setupUi(this); +@elsif %{JS: QtSupport.uiAsMember() } + ui.setupUi(this); +@else + setupUi(this); +@endif @endif } %{CN}::~%{CN}() { -@if %{GenerateForm} +@if %{GenerateForm} && %{JS: QtSupport.uiAsPointer() } delete ui; @endif } diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.h b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.h index dca6171267a..f69879b70f6 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.h +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/widget.h @@ -6,9 +6,13 @@ #define %{GUARD} @endif +@if %{GenerateForm} && ! %{JS: QtSupport.uiAsPointer() } +#include "%{UiHdrFileName}" + +@endif %{JS: QtSupport.qtIncludes([ 'QtGui/%{BaseClass}' ], [ 'QtWidgets/%{BaseClass}' ]) }\ %{JS: Cpp.openNamespaces('%{Class}')}\ -@if %{GenerateForm} +@if %{GenerateForm} && %{JS: QtSupport.uiAsPointer() } @if ! %{JS: Cpp.hasNamespaces('%{Class}')} QT_BEGIN_NAMESPACE @@ -19,7 +23,12 @@ QT_END_NAMESPACE @endif @endif -class %{CN} : public %{BaseClass} +class %{CN} : public %{BaseClass}\ +@if %{GenerateForm} && %{JS: QtSupport.uiAsInheritance() } +, private Ui::%{CN} +@else + +@endif { Q_OBJECT @@ -27,9 +36,15 @@ public: %{CN}(QWidget *parent = nullptr); ~%{CN}(); @if %{GenerateForm} +@if %{JS: QtSupport.uiAsPointer() } private: Ui::%{CN} *ui; +@elsif %{JS: QtSupport.uiAsMember() } + +private: + Ui::%{CN} ui; +@endif @endif }; %{JS: Cpp.closeNamespaces('%{Class}')}\ diff --git a/src/plugins/qtsupport/codegenerator.cpp b/src/plugins/qtsupport/codegenerator.cpp index 2c86e357e69..9f9aa3c9349 100644 --- a/src/plugins/qtsupport/codegenerator.cpp +++ b/src/plugins/qtsupport/codegenerator.cpp @@ -197,4 +197,25 @@ QString CodeGenerator::qtIncludes(const QStringList &qt4, const QStringList &qt5 return result; } +bool CodeGenerator::uiAsPointer() +{ + CodeGenSettings settings; + settings.fromSettings(Core::ICore::settings()); + return settings.embedding == CodeGenSettings::PointerAggregatedUiClass; +} + +bool CodeGenerator::uiAsMember() +{ + CodeGenSettings settings; + settings.fromSettings(Core::ICore::settings()); + return settings.embedding == CodeGenSettings::AggregatedUiClass; +} + +bool CodeGenerator::uiAsInheritance() +{ + CodeGenSettings settings; + settings.fromSettings(Core::ICore::settings()); + return settings.embedding == CodeGenSettings::InheritedUiClass; +} + } // namespace QtSupport diff --git a/src/plugins/qtsupport/codegenerator.h b/src/plugins/qtsupport/codegenerator.h index f6c22e55b85..ea44d39f844 100644 --- a/src/plugins/qtsupport/codegenerator.h +++ b/src/plugins/qtsupport/codegenerator.h @@ -50,6 +50,11 @@ public: // Generic Qt: Q_INVOKABLE static QString qtIncludes(const QStringList &qt4, const QStringList &qt5); + + // UI file integration + Q_INVOKABLE static bool uiAsPointer(); + Q_INVOKABLE static bool uiAsMember(); + Q_INVOKABLE static bool uiAsInheritance(); }; } // namespace QtSupport