QSize FlowLayout::minimumSize() const{ QSize size; QLayoutItem *item; foreach (item, itemList) size = size.expandedTo(item->minimumSize()); size += QSize(2*margin(), 2*margin()); return size;}
void QBoxLayoutPrivate::setupGeom()//... minSize = QSize(minw, minh); maxSize = QSize(maxw, maxh).expandedTo(minSize); sizeHint = QSize(hintw, hinth).expandedTo(minSize).boundedTo(maxSize); q->getContentsMargins(&leftMargin, &topMargin, &rightMargin, &bottomMargin); int left, top, right, bottom; effectiveMargins(&left, &top, &right, &bottom); QSize extra(left + right, top + bottom); minSize += extra; maxSize += extra; sizeHint += extra;//...QSize QBoxLayout::sizeHint() const{ Q_D(const QBoxLayout); if (d->dirty) const_cast<QBoxLayout*>(this)->d_func()->setupGeom(); return d->sizeHint;}
foreach (item, itemList) { size = size.expandedTo(item->minimumSize()); size = size.expandedTo(item->minimumSizeHint()); }
Window::Window(){ FlowLayout *flowLayout = new FlowLayout; flowLayout->addWidget(new QPushButton(tr("Short"))); flowLayout->addWidget(new QPushButton(tr("Longer"))); flowLayout->addWidget(new QPushButton(tr("Different text"))); flowLayout->addWidget(new QPushButton(tr("More text"))); flowLayout->addWidget(new QPushButton(tr("Even longer button text"))); setLayout(flowLayout); setWindowTitle(tr("Flow Layout"));}
Window::Window(){QWidget* widget = new QWidget(); FlowLayout *flowLayout = new FlowLayout; flowLayout->addWidget(new QPushButton(tr("Short"))); flowLayout->addWidget(new QPushButton(tr("Longer"))); flowLayout->addWidget(new QPushButton(tr("Different text"))); flowLayout->addWidget(new QPushButton(tr("More text"))); flowLayout->addWidget(new QPushButton(tr("Even longer button text"))); widget->setLayout(flowLayout);QGridLayout* layout = new QGridLayout; layout->addWidget(widget, 0, 0); layout->addWidget(new QPushButton(tr("Even longer button text")), 1, 1); setLayout(layout); setWindowTitle(tr("Flow Layout"));}
Window::Window(){// QWidget* widget = new QWidget(); FlowLayout *flowLayout = new FlowLayout; flowLayout->addWidget(new QPushButton(tr("Short"))); flowLayout->addWidget(new QPushButton(tr("Longer"))); flowLayout->addWidget(new QPushButton(tr("Different text"))); flowLayout->addWidget(new QPushButton(tr("More text"))); flowLayout->addWidget(new QPushButton(tr("Even longer button text")));// widget->setLayout(flowLayout); QGridLayout* layout = new QGridLayout;// layout->addWidget(widget, 0, 0); layout->addLayout(flowLayout, 0, 0); layout->addWidget(new QPushButton(tr("Even longer button text")), 1, 1); setLayout(layout); setWindowTitle(tr("Flow Layout"));}
class Window : public QMainWindow{//...snip//...unchangedQWidget* cw = new QWidget();cw->setLayout(layout);setCentralWidget(cw); setWindowTitle(tr("Flow Layout"));}
{ QWidget* widget = new QWidget(); FlowLayout *flowLayout = new FlowLayout; flowLayout->addWidget(new QPushButton(tr("Short"))); flowLayout->addWidget(new QPushButton(tr("Longer"))); flowLayout->addWidget(new QPushButton(tr("Different text"))); flowLayout->addWidget(new QPushButton(tr("More text"))); flowLayout->addWidget(new QPushButton(tr("Even longer button text"))); widget->setLayout(flowLayout);setCentralWidget(widget); setWindowTitle(tr("Flow Layout"));}