From 3d80322afe0aaaf0bdcba82ac0c7f503769c135e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 31 Mar 2019 10:33:23 +0200 Subject: [PATCH] autoDelete parameter for QskLayout::clear added --- src/layouts/QskLayout.cpp | 14 +++++++++++++- src/layouts/QskLayout.h | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/layouts/QskLayout.cpp b/src/layouts/QskLayout.cpp index 900a82da..6d13fb4b 100644 --- a/src/layouts/QskLayout.cpp +++ b/src/layouts/QskLayout.cpp @@ -167,14 +167,26 @@ void QskLayout::removeItem( QQuickItem* item ) removeAt( indexOf( item ) ); } -void QskLayout::clear() +void QskLayout::clear( bool autoDelete ) { const bool isActive = m_data->isActive; setActive( false ); for ( int i = itemCount() - 1; i >= 0; i-- ) + { + auto item = itemAtIndex( i ); + removeAt( i ); + if( item ) + { + if( autoDelete && ( item->parent() == this ) ) + delete item; + else + item->setParentItem( nullptr ); + } + } + setActive( isActive ); } diff --git a/src/layouts/QskLayout.h b/src/layouts/QskLayout.h index 7f2b60c3..e026eec0 100644 --- a/src/layouts/QskLayout.h +++ b/src/layouts/QskLayout.h @@ -31,7 +31,8 @@ class QSK_EXPORT QskLayout : public QskControl void removeItem( const QQuickItem* ); Q_INVOKABLE void removeItem( QQuickItem* ); Q_INVOKABLE void removeAt( int index ); - Q_INVOKABLE void clear(); + + Q_INVOKABLE void clear( bool autoDelete = false ); Q_INVOKABLE void setActive( bool ); Q_INVOKABLE bool isActive() const;