/*!
\reimp
*/
+QSizePolicy::ControlTypes QLayout::controlTypes() const
+{
+ if (count() == 0)
+ return QSizePolicy::DefaultType;
+ QSizePolicy::ControlTypes types;
+ for (int i = count() - 1; i >= 0; --i)
+ types |= itemAt(i)->controlTypes();
+ return types;
+}
+
+/*!
+ \reimp
+*/
void QLayout::setGeometry(const QRect &r)
{
Q_D(QLayout);
virtual int indexOf(QWidget *) const;
virtual int count() const = 0;
bool isEmpty() const;
+ QSizePolicy::ControlTypes controlTypes() const;
int totalHeightForWidth(int w) const;
QSize totalMinimumSize() const;
*/
QSizePolicy::ControlTypes QLayoutItem::controlTypes() const
{
- // ### Qt 5: This function should probably be virtual instead
- if (const QWidget *widget = const_cast<QLayoutItem*>(this)->widget()) {
- return widget->sizePolicy().controlType();
- } else if (const QLayout *layout = const_cast<QLayoutItem*>(this)->layout()) {
- if (layout->count() == 0)
- return QSizePolicy::DefaultType;
- QSizePolicy::ControlTypes types;
- for (int i = layout->count() - 1; i >= 0; --i)
- types |= layout->itemAt(i)->controlTypes();
- return types;
- }
return QSizePolicy::DefaultType;
}
return wid->isHidden() || wid->isWindow();
}
+QSizePolicy::ControlTypes QWidgetItem::controlTypes() const
+{
+ return wid->sizePolicy().controlType();
+}
+
/*!
\class QWidgetItemV2
\internal
Qt::Alignment alignment() const { return align; }
void setAlignment(Qt::Alignment a);
- QSizePolicy::ControlTypes controlTypes() const;
+ virtual QSizePolicy::ControlTypes controlTypes() const;
protected:
Qt::Alignment align;
bool hasHeightForWidth() const;
int heightForWidth(int) const;
-
+ QSizePolicy::ControlTypes controlTypes() const;
protected:
QWidget *wid;
};
#include <QtWidgets/QFrame>
#include <QtWidgets/QWindowsStyle>
#include <QtWidgets/QSizePolicy>
+#include <QtWidgets/QComboBox>
#include <QPushButton>
#include <QRadioButton>
#include <private/qlayoutengine_p.h>
void layoutItemRect();
void warnIfWrongParent();
void controlTypes();
+ void controlTypes2();
void adjustSizeShouldMakeSureLayoutIsActivated();
};
QCOMPARE(layout.controlTypes(), QSizePolicy::DefaultType);
QSizePolicy p;
QCOMPARE(p.controlType(),QSizePolicy::DefaultType);
+}
+void tst_QLayout::controlTypes2()
+{
+ QWidget main;
+ QVBoxLayout *const layout = new QVBoxLayout(&main);
+ layout->setMargin(0);
+ QComboBox *combo = new QComboBox(&main);
+ layout->addWidget(combo);
+ QCOMPARE(layout->controlTypes(), QSizePolicy::ComboBox);
}
void tst_QLayout::adjustSizeShouldMakeSureLayoutIsActivated()