autoDelete parameter for QskLayout::clear added

This commit is contained in:
Uwe Rathmann 2019-03-31 10:33:23 +02:00
parent d09d08c338
commit 3d80322afe
2 changed files with 15 additions and 2 deletions

View File

@ -167,14 +167,26 @@ void QskLayout::removeItem( QQuickItem* item )
removeAt( indexOf( item ) ); removeAt( indexOf( item ) );
} }
void QskLayout::clear() void QskLayout::clear( bool autoDelete )
{ {
const bool isActive = m_data->isActive; const bool isActive = m_data->isActive;
setActive( false ); setActive( false );
for ( int i = itemCount() - 1; i >= 0; i-- ) for ( int i = itemCount() - 1; i >= 0; i-- )
{
auto item = itemAtIndex( i );
removeAt( i ); removeAt( i );
if( item )
{
if( autoDelete && ( item->parent() == this ) )
delete item;
else
item->setParentItem( nullptr );
}
}
setActive( isActive ); setActive( isActive );
} }

View File

@ -31,7 +31,8 @@ class QSK_EXPORT QskLayout : public QskControl
void removeItem( const QQuickItem* ); void removeItem( const QQuickItem* );
Q_INVOKABLE void removeItem( QQuickItem* ); Q_INVOKABLE void removeItem( QQuickItem* );
Q_INVOKABLE void removeAt( int index ); Q_INVOKABLE void removeAt( int index );
Q_INVOKABLE void clear();
Q_INVOKABLE void clear( bool autoDelete = false );
Q_INVOKABLE void setActive( bool ); Q_INVOKABLE void setActive( bool );
Q_INVOKABLE bool isActive() const; Q_INVOKABLE bool isActive() const;