mirror-chatterino2/src/util/LayoutHelper.hpp

43 lines
775 B
C++
Raw Normal View History

2018-08-08 15:35:54 +02:00
#pragma once
#include <QLayout>
#include <QWidget>
#include <boost/variant.hpp>
namespace chatterino {
using LayoutItem = boost::variant<QWidget *, QLayout *>;
template <typename T>
T *makeLayout(std::initializer_list<LayoutItem> items)
{
auto t = new T;
2018-10-21 13:43:02 +02:00
for (auto &item : items)
{
switch (item.which())
{
2018-08-08 15:35:54 +02:00
case 0:
t->addItem(new QWidgetItem(boost::get<QWidget *>(item)));
break;
case 1:
t->addItem(boost::get<QLayout *>(item));
break;
}
}
return t;
}
template <typename T, typename With>
T *makeWidget(With with)
{
auto t = new T;
with(t);
return t;
}
} // namespace chatterino