diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index a45469882e8..6f10220aaf1 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -819,6 +819,13 @@ Tab::Tab(const QString &tabName, const LayoutItem &item) }; } +// Special If + +If::If(bool condition, const LayoutItems &items, const LayoutItems &other) +{ + subItems.append(condition ? items : other); +} + // Special Application Application::Application(std::initializer_list items) diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 63eeee34d50..c9fac7d8383 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -141,6 +141,12 @@ public: Tab(const QString &tabName, const LayoutItem &item); }; +class QTCREATOR_UTILS_EXPORT If : public LayoutItem +{ +public: + If(bool condition, const LayoutItems &item, const LayoutItems &other = {}); +}; + class QTCREATOR_UTILS_EXPORT Group : public LayoutItem { public: diff --git a/tests/manual/layoutbuilder/demo/main.cpp b/tests/manual/layoutbuilder/demo/main.cpp index 2dd95dfddbf..586a572a9b4 100644 --- a/tests/manual/layoutbuilder/demo/main.cpp +++ b/tests/manual/layoutbuilder/demo/main.cpp @@ -17,9 +17,17 @@ int main(int argc, char *argv[]) title("Hello World"), Column { - TextEdit { - id(textId), - text("Hallo") + If { false, { + TextEdit { + id(textId), + text("Hallo") + }, + }, { + TextEdit { + id(textId), + text("Och noe") + }, + } }, Row {