Files
qTier/fullsizelayout.cpp

92 lines
1.8 KiB
C++

#include "fullsizelayout.hpp"
#include "qdebug.h"
#include "qwidget.h"
#include <algorithm>
FullSizeLayout::FullSizeLayout() {}
FullSizeLayout::~FullSizeLayout()
{
for (auto& child : itemList)
{
delete child;
child = nullptr;
}
itemList.clear();
}
void FullSizeLayout::addItem(QLayoutItem* item)
{
itemList.append(item);
}
int FullSizeLayout::horizontalSpacing() const
{
return 0;
}
int FullSizeLayout::verticalSpacing() const
{
return 0;
}
Qt::Orientations FullSizeLayout::expandingDirections() const
{
return Qt::Vertical | Qt::Horizontal;
}
bool FullSizeLayout::hasHeightForWidth() const
{
for (auto child : itemList)
{
if (child->hasHeightForWidth())
return true;
}
return false;
}
int FullSizeLayout::heightForWidth(int width) const
{
int h = -1;
for (auto child : itemList)
{
h = std::max(h, child->heightForWidth(width));
}
return h;
}
int FullSizeLayout::count() const
{
return static_cast<int>(itemList.count());
}
QLayoutItem* FullSizeLayout::itemAt(int index) const
{
return itemList.value(index);
}
QSize FullSizeLayout::minimumSize() const
{
QSize size;
for (auto child : itemList)
{
// auto wid = child->widget();
if (std::max(child->minimumSize().height(), child->minimumSize().width()) >= 200)
child->minimumSize();
// if (wid)
size = size.expandedTo(child->minimumSize());
}
return size;
}
void FullSizeLayout::setGeometry(const QRect &rect)
{
for (auto child : itemList)
{
child->setGeometry(rect);
}
}
QSize FullSizeLayout::sizeHint() const
{
QSize size(1,1);
for (auto child : itemList)
{
size = size.expandedTo(child->sizeHint());
}
return size;
}
QLayoutItem* FullSizeLayout::takeAt(int index)
{
return itemList.takeAt(index);
}