int GraphicsFlowLayout::doLayout(const QRectF &rect) { double x = rect.x(); double y = rect.y(); double lineHeight = 0; for(int i=0; i < count(); i++) { QGraphicsLayoutItem* item = itemAt(i); int nextX = x + item->preferredSize().width() + spacing(); QSizePolicy policy = item->sizePolicy(); if (item->sizePolicy().horizontalPolicy() == QSizePolicy::Expanding) { int myY = y + lineHeight + spacing() + SpaceBefore; QRectF r(QPoint(rect.x(), myY), item->preferredSize()); item->setGeometry(r); x = rect.x(); y = myY + item->preferredSize().height() + spacing() + SpaceAfter; continue; } if (nextX - spacing() > rect.right() && lineHeight > 0) { x = rect.x(); y = y + lineHeight + spacing(); nextX = x + item->preferredSize().width() + spacing(); lineHeight = 0; } item->setGeometry(QRectF(QPoint(x, y), item->preferredSize())); x = nextX; // item->preferredSize().height() returns qreal, armel compiler complains lineHeight = qMax(lineHeight, (double) item->preferredSize().height()); } m_lastWidth = rect.width(); return y + lineHeight - rect.y(); }
static PyObject *meth_QGraphicsLayoutItem_sizePolicy(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; { QGraphicsLayoutItem *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_QGraphicsLayoutItem, &sipCpp)) { QSizePolicy *sipRes; Py_BEGIN_ALLOW_THREADS sipRes = new QSizePolicy(sipCpp->sizePolicy()); Py_END_ALLOW_THREADS return sipConvertFromNewType(sipRes,sipType_QSizePolicy,NULL); } }