diff --git a/tests/manual/layoutbuilder/v2/lb.cpp b/tests/manual/layoutbuilder/v2/lb.cpp index de8f674177d..a500c7f1063 100644 --- a/tests/manual/layoutbuilder/v2/lb.cpp +++ b/tests/manual/layoutbuilder/v2/lb.cpp @@ -696,7 +696,7 @@ Widget::Widget(std::initializer_list ps) apply(this, ps); } -void Widget::resize(int w, int h) +void Widget::setSize(int w, int h) { access(this)->resize(w, h); } diff --git a/tests/manual/layoutbuilder/v2/lb.h b/tests/manual/layoutbuilder/v2/lb.h index cdccc858701..2d92f168a1c 100644 --- a/tests/manual/layoutbuilder/v2/lb.h +++ b/tests/manual/layoutbuilder/v2/lb.h @@ -39,7 +39,7 @@ class QVBoxLayout; class QWidget; QT_END_NAMESPACE -namespace Layouting { +namespace Building { class NestId {}; @@ -58,13 +58,6 @@ void doit(auto x, auto id, auto p); template class BuilderItem { public: - // Nested child object - template - BuilderItem(Inner && p) - { - apply = [&p](X *x) { doit(x, NestId{}, std::forward(p)); }; - } - // Property setter template BuilderItem(IdAndArg && idarg) @@ -72,9 +65,31 @@ public: apply = [&idarg](X *x) { doit(x, Id{}, idarg.arg); }; } + // Nested child object + template + BuilderItem(Inner && p) + { + apply = [&p](X *x) { doit(x, NestId{}, std::forward(p)); }; + } + std::function apply; }; +#define QTC_DEFINE_BUILDER_SETTER(name, setter) \ +class name##_TAG {}; \ +template \ +inline auto name(Args &&...args) { \ + return Building::IdAndArg{name##_TAG{}, std::tuple{std::forward(args)...}}; \ +} \ +template \ +inline void doit(L *x, name##_TAG, const std::tuple &arg) { \ + std::apply(&L::setter, std::tuple_cat(std::make_tuple(x), arg)); \ +} + +} // Building + + +namespace Layouting { ////////////////////////////////////////////// @@ -92,7 +107,7 @@ class QTCREATOR_UTILS_EXPORT Object : public Thing { public: using Implementation = QObject; - using I = BuilderItem; + using I = Building::BuilderItem; Object() = default; Object(std::initializer_list ps); @@ -111,7 +126,7 @@ class QTCREATOR_UTILS_EXPORT Layout : public Object { public: using Implementation = QLayout; - using I = BuilderItem; + using I = Building::BuilderItem; Layout() = default; Layout(Implementation *w) { ptr = w; } @@ -174,7 +189,7 @@ class QTCREATOR_UTILS_EXPORT Column : public Layout { public: using Implementation = QVBoxLayout; - using I = BuilderItem; + using I = Building::BuilderItem; Column(std::initializer_list ps); }; @@ -183,7 +198,7 @@ class QTCREATOR_UTILS_EXPORT Row : public Layout { public: using Implementation = QHBoxLayout; - using I = BuilderItem; + using I = Building::BuilderItem; Row(std::initializer_list ps); }; @@ -192,7 +207,7 @@ class QTCREATOR_UTILS_EXPORT Form : public Layout { public: using Implementation = QFormLayout; - using I = BuilderItem
; + using I = Building::BuilderItem; Form(); Form(std::initializer_list ps); @@ -202,7 +217,7 @@ class QTCREATOR_UTILS_EXPORT Grid : public Layout { public: using Implementation = QGridLayout; - using I = BuilderItem; + using I = Building::BuilderItem; Grid(); Grid(std::initializer_list ps); @@ -248,7 +263,7 @@ class QTCREATOR_UTILS_EXPORT Widget : public Object { public: using Implementation = QWidget; - using I = BuilderItem; + using I = Building::BuilderItem; Widget() = default; Widget(std::initializer_list ps); @@ -257,7 +272,7 @@ public: QWidget *emerge() const; void show(); - void resize(int, int); + void setSize(int, int); void setLayout(const Layout &layout); void setWindowTitle(const QString &); void setToolTip(const QString &); @@ -270,7 +285,7 @@ class QTCREATOR_UTILS_EXPORT Label : public Widget { public: using Implementation = QLabel; - using I = BuilderItem