52 if ( index < mLeftItems.size() )
53 return mLeftItems.at( index );
54 index -= mLeftItems.size();
56 if ( index < mRightItems.size() )
57 return mRightItems.at( index );
58 index -= mRightItems.size();
60 if ( index < mTopItems.size() )
61 return mTopItems.at( index );
62 index -= mTopItems.size();
64 if ( index < mBottomItems.size() )
65 return mBottomItems.at( index );
75 if ( index < mLeftItems.size() )
76 return mLeftItems.takeAt( index );
77 index -= mLeftItems.size();
79 if ( index < mRightItems.size() )
80 return mRightItems.takeAt( index );
81 index -= mRightItems.size();
83 if ( index < mTopItems.size() )
84 return mTopItems.takeAt( index );
85 index -= mTopItems.size();
87 if ( index < mBottomItems.size() )
88 return mBottomItems.takeAt( index );
113 QLayout::setGeometry( rect );
118 int bottomMargin = 0;
119 getContentsMargins( &leftMargin, &topMargin, &rightMargin, &bottomMargin );
122 const int innerLeft = rect.left() + leftMargin;
123 const int innerRight = rect.right() - rightMargin;
124 const int innerTop = rect.top() + topMargin;
125 const int innerBottom = rect.bottom() - bottomMargin;
126 const int innerHeight = innerBottom - innerTop;
128 int left = innerLeft;
129 for ( QLayoutItem *item : std::as_const( mLeftItems ) )
131 const QSize
sizeHint = item->sizeHint();
132 item->setGeometry( QRect( left, innerTop,
sizeHint.width(), innerHeight ) );
133 left +=
sizeHint.width() + mHorizontalSpacing;
136 int right = innerRight;
137 for ( QLayoutItem *item : std::as_const( mRightItems ) )
139 const QSize
sizeHint = item->sizeHint();
140 item->setGeometry( QRect( right -
sizeHint.width(), innerTop,
sizeHint.width(), innerHeight ) );
141 right -=
sizeHint.width() + mHorizontalSpacing;
145 for ( QLayoutItem *item : std::as_const( mTopItems ) )
147 const QSize
sizeHint = item->sizeHint();
148 item->setGeometry( QRect( left, top, right - left,
sizeHint.height() ) );
149 top +=
sizeHint.height() + mVerticalSpacing;
152 int bottom = innerBottom;
153 for ( QLayoutItem *item : std::as_const( mBottomItems ) )
155 const QSize
sizeHint = item->sizeHint();
156 item->setGeometry( QRect( left, bottom -
sizeHint.height(), right - left,
sizeHint.height() ) );
157 bottom -=
sizeHint.height() + mVerticalSpacing;
163 QWidgetItem *widgetItem =
new QWidgetItem( widget );
167 mLeftItems.append( widgetItem );
170 mRightItems.append( widgetItem );
173 mTopItems.append( widgetItem );
176 mBottomItems.append( widgetItem );
180 addChildWidget( widget );