QLayoutItem: make QLayoutItem::widget() const in Qt6

QLayoutItem::widget() should be const since it does not modify the
class. Since this can not be done within Qt5 in a binary compatible way,
change it for Qt6.

Fixes: QTBUG-41997
Change-Id: I9211eb1c36a5bc4f06ab417a9df790ebedb7fcda
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
This commit is contained in:
Christian Ehrlicher 2019-09-21 15:25:11 +02:00
parent 2260d680c9
commit ce7447d88c
4 changed files with 31 additions and 6 deletions

View File

@ -376,7 +376,11 @@ Q_WIDGETS_EXPORT QSize qSmartMinSize(const QSize &sizeHint, const QSize &minSize
Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidgetItem *i)
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *w = const_cast<QWidgetItem *>(i)->widget();
#else
QWidget *w = i->widget();
#endif
return qSmartMinSize(w->sizeHint(), w->minimumSizeHint(),
w->minimumSize(), w->maximumSize(),
w->sizePolicy());
@ -414,8 +418,11 @@ Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QSize &sizeHint,
Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidgetItem *i, Qt::Alignment align)
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *w = const_cast<QWidgetItem *>(i)->widget();
#else
QWidget *w = i->widget();
#endif
return qSmartMaxSize(w->sizeHint().expandedTo(w->minimumSizeHint()), w->minimumSize(), w->maximumSize(),
w->sizePolicy(), align);
}

View File

@ -291,14 +291,12 @@ void QSpacerItem::changeSize(int w, int h, QSizePolicy::Policy hPolicy,
/*!
Destructor.
*/
QWidgetItem::~QWidgetItem() {}
QWidgetItem::~QWidgetItem() = default;
/*!
Destroys the QLayoutItem.
*/
QLayoutItem::~QLayoutItem()
{
}
QLayoutItem::~QLayoutItem() = default;
/*!
Invalidates any cached information in this layout item.
@ -362,7 +360,11 @@ QSpacerItem * QSpacerItem::spacerItem()
\sa layout(), spacerItem()
*/
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *QLayoutItem::widget()
#else
QWidget *QLayoutItem::widget() const
#endif
{
return nullptr;
}
@ -370,7 +372,11 @@ QWidget *QLayoutItem::widget()
/*!
Returns the widget managed by this item.
*/
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *QWidgetItem::widget()
#else
QWidget *QWidgetItem::widget() const
#endif
{
return wid;
}

View File

@ -74,7 +74,11 @@ public:
virtual int minimumHeightForWidth(int) const;
virtual void invalidate();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
virtual QWidget *widget();
#else
virtual QWidget *widget() const;
#endif
virtual QLayout *layout();
virtual QSpacerItem *spacerItem();
@ -133,7 +137,11 @@ public:
bool isEmpty() const override;
void setGeometry(const QRect&) override;
QRect geometry() const override;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *widget() override;
#else
QWidget *widget() const override;
#endif
bool hasHeightForWidth() const override;
int heightForWidth(int) const override;

View File

@ -201,7 +201,11 @@ inline QLayoutItem *QDockWidgetItem::dockWidgetChildItem() const
inline QDockWidgetLayout *QDockWidgetItem::dockWidgetLayout() const
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *w = const_cast<QDockWidgetItem*>(this)->widget();
#else
QWidget *w = widget();
#endif
if (w != nullptr)
return qobject_cast<QDockWidgetLayout*>(w->layout());
return nullptr;