From eba9f6c8538b585d87bbb1ab1dfd4fca7dcc9646 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Fri, 2 Nov 2012 09:14:37 +0100 Subject: [PATCH] Fix assignment of label to TabWidget's attached properties --- declarativeobjects.cpp | 20 +++++++++++++++++++- declarativeobjects_p.h | 2 ++ test.qml | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/declarativeobjects.cpp b/declarativeobjects.cpp index 46625d7..73dff26 100644 --- a/declarativeobjects.cpp +++ b/declarativeobjects.cpp @@ -1721,6 +1721,8 @@ class DeclarativeTabWidgetAttached::Private public: QString label; QIcon icon; + QPointer tabWidget; + int index; }; DeclarativeTabWidgetAttached::DeclarativeTabWidgetAttached(QObject *parent) @@ -1739,6 +1741,10 @@ void DeclarativeTabWidgetAttached::setLabel(const QString &label) return; d->label = label; + + if (d->tabWidget) + d->tabWidget->setTabText(d->index, d->label); + emit labelChanged(label); } @@ -1750,6 +1756,10 @@ QString DeclarativeTabWidgetAttached::label() const void DeclarativeTabWidgetAttached::setIcon(const QIcon &icon) { d->icon = icon; + + if (d->tabWidget) + d->tabWidget->setTabIcon(d->index, d->icon); + emit iconChanged(icon); } @@ -1758,6 +1768,12 @@ QIcon DeclarativeTabWidgetAttached::icon() const return d->icon; } +void DeclarativeTabWidgetAttached::setAssociation(QTabWidget *widget, int index) +{ + d->tabWidget = widget; + d->index = index; +} + DeclarativeTabWidget::DeclarativeTabWidget(QObject *parent) : DeclarativeWidgetProxy(parent) { connectAllSignals(m_proxiedObject, this); @@ -1779,7 +1795,9 @@ void DeclarativeTabWidget::addWidget(QWidget *widget, AbstractDeclarativeObject icon = tabHeader->icon(); } - m_proxiedObject->addTab(widget, icon, label); + const int index = m_proxiedObject->addTab(widget, icon, label); + if (tabHeader) + tabHeader->setAssociation(m_proxiedObject, index); } void DeclarativeTabWidget::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject) diff --git a/declarativeobjects_p.h b/declarativeobjects_p.h index 88ad740..0db7851 100644 --- a/declarativeobjects_p.h +++ b/declarativeobjects_p.h @@ -1036,6 +1036,8 @@ class DeclarativeTabWidgetAttached : public QObject void setIcon(const QIcon &icon); QIcon icon() const; + void setAssociation(QTabWidget *widget, int index); + Q_SIGNALS: void labelChanged(const QString &label); void iconChanged(const QIcon &icon); diff --git a/test.qml b/test.qml index 66ad200..06aa886 100644 --- a/test.qml +++ b/test.qml @@ -49,7 +49,7 @@ Widget { } TabWidget { Label { - TabWidget.label: "Title 1" + TabWidget.label: qsTr("Title 1") text: "Page 1" } -- 1.7.2.5