Merge f6dd067d58
into 7acd0f9c63
This commit is contained in:
commit
f010da4f0e
|
@ -325,23 +325,11 @@ QSizeF QskSegmentedBarSkinlet::segmentSizeHint(
|
|||
{
|
||||
using Q = QskSegmentedBar;
|
||||
|
||||
const QSizeF sizeSymbol =
|
||||
bar->symbolHint( Q::Icon | Q::Selected ).defaultSize();
|
||||
|
||||
QSizeF segmentSize;
|
||||
|
||||
for ( int i = 0; i < bar->count(); i++ )
|
||||
{
|
||||
const auto option = bar->optionAt( i );
|
||||
|
||||
auto iconSize = option.icon().graphic().defaultSize();
|
||||
iconSize = iconSize.expandedTo( sizeSymbol );
|
||||
|
||||
LayoutEngine layoutEngine( bar, i );
|
||||
layoutEngine.setGraphicTextElements( bar,
|
||||
Q::Text, option.text(), Q::Icon, iconSize );
|
||||
|
||||
const auto size = layoutEngine.sizeHint( which, QSizeF() );
|
||||
const auto size = sampleSizeHint( bar, which, QSizeF(), Q::Segment, i );
|
||||
segmentSize = segmentSize.expandedTo( size );
|
||||
}
|
||||
|
||||
|
@ -490,6 +478,30 @@ QskAspect::States QskSegmentedBarSkinlet::sampleStates(
|
|||
return states;
|
||||
}
|
||||
|
||||
QSizeF QskSegmentedBarSkinlet::sampleSizeHint( const QskSkinnable* skinnable,
|
||||
Qt::SizeHint which, const QSizeF& constraint, QskAspect::Subcontrol, int index ) const
|
||||
{
|
||||
if ( which != Qt::PreferredSize )
|
||||
return QSizeF();
|
||||
|
||||
using Q = QskSegmentedBar;
|
||||
auto bar = static_cast< const QskSegmentedBar* >( skinnable );
|
||||
const auto option = bar->optionAt( index );
|
||||
|
||||
const QSizeF sizeSymbol =
|
||||
bar->symbolHint( Q::Icon | Q::Selected ).defaultSize();
|
||||
|
||||
auto iconSize = option.icon().graphic().defaultSize();
|
||||
iconSize = iconSize.expandedTo( sizeSymbol );
|
||||
|
||||
LayoutEngine layoutEngine( bar, index );
|
||||
layoutEngine.setGraphicTextElements( bar,
|
||||
Q::Text, option.text(), Q::Icon, iconSize );
|
||||
|
||||
const auto size = layoutEngine.sizeHint( which, constraint );
|
||||
return size;
|
||||
}
|
||||
|
||||
QSGNode* QskSegmentedBarSkinlet::updateSampleNode( const QskSkinnable* skinnable,
|
||||
QskAspect::Subcontrol subControl, int index, QSGNode* node ) const
|
||||
{
|
||||
|
|
|
@ -48,6 +48,9 @@ class QSK_EXPORT QskSegmentedBarSkinlet : public QskSkinlet
|
|||
QskAspect::States sampleStates( const QskSkinnable*,
|
||||
QskAspect::Subcontrol, int index ) const override;
|
||||
|
||||
QSizeF sampleSizeHint( const QskSkinnable*, Qt::SizeHint, const QSizeF&,
|
||||
QskAspect::Subcontrol, int ) const override;
|
||||
|
||||
protected:
|
||||
QSGNode* updateSubNode( const QskSkinnable*,
|
||||
quint8 nodeRole, QSGNode* ) const override;
|
||||
|
|
|
@ -753,6 +753,12 @@ QVariant QskSkinlet::sampleAt( const QskSkinnable*,
|
|||
return QVariant();
|
||||
}
|
||||
|
||||
QSizeF QskSkinlet::sampleSizeHint( const QskSkinnable*,
|
||||
Qt::SizeHint, const QSizeF&, QskAspect::Subcontrol, int ) const
|
||||
{
|
||||
return QSizeF();
|
||||
}
|
||||
|
||||
QSizeF QskSkinlet::hintWithoutConstraint(
|
||||
const QSizeF& hint, const QSizeF& constraint ) const
|
||||
{
|
||||
|
|
|
@ -64,6 +64,9 @@ class QSK_EXPORT QskSkinlet
|
|||
virtual QVariant sampleAt( const QskSkinnable*,
|
||||
QskAspect::Subcontrol, int index ) const;
|
||||
|
||||
virtual QSizeF sampleSizeHint( const QskSkinnable*,
|
||||
Qt::SizeHint, const QSizeF&, QskAspect::Subcontrol, int ) const;
|
||||
|
||||
const QVector< quint8 >& nodeRoles() const;
|
||||
|
||||
void setOwnedBySkinnable( bool on );
|
||||
|
|
Loading…
Reference in New Issue