LayoutBuilder: Use explicitly empty cells for nullptr widgets

And layouts, and empty label texts.

Task-number: QTCREATORBUG-31024
Change-Id: I8435327ddd75d0a218d2a50efe900a7d5ec6490f
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
hjk
2024-06-07 10:44:08 +02:00
parent 88ee3aa908
commit 2b4212bfd6
2 changed files with 22 additions and 21 deletions

View File

@@ -232,10 +232,21 @@ LayoutItem::LayoutItem() = default;
LayoutItem::~LayoutItem() = default;
LayoutItem::LayoutItem(QLayout *l)
: layout(l), empty(!l)
{}
LayoutItem::LayoutItem(QWidget *w)
: widget(w), empty(!w)
{}
LayoutItem::LayoutItem(const QString &t)
: text(t), empty(t.isEmpty())
{}
LayoutItem::LayoutItem(const LayoutModifier &inner)
{
ownerModifier = inner;
}
: empty(!inner), ownerModifier(inner)
{}
/*!
\fn template <class T> LayoutItem(const T &t)
@@ -428,31 +439,23 @@ void addToWidget(Widget *widget, const Layout &layout)
void addToLayout(Layout *layout, const Widget &inner)
{
LayoutItem item;
item.widget = access(&inner);
layout->addLayoutItem(item);
layout->addLayoutItem(access(&inner));
}
void addToLayout(Layout *layout, QWidget *inner)
{
LayoutItem item;
item.widget = inner;
layout->addLayoutItem(item);
layout->addLayoutItem(inner);
}
void addToLayout(Layout *layout, QLayout *inner)
{
LayoutItem item;
item.layout = inner;
layout->addLayoutItem(item);
layout->addLayoutItem(inner);
}
void addToLayout(Layout *layout, const Layout &inner)
{
inner.flush_();
LayoutItem item;
item.layout = access(&inner);
layout->addLayoutItem(item);
layout->addLayoutItem(access(&inner));
}
void addToLayout(Layout *layout, const LayoutModifier &inner)
@@ -462,9 +465,7 @@ void addToLayout(Layout *layout, const LayoutModifier &inner)
void addToLayout(Layout *layout, const QString &inner)
{
LayoutItem item;
item.text = inner;
layout->addLayoutItem(item);
layout->addLayoutItem(inner);
}
void empty(Layout *layout)

View File

@@ -149,9 +149,9 @@ class QTCREATOR_UTILS_EXPORT LayoutItem
public:
~LayoutItem();
LayoutItem();
LayoutItem(QLayout *l) : layout(l) {}
LayoutItem(QWidget *w) : widget(w) {}
LayoutItem(const QString &t) : text(t) {}
LayoutItem(QLayout *l);
LayoutItem(QWidget *w);
LayoutItem(const QString &t);
LayoutItem(const LayoutModifier &inner);
QString text;