finding the corresponding tabBar fixed
This commit is contained in:
parent
bbc3c6bc62
commit
89f1148a7b
@ -7,6 +7,7 @@
|
|||||||
#include "QskSkinlet.h"
|
#include "QskSkinlet.h"
|
||||||
#include "QskTabBar.h"
|
#include "QskTabBar.h"
|
||||||
#include "QskTextOptions.h"
|
#include "QskTextOptions.h"
|
||||||
|
#include "QskQuick.h"
|
||||||
|
|
||||||
#include <qfontmetrics.h>
|
#include <qfontmetrics.h>
|
||||||
#include <qpointer.h>
|
#include <qpointer.h>
|
||||||
@ -14,6 +15,11 @@
|
|||||||
QSK_SUBCONTROL( QskTabButton, Panel )
|
QSK_SUBCONTROL( QskTabButton, Panel )
|
||||||
QSK_SUBCONTROL( QskTabButton, Text )
|
QSK_SUBCONTROL( QskTabButton, Text )
|
||||||
|
|
||||||
|
static inline QskTabBar* qskFindTabBar( QskTabButton* button )
|
||||||
|
{
|
||||||
|
return qskFindAncestorOf< QskTabBar* >( button->parentItem() );
|
||||||
|
}
|
||||||
|
|
||||||
class QskTabButton::PrivateData
|
class QskTabButton::PrivateData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -36,7 +42,8 @@ QskTabButton::QskTabButton( const QString& text, QQuickItem* parent )
|
|||||||
: Inherited( parent )
|
: Inherited( parent )
|
||||||
, m_data( new PrivateData( text ) )
|
, m_data( new PrivateData( text ) )
|
||||||
{
|
{
|
||||||
resolveTabBar();
|
if ( parent )
|
||||||
|
m_data->tabBar = qskFindTabBar( this );
|
||||||
|
|
||||||
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
|
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
|
||||||
|
|
||||||
@ -102,29 +109,17 @@ QRectF QskTabButton::layoutRect() const
|
|||||||
QskAspect::Placement QskTabButton::effectivePlacement() const
|
QskAspect::Placement QskTabButton::effectivePlacement() const
|
||||||
{
|
{
|
||||||
if ( m_data->tabBar )
|
if ( m_data->tabBar )
|
||||||
{
|
return m_data->tabBar->effectivePlacement();
|
||||||
const auto pos = m_data->tabBar->position();
|
|
||||||
|
|
||||||
switch ( pos )
|
|
||||||
{
|
|
||||||
case Qsk::Left:
|
|
||||||
return QskAspect::Left;
|
|
||||||
|
|
||||||
case Qsk::Right:
|
|
||||||
return QskAspect::Right;
|
|
||||||
|
|
||||||
case Qsk::Top:
|
|
||||||
return QskAspect::Top;
|
|
||||||
|
|
||||||
case Qsk::Bottom:
|
|
||||||
return QskAspect::Bottom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return QskAspect::NoPlacement;
|
return QskAspect::NoPlacement;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskTabBar* QskTabButton::tabBar() const
|
const QskTabBar* QskTabButton::tabBar() const
|
||||||
|
{
|
||||||
|
return m_data->tabBar;
|
||||||
|
}
|
||||||
|
|
||||||
|
QskTabBar* QskTabButton::tabBar()
|
||||||
{
|
{
|
||||||
return m_data->tabBar;
|
return m_data->tabBar;
|
||||||
}
|
}
|
||||||
@ -145,7 +140,7 @@ void QskTabButton::changeEvent( QEvent* event )
|
|||||||
}
|
}
|
||||||
case QEvent::ParentChange:
|
case QEvent::ParentChange:
|
||||||
{
|
{
|
||||||
resolveTabBar();
|
m_data->tabBar = qskFindTabBar( this );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -155,18 +150,4 @@ void QskTabButton::changeEvent( QEvent* event )
|
|||||||
Inherited::changeEvent( event );
|
Inherited::changeEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskTabButton::resolveTabBar()
|
|
||||||
{
|
|
||||||
auto p = parent();
|
|
||||||
while ( p )
|
|
||||||
{
|
|
||||||
if ( const auto tabBar = qobject_cast< QskTabBar* >( p ) )
|
|
||||||
{
|
|
||||||
m_data->tabBar = tabBar;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
p = p->parent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "moc_QskTabButton.cpp"
|
#include "moc_QskTabButton.cpp"
|
||||||
|
@ -38,9 +38,11 @@ class QSK_EXPORT QskTabButton : public QskAbstractButton
|
|||||||
|
|
||||||
QSizeF contentsSizeHint() const override;
|
QSizeF contentsSizeHint() const override;
|
||||||
QRectF layoutRect() const override;
|
QRectF layoutRect() const override;
|
||||||
|
|
||||||
QskAspect::Placement effectivePlacement() const override;
|
QskAspect::Placement effectivePlacement() const override;
|
||||||
|
|
||||||
QskTabBar* tabBar() const;
|
const QskTabBar* tabBar() const;
|
||||||
|
QskTabBar* tabBar();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void textChanged( const QString& text );
|
void textChanged( const QString& text );
|
||||||
@ -50,8 +52,6 @@ class QSK_EXPORT QskTabButton : public QskAbstractButton
|
|||||||
void changeEvent( QEvent* ) override;
|
void changeEvent( QEvent* ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void resolveTabBar();
|
|
||||||
|
|
||||||
class PrivateData;
|
class PrivateData;
|
||||||
std::unique_ptr< PrivateData > m_data;
|
std::unique_ptr< PrivateData > m_data;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user