allow registration of skinlet for skinnables ( not only controls )
This commit is contained in:
parent
b2738f4bb6
commit
33b3ddb5e3
@ -363,6 +363,20 @@ const int* QskSkin::dialogButtonLayout( Qt::Orientation orientation ) const
|
||||
return QPlatformDialogHelper::buttonLayout( orientation, policy );
|
||||
}
|
||||
|
||||
const QMetaObject* QskSkin::skinletMetaObject( const QMetaObject* metaObject ) const
|
||||
{
|
||||
while ( metaObject )
|
||||
{
|
||||
auto it = m_data->skinletMap.find( metaObject );
|
||||
if ( it != m_data->skinletMap.cend() )
|
||||
return it->second.metaObject;
|
||||
|
||||
metaObject = metaObject->superClass();
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QskSkinlet* QskSkin::skinlet( const QMetaObject* metaObject )
|
||||
{
|
||||
while ( metaObject )
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <type_traits>
|
||||
#include <unordered_map>
|
||||
|
||||
class QskControl;
|
||||
class QskSkinnable;
|
||||
class QskSkinlet;
|
||||
|
||||
class QskColorFilter;
|
||||
@ -76,6 +76,7 @@ class QSK_EXPORT QskSkin : public QObject
|
||||
virtual QString dialogButtonText( int button ) const;
|
||||
|
||||
QskSkinlet* skinlet( const QMetaObject* );
|
||||
const QMetaObject* skinletMetaObject( const QMetaObject* ) const;
|
||||
|
||||
const QskSkinHintTable& hintTable() const;
|
||||
QskSkinHintTable& hintTable();
|
||||
@ -84,19 +85,19 @@ class QSK_EXPORT QskSkin : public QObject
|
||||
const std::unordered_map< int, QskColorFilter >& graphicFilters() const;
|
||||
|
||||
private:
|
||||
void declareSkinlet( const QMetaObject* controlMetaObject,
|
||||
const QMetaObject* skinMetaObject );
|
||||
void declareSkinlet( const QMetaObject* metaObject,
|
||||
const QMetaObject* skinletMetaObject );
|
||||
|
||||
class PrivateData;
|
||||
std::unique_ptr< PrivateData > m_data;
|
||||
};
|
||||
|
||||
template< typename Control, typename Skinlet >
|
||||
template< typename Skinnable, typename Skinlet >
|
||||
inline void QskSkin::declareSkinlet()
|
||||
{
|
||||
Q_STATIC_ASSERT( ( std::is_base_of< QskControl, Control >::value ) );
|
||||
Q_STATIC_ASSERT( ( std::is_base_of< QskSkinnable, Skinnable >::value ) );
|
||||
Q_STATIC_ASSERT( ( std::is_base_of< QskSkinlet, Skinlet >::value ) );
|
||||
declareSkinlet( &Control::staticMetaObject, &Skinlet::staticMetaObject );
|
||||
declareSkinlet( &Skinnable::staticMetaObject, &Skinlet::staticMetaObject );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user