169 lines
5.6 KiB
C
169 lines
5.6 KiB
C
![]() |
/******************************************************************************
|
||
|
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||
|
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#ifndef QSK_GRID_BOX_H
|
||
|
#define QSK_GRID_BOX_H
|
||
|
|
||
|
#include "QskGlobal.h"
|
||
|
#include "QskLayout.h"
|
||
|
|
||
|
class QSK_EXPORT QskGridBox : public QskLayout
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
Q_PROPERTY( qreal horizontalSpacing READ horizontalSpacing
|
||
|
WRITE setHorizontalSpacing RESET resetHorizontalSpacing
|
||
|
NOTIFY horizontalSpacingChanged )
|
||
|
|
||
|
Q_PROPERTY( qreal verticalSpacing READ verticalSpacing
|
||
|
WRITE setVerticalSpacing RESET resetVerticalSpacing
|
||
|
NOTIFY verticalSpacingChanged )
|
||
|
|
||
|
using Inherited = QskLayout;
|
||
|
|
||
|
public:
|
||
|
explicit QskGridBox( QQuickItem* parent = nullptr );
|
||
|
virtual ~QskGridBox();
|
||
|
|
||
|
Q_INVOKABLE void addItem(
|
||
|
QQuickItem*, int row, int column, int rowSpan, int columnSpan,
|
||
|
Qt::Alignment alignment = Qt::Alignment() );
|
||
|
|
||
|
Q_INVOKABLE void addItem(
|
||
|
QQuickItem*, int row, int column,
|
||
|
Qt::Alignment alignment = Qt::Alignment() );
|
||
|
|
||
|
Q_INVOKABLE int rowCount() const;
|
||
|
Q_INVOKABLE int columnCount() const;
|
||
|
|
||
|
Q_INVOKABLE QQuickItem* itemAt( int row, int column ) const;
|
||
|
Q_INVOKABLE int indexAt( int row, int column ) const;
|
||
|
|
||
|
Q_INVOKABLE int rowOfIndex( int index ) const;
|
||
|
Q_INVOKABLE int rowSpanOfIndex( int index ) const;
|
||
|
|
||
|
Q_INVOKABLE int columnOfIndex( int index ) const;
|
||
|
Q_INVOKABLE int columnSpanOfIndex( int index ) const;
|
||
|
|
||
|
// spacings
|
||
|
void setSpacing( qreal spacing );
|
||
|
|
||
|
void setHorizontalSpacing( qreal spacing );
|
||
|
void resetHorizontalSpacing();
|
||
|
int horizontalSpacing() const;
|
||
|
|
||
|
void setVerticalSpacing( qreal spacing );
|
||
|
void resetVerticalSpacing();
|
||
|
int verticalSpacing() const;
|
||
|
|
||
|
Q_INVOKABLE void setRowSpacing( int row, qreal spacing );
|
||
|
Q_INVOKABLE qreal rowSpacing( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnSpacing( int column, qreal spacing );
|
||
|
Q_INVOKABLE qreal columnSpacing( int column ) const;
|
||
|
|
||
|
// stretch factors
|
||
|
Q_INVOKABLE void setRowStretchFactor( int row, int stretch );
|
||
|
Q_INVOKABLE int rowStretchFactor( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnStretchFactor( int column, int stretch );
|
||
|
Q_INVOKABLE int columnStretchFactor( int column ) const;
|
||
|
|
||
|
// row/column size hints
|
||
|
Q_INVOKABLE void setRowMinimumHeight( int row, qreal height );
|
||
|
Q_INVOKABLE qreal rowMinimumHeight( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setRowPreferredHeight( int row, qreal height );
|
||
|
Q_INVOKABLE qreal rowPreferredHeight( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setRowMaximumHeight( int row, qreal height );
|
||
|
Q_INVOKABLE qreal rowMaximumHeight( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setRowFixedHeight( int row, qreal height );
|
||
|
|
||
|
Q_INVOKABLE void setColumnMinimumWidth( int column, qreal width );
|
||
|
Q_INVOKABLE qreal columnMinimumWidth( int column ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnPreferredWidth( int column, qreal width );
|
||
|
Q_INVOKABLE qreal columnPreferredWidth( int column ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnMaximumWidth( int column, qreal width );
|
||
|
Q_INVOKABLE qreal columnMaximumWidth( int column ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnFixedWidth( int column, qreal width );
|
||
|
|
||
|
// alignments
|
||
|
|
||
|
Q_INVOKABLE void setRowAlignment( int row, Qt::Alignment alignment );
|
||
|
Q_INVOKABLE Qt::Alignment rowAlignment( int row ) const;
|
||
|
|
||
|
Q_INVOKABLE void setColumnAlignment( int column, Qt::Alignment alignment );
|
||
|
Q_INVOKABLE Qt::Alignment columnAlignment( int column ) const;
|
||
|
|
||
|
void setAlignment( const QQuickItem* item, Qt::Alignment alignment );
|
||
|
Qt::Alignment alignment( const QQuickItem* item ) const;
|
||
|
|
||
|
Q_INVOKABLE void setAlignment( QQuickItem* item, Qt::Alignment alignment );
|
||
|
Q_INVOKABLE Qt::Alignment alignment( QQuickItem* item ) const;
|
||
|
|
||
|
bool retainSizeWhenHidden( const QQuickItem* ) const;
|
||
|
void setRetainSizeWhenHidden( const QQuickItem*, bool on );
|
||
|
|
||
|
Q_INVOKABLE bool retainSizeWhenHidden( QQuickItem* ) const;
|
||
|
Q_INVOKABLE void setRetainSizeWhenHidden( QQuickItem*, bool on );
|
||
|
|
||
|
virtual qreal heightForWidth( qreal width ) const override;
|
||
|
virtual qreal widthForHeight( qreal height ) const override;
|
||
|
|
||
|
virtual QSizeF contentsSizeHint() const override;
|
||
|
|
||
|
Q_SIGNALS:
|
||
|
void verticalSpacingChanged();
|
||
|
void horizontalSpacingChanged();
|
||
|
|
||
|
protected:
|
||
|
virtual void setupLayoutItem( QskLayoutItem*, int index ) override;
|
||
|
virtual void layoutItemInserted( QskLayoutItem*, int index ) override;
|
||
|
virtual void layoutItemRemoved( QskLayoutItem*, int index ) override;
|
||
|
|
||
|
private:
|
||
|
void setRowSizeHint(
|
||
|
Qt::SizeHint which, int row, qreal size,
|
||
|
Qt::Orientation orientation );
|
||
|
|
||
|
class PrivateData;
|
||
|
std::unique_ptr< PrivateData > m_data;
|
||
|
};
|
||
|
|
||
|
inline void QskGridBox::addItem(
|
||
|
QQuickItem* item, int row, int column, Qt::Alignment alignment )
|
||
|
{
|
||
|
addItem( item, row, column, 1, 1, alignment );
|
||
|
}
|
||
|
|
||
|
// Qml does not like the const versions
|
||
|
|
||
|
inline void QskGridBox::setAlignment( const QQuickItem* item, Qt::Alignment alignment )
|
||
|
{
|
||
|
setAlignment( const_cast< QQuickItem* >( item ), alignment );
|
||
|
}
|
||
|
|
||
|
inline Qt::Alignment QskGridBox::alignment( const QQuickItem* item ) const
|
||
|
{
|
||
|
return alignment( const_cast< QQuickItem* >( item ) );
|
||
|
}
|
||
|
|
||
|
inline bool QskGridBox::retainSizeWhenHidden( const QQuickItem* item ) const
|
||
|
{
|
||
|
return retainSizeWhenHidden( const_cast< QQuickItem* >( item ) );
|
||
|
}
|
||
|
|
||
|
inline void QskGridBox::setRetainSizeWhenHidden( const QQuickItem* item, bool on )
|
||
|
{
|
||
|
setRetainSizeWhenHidden( const_cast< QQuickItem* >( item ), on );
|
||
|
}
|
||
|
|
||
|
#endif
|