236void QGraphicsLinearLayout::insertItem(
int index, QGraphicsLayoutItem *item)
238 Q_D(QGraphicsLinearLayout);
240 qWarning(
"QGraphicsLinearLayout::insertItem: cannot insert null item");
244 qWarning(
"QGraphicsLinearLayout::insertItem: cannot insert itself");
247 d->addChildLayoutItem(item);
251 d->engine.insertRow(index, d->orientation);
252 QGraphicsGridLayoutEngineItem *gridEngineItem =
new QGraphicsGridLayoutEngineItem(item, d->gridRow(index), d->gridColumn(index), 1, 1, { });
253 d->engine.insertItem(gridEngineItem, index);
263void QGraphicsLinearLayout::insertStretch(
int index,
int stretch)
265 Q_D(QGraphicsLinearLayout);
267 d->engine.insertRow(index, d->orientation);
268 d->engine.setRowStretchFactor(index, stretch, d->orientation);
278void QGraphicsLinearLayout::removeItem(QGraphicsLayoutItem *item)
280 Q_D(QGraphicsLinearLayout);
281 if (QGraphicsGridLayoutEngineItem *gridItem = d->engine.findLayoutItem(item)) {
282 item->setParentLayoutItem(
nullptr);
283 d->removeGridItem(gridItem);
295void QGraphicsLinearLayout::removeAt(
int index)
297 Q_D(QGraphicsLinearLayout);
298 if (index < 0 || index >= d->engine.itemCount()) {
299 qWarning(
"QGraphicsLinearLayout::removeAt: invalid index %d", index);
303 if (QGraphicsGridLayoutEngineItem *gridItem =
static_cast<QGraphicsGridLayoutEngineItem*>(d->engine.itemAt(index))) {
304 if (QGraphicsLayoutItem *layoutItem = gridItem->layoutItem())
305 layoutItem->setParentLayoutItem(
nullptr);
306 d->removeGridItem(gridItem);
368void QGraphicsLinearLayout::setStretchFactor(QGraphicsLayoutItem *item,
int stretch)
370 Q_D(QGraphicsLinearLayout);
372 qWarning(
"QGraphicsLinearLayout::setStretchFactor: cannot assign"
373 " a stretch factor to a null item");
376 if (stretchFactor(item) == stretch)
378 d->engine.setStretchFactor(item, stretch, d->orientation);
405void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)
407 Q_D(QGraphicsLinearLayout);
408 if (
this->alignment(item) == alignment)
410 d->engine.setAlignment(item, alignment);
450QGraphicsLayoutItem *QGraphicsLinearLayout::itemAt(
int index)
const
452 Q_D(
const QGraphicsLinearLayout);
453 if (index < 0 || index >= d->engine.itemCount()) {
454 qWarning(
"QGraphicsLinearLayout::itemAt: invalid index %d", index);
457 QGraphicsLayoutItem *item =
nullptr;
458 if (QGraphicsGridLayoutEngineItem *gridItem =
static_cast<QGraphicsGridLayoutEngineItem *>(d->engine.itemAt(index)))
459 item = gridItem->layoutItem();
466void QGraphicsLinearLayout::setGeometry(
const QRectF &rect)
468 Q_D(QGraphicsLinearLayout);
469 QGraphicsLayout::setGeometry(rect);
470 QRectF effectiveRect = geometry();
471 qreal left, top, right, bottom;
472 getContentsMargins(&left, &top, &right, &bottom);
473 Qt::LayoutDirection visualDir = d->visualDirection();
474 d->engine.setVisualDirection(visualDir);
475 if (visualDir == Qt::RightToLeft)
477 effectiveRect.adjust(+left, +top, -right, -bottom);
478#ifdef QGRIDLAYOUTENGINE_DEBUG
479 if (qt_graphicsLayoutDebug()) {
480 static int counter = 0;
481 qDebug() << counter++ <<
"QGraphicsLinearLayout::setGeometry - " << rect;
485 d->engine.setGeometries(effectiveRect, d->styleInfo());
486#ifdef QGRIDLAYOUTENGINE_DEBUG
487 if (qt_graphicsLayoutDebug()) {
497QSizeF QGraphicsLinearLayout::sizeHint(Qt::SizeHint which,
const QSizeF &constraint)
const
499 Q_D(
const QGraphicsLinearLayout);
500 qreal left, top, right, bottom;
501 getContentsMargins(&left, &top, &right, &bottom);
502 const QSizeF extraMargins(left + right, top + bottom);
503 return d->engine.sizeHint(which , constraint - extraMargins, d->styleInfo()) + extraMargins;