spacer for grid layouts: qreal -> QSizeF
This commit is contained in:
parent
2a122d4e05
commit
8ee2377c76
@ -157,7 +157,7 @@ int QskGridBox::addItem( QQuickItem* item,
|
||||
return index;
|
||||
}
|
||||
|
||||
int QskGridBox::addSpacer( qreal spacing,
|
||||
int QskGridBox::addSpacer( const QSizeF& spacing,
|
||||
int row, int column, int rowSpan, int columnSpan )
|
||||
{
|
||||
const int index = m_data->engine.insertSpacer(
|
||||
|
@ -34,7 +34,7 @@ class QSK_EXPORT QskGridBox : public QskBox
|
||||
int addItem( QQuickItem*, int row, int column,
|
||||
int rowSpan, int columnSpan, Qt::Alignment );
|
||||
|
||||
Q_INVOKABLE int addSpacer( qreal spacing,
|
||||
Q_INVOKABLE int addSpacer( const QSizeF&,
|
||||
int row, int column, int columnSpan = 1, int rowSpan = 1 );
|
||||
|
||||
void removeItem( const QQuickItem* );
|
||||
|
@ -158,11 +158,11 @@ namespace
|
||||
{
|
||||
public:
|
||||
Element( QQuickItem*, const QRect& );
|
||||
Element( qreal spacing, const QRect& );
|
||||
Element( const QSizeF& spacing, const QRect& );
|
||||
|
||||
Element& operator=( const Element& );
|
||||
|
||||
qreal spacing() const;
|
||||
QSizeF spacing() const;
|
||||
QQuickItem* item() const;
|
||||
|
||||
QRect grid() const;
|
||||
@ -180,7 +180,7 @@ namespace
|
||||
union
|
||||
{
|
||||
QQuickItem* m_item;
|
||||
qreal m_spacing;
|
||||
QSizeF m_spacing;
|
||||
};
|
||||
|
||||
QRect m_grid;
|
||||
@ -195,7 +195,7 @@ Element::Element( QQuickItem* item, const QRect& grid )
|
||||
{
|
||||
}
|
||||
|
||||
Element::Element( qreal spacing, const QRect& grid )
|
||||
Element::Element( const QSizeF& spacing, const QRect& grid )
|
||||
: m_spacing( spacing )
|
||||
, m_grid( grid )
|
||||
, m_isSpacer( true )
|
||||
@ -216,9 +216,9 @@ Element& Element::operator=( const Element& other )
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline qreal Element::spacing() const
|
||||
inline QSizeF Element::spacing() const
|
||||
{
|
||||
return m_isSpacer ? m_spacing : -1.0;
|
||||
return m_isSpacer ? m_spacing : QSizeF();
|
||||
}
|
||||
|
||||
inline QQuickItem* Element::item() const
|
||||
@ -254,9 +254,12 @@ QskLayoutChain::CellData Element::cell( Qt::Orientation orientation ) const
|
||||
|
||||
if ( m_isSpacer )
|
||||
{
|
||||
cell.hint.setMinimum( m_spacing );
|
||||
cell.hint.setPreferred( m_spacing );
|
||||
cell.hint.setMaximum( m_spacing );
|
||||
const qreal value = ( orientation == Qt::Horizontal )
|
||||
? m_spacing.width() : m_spacing.height();
|
||||
|
||||
cell.hint.setMinimum( value );
|
||||
cell.hint.setPreferred( value );
|
||||
cell.hint.setMaximum( value );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -289,7 +292,7 @@ class QskGridLayoutEngine::PrivateData
|
||||
return const_cast< Element* >( &this->elements[index] );
|
||||
}
|
||||
|
||||
int insertElement( QQuickItem* item, qreal spacing, QRect grid )
|
||||
int insertElement( QQuickItem* item, QSizeF spacing, QRect grid )
|
||||
{
|
||||
// -1 means unlimited, while 0 does not make any sense
|
||||
if ( grid.width() == 0 )
|
||||
@ -299,9 +302,19 @@ class QskGridLayoutEngine::PrivateData
|
||||
grid.setHeight( 1 );
|
||||
|
||||
if ( item )
|
||||
{
|
||||
elements.push_back( Element( item, grid ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( spacing.width() < 0.0 )
|
||||
spacing.setWidth( 0.0 );
|
||||
|
||||
if ( spacing.height() < 0.0 )
|
||||
spacing.setHeight( 0.0 );
|
||||
|
||||
elements.push_back( Element( spacing, grid ) );
|
||||
}
|
||||
|
||||
grid = effectiveGrid( elements.back() );
|
||||
|
||||
@ -418,12 +431,11 @@ qreal QskGridLayoutEngine::columnSizeHint( int column, Qt::SizeHint which ) cons
|
||||
int QskGridLayoutEngine::insertItem( QQuickItem* item, const QRect& grid )
|
||||
{
|
||||
invalidate();
|
||||
return m_data->insertElement( item, -1, grid );
|
||||
return m_data->insertElement( item, QSizeF(), grid );
|
||||
}
|
||||
|
||||
int QskGridLayoutEngine::insertSpacer( qreal spacing, const QRect& grid )
|
||||
int QskGridLayoutEngine::insertSpacer( const QSizeF& spacing, const QRect& grid )
|
||||
{
|
||||
spacing = qMax( spacing, 0.0 );
|
||||
return m_data->insertElement( nullptr, spacing, grid );
|
||||
}
|
||||
|
||||
@ -495,12 +507,12 @@ QQuickItem* QskGridLayoutEngine::itemAt( int index ) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
qreal QskGridLayoutEngine::spacerAt( int index ) const
|
||||
QSizeF QskGridLayoutEngine::spacerAt( int index ) const
|
||||
{
|
||||
if ( const auto element = m_data->elementAt( index ) )
|
||||
return element->spacing();
|
||||
|
||||
return -1.0;
|
||||
return QSizeF();
|
||||
}
|
||||
|
||||
QQuickItem* QskGridLayoutEngine::itemAt( int row, int column ) const
|
||||
|
@ -34,13 +34,13 @@ class QskGridLayoutEngine : public QskLayoutEngine2D
|
||||
qreal columnSizeHint( int column, Qt::SizeHint ) const;
|
||||
|
||||
int insertItem( QQuickItem*, const QRect& grid );
|
||||
int insertSpacer( qreal spacing, const QRect& grid );
|
||||
int insertSpacer( const QSizeF&, const QRect& grid );
|
||||
|
||||
bool removeAt( int index );
|
||||
bool clear();
|
||||
|
||||
QQuickItem* itemAt( int index ) const override final;
|
||||
qreal spacerAt( int index ) const override final;
|
||||
QSizeF spacerAt( int index ) const;
|
||||
|
||||
QQuickItem* itemAt( int row, int column ) const;
|
||||
int indexAt( int row, int column ) const;
|
||||
|
@ -25,7 +25,6 @@ class QskLayoutEngine2D
|
||||
virtual int count() const = 0;
|
||||
|
||||
virtual QQuickItem* itemAt( int index ) const = 0;
|
||||
virtual qreal spacerAt( int index ) const = 0;
|
||||
|
||||
int indexOf( const QQuickItem* ) const;
|
||||
|
||||
|
@ -40,7 +40,7 @@ class QskLinearLayoutEngine : public QskLayoutEngine2D
|
||||
bool clear();
|
||||
|
||||
QQuickItem* itemAt( int index ) const override final;
|
||||
qreal spacerAt( int index ) const override final;
|
||||
qreal spacerAt( int index ) const;
|
||||
|
||||
bool setStretchFactorAt( int index, int stretchFactor );
|
||||
int stretchFactorAt( int index ) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user