393 if (m_sections.isEmpty()) {
399 const bool isVertical = m_orientation == Qt::Vertical;
400 const bool isLeftToRight = parentWidget()->isLeftToRight();
404 const int maxWidth = isVertical ?
rect.width() :
rect.height();
406 const int iconWidth = qMax(1, isVertical ?
iconSize.width() :
iconSize.height());
407 const int iconHeight = qMax(1, isVertical ?
iconSize.height() :
iconSize.width());
409 const Section::Separators separator = m_compact ?
416 const int maxColumns = qMax(1, (maxWidth / iconWidth));
420 bool firstSection =
true;
421 foreach (QWidgetItem *wi, m_sections) {
424 if (buttonCount == 0) {
427 section->setGeometry(1000, 1000, 0, 0);
433 const int onset = m_compact ? offset : 0;
434 const int usedColumns = onset + buttonCount;
435 offset = usedColumns % maxColumns;
438 const int neededRowCount = ((usedColumns - 1) / maxColumns) + 1;
441 firstSection =
false;
445 y += (onset == 0) ? iconHeight : 0;
448 y += iconHeight + spacing();
457 const int onW = onset * iconWidth;
458 const int offW = offset * iconWidth;
459 const int width = maxColumns * iconWidth;
460 const int height = neededRowCount * iconHeight;
465 mask = QRegion(0, 0, width, height);
467 geometry = QRect(0, y, width, height);
471 mask -= QRegion(0, 0, onW, iconHeight);
473 mask -= QRegion(offW, height - iconHeight, width - offW, iconHeight);
476 geometry = QRect(
rect.width() - width, y, width, height);
477 mask -= QRegion(width - onW, 0, onW, iconHeight);
479 mask -= QRegion(0, height - iconHeight, width - offW, iconHeight);
483 mask = QRegion(0, 0, height, width);
485 geometry = QRect(y, 0, height, width);
486 mask -= QRegion(0, 0, iconHeight, onW);
488 mask -= QRegion(height - iconHeight, offW, iconHeight, width - offW);
491 geometry = QRect(
rect.width() - y - height, 0, height, width);
492 mask -= QRegion(height - iconHeight, 0, iconHeight, onW);
494 mask -= QRegion(0, offW, iconHeight, width - offW);
498 section->setGeometry(geometry);
499 section->setMask(mask);
503 y += (neededRowCount - 1) * iconHeight;
507 return y + iconHeight;