From ae26f834808c54265eadfc1cb1ec09f9c344a5a8 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Fri, 19 Sep 2014 15:37:40 +0200
Subject: [PATCH] Qt Designer QDesignerContainerExtension example: Fix page
 title.

Tie the setting of the combo title to QQWidget::windowTitleChanged().

The call to retranslateUi() happens after adding the pages; so
the titles are lost in uic-generated code.

Change-Id: Ia88dd694a7ab5fe1bd62a849feeb7768a2ba6f16
Task-number: QTBUG-24916
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
---
 .../designer/containerextension/multipagewidget.cpp    | 10 +++++++++-
 examples/designer/containerextension/multipagewidget.h |  3 +++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/examples/designer/containerextension/multipagewidget.cpp b/examples/designer/containerextension/multipagewidget.cpp
index 8130bd2c2..2eed24740 100644
--- a/examples/designer/containerextension/multipagewidget.cpp
+++ b/examples/designer/containerextension/multipagewidget.cpp
@@ -99,6 +99,8 @@ void MultiPageWidget::insertPage(int index, QWidget *page)
         title = tr("Page %1").arg(comboBox->count() + 1);
         page->setWindowTitle(title);
     }
+    connect(page, &QWidget::windowTitleChanged,
+            this, &MultiPageWidget::pageWindowTitleChanged);
     comboBox->insertItem(index, title);
 }
 
@@ -111,6 +113,13 @@ void MultiPageWidget::setCurrentIndex(int index)
     }
 }
 
+void MultiPageWidget::pageWindowTitleChanged()
+{
+    QWidget *page = qobject_cast<QWidget *>(sender());
+    const int index = stackWidget->indexOf(page);
+    comboBox->setItemText(index, page->windowTitle());
+}
+
 QWidget* MultiPageWidget::widget(int index)
 {
     return stackWidget->widget(index);
@@ -125,7 +134,6 @@ QString MultiPageWidget::pageTitle() const
 
 void MultiPageWidget::setPageTitle(QString const &newTitle)
 {
-    comboBox->setItemText(currentIndex(), newTitle);
     if (QWidget *currentWidget = stackWidget->currentWidget())
         currentWidget->setWindowTitle(newTitle);
     emit pageTitleChanged(newTitle);
diff --git a/examples/designer/containerextension/multipagewidget.h b/examples/designer/containerextension/multipagewidget.h
index a05e3ba51..6903b6fea 100644
--- a/examples/designer/containerextension/multipagewidget.h
+++ b/examples/designer/containerextension/multipagewidget.h
@@ -73,6 +73,9 @@ public slots:
     void setPageTitle(QString const &newTitle);
     void setCurrentIndex(int index);
 
+private slots:
+    void pageWindowTitleChanged();
+
 signals:
     void currentIndexChanged(int index);
     void pageTitleChanged(const QString &title);
-- 
GitLab