Utils: Consolidate LayoutBuilder interface a bit

- the var args template for addItems was overkill creating a lot of
  instantiations. Use a temporary list instead.
- allow default constructed LayoutItems to be used for an empty cell,
  avoiding the use of a QLabel with empty text
- add an addRow({...}) overload as convenience shortcut for
  .startNewRow().addItems({...}
- rename startNewRow() to finishRow()

Change-Id: I6d49dacbac3d7acf140ca526884ba1ceeeca2e0d
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2020-09-18 04:54:41 +02:00
parent 7bba76d0ff
commit 2cabd2ceb5
20 changed files with 51 additions and 46 deletions

View File

@@ -64,7 +64,7 @@ LayoutBuilder::~LayoutBuilder()
flushPendingFormItems();
}
LayoutBuilder &LayoutBuilder::startNewRow()
LayoutBuilder &LayoutBuilder::finishRow()
{
if (m_formLayout)
flushPendingFormItems();
@@ -79,9 +79,12 @@ LayoutBuilder &LayoutBuilder::startNewRow()
LayoutBuilder &LayoutBuilder::addRow(const LayoutItem &item)
{
startNewRow();
addItem(item);
return *this;
return finishRow().addItem(item);
}
LayoutBuilder &LayoutBuilder::addRow(const QList<LayoutBuilder::LayoutItem> &items)
{
return finishRow().addItems(items);
}
void LayoutBuilder::flushPendingFormItems()
@@ -139,7 +142,7 @@ QLayout *LayoutBuilder::layout() const
return m_gridLayout;
}
LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
LayoutBuilder &LayoutBuilder::addItem(const LayoutItem &item)
{
if (item.widget && !item.widget->parent())
item.widget->setParent(layout()->parentWidget());
@@ -158,4 +161,11 @@ LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
return *this;
}
LayoutBuilder &LayoutBuilder::addItems(const QList<LayoutBuilder::LayoutItem> &items)
{
for (const LayoutItem &item : items)
addItem(item);
return *this;
}
} // Utils