Qt Designer QDesignerContainerExtension example: Fix page title.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Fri, 19 Sep 2014 13:37:40 +0000 (15:37 +0200)
committerFriedemann Kleint <Friedemann.Kleint@digia.com>
Mon, 22 Sep 2014 09:55:21 +0000 (11:55 +0200)
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>
examples/designer/containerextension/multipagewidget.cpp
examples/designer/containerextension/multipagewidget.h

index 8130bd2..2eed247 100644 (file)
@@ -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);
index a05e3ba..6903b6f 100644 (file)
@@ -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);