layoutSizeHint improved
This commit is contained in:
parent
c71c496235
commit
287631e0d7
@ -201,26 +201,66 @@ int QskTabView::count() const
|
|||||||
QSizeF QskTabView::layoutSizeHint(
|
QSizeF QskTabView::layoutSizeHint(
|
||||||
Qt::SizeHint which, const QSizeF& constraint ) const
|
Qt::SizeHint which, const QSizeF& constraint ) const
|
||||||
{
|
{
|
||||||
if ( which != Qt::PreferredSize )
|
if ( which == Qt::MaximumSize )
|
||||||
return constraint;
|
return QSizeF();
|
||||||
|
|
||||||
const auto barHint = m_data->tabBar->sizeHint();
|
const auto& tabBar = m_data->tabBar;
|
||||||
const auto boxHint = m_data->stackBox->sizeHint();
|
const auto& stackBox = m_data->stackBox;
|
||||||
|
|
||||||
qreal w, h;
|
const auto barHint = tabBar->sizeConstraint( which );
|
||||||
|
|
||||||
|
QSizeF hint;
|
||||||
|
|
||||||
if ( orientation() == Qt::Vertical )
|
if ( orientation() == Qt::Vertical )
|
||||||
{
|
{
|
||||||
w = qMax( barHint.width(), boxHint.width() );
|
if ( constraint.width() >= 0.0 )
|
||||||
h = barHint.height() + boxHint.height();
|
{
|
||||||
|
qreal w = qMax( constraint.width(), barHint.width() );
|
||||||
|
qreal h = stackBox->sizeConstraint( which, QSizeF( w, -1.0 ) ).height();
|
||||||
|
|
||||||
|
hint.rheight() = barHint.height() + h;
|
||||||
|
}
|
||||||
|
else if ( constraint.height() >= 0.0 )
|
||||||
|
{
|
||||||
|
qreal h = constraint.height() - barHint.height();
|
||||||
|
qreal w = stackBox->sizeConstraint( which, QSizeF( -1.0, h ) ).width();
|
||||||
|
|
||||||
|
hint.rwidth() = qMax( barHint.width(), w );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
w = barHint.width() + boxHint.width();
|
const auto boxHint = stackBox->sizeConstraint();
|
||||||
h = qMax( barHint.height(), boxHint.height() );
|
|
||||||
|
hint.rwidth() = qMax( barHint.width(), boxHint.width() );
|
||||||
|
hint.rheight() = barHint.height() + boxHint.height();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( constraint.width() >= 0.0 )
|
||||||
|
{
|
||||||
|
qreal w = constraint.width() - barHint.width();
|
||||||
|
qreal h = stackBox->sizeConstraint( which, QSizeF( w, -1.0 ) ).height();
|
||||||
|
|
||||||
|
hint.rheight() = qMax( barHint.height(), h );
|
||||||
|
}
|
||||||
|
else if ( constraint.height() >= 0.0 )
|
||||||
|
{
|
||||||
|
qreal h = qMax( constraint.height(), barHint.height() );
|
||||||
|
qreal w = stackBox->sizeConstraint( which, QSizeF( -1.0, h ) ).width();
|
||||||
|
|
||||||
|
hint.rwidth() = barHint.width() + w;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const auto boxHint = stackBox->sizeConstraint();
|
||||||
|
|
||||||
|
hint.rwidth() = barHint.width() + boxHint.width();
|
||||||
|
hint.rheight() = qMax( barHint.height(), boxHint.height() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return QSizeF( w, h );
|
return hint;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskTabView::setCurrentIndex( int index )
|
void QskTabView::setCurrentIndex( int index )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user