diff --git a/aboutdialog/aboutdialog.cpp b/aboutdialog/aboutdialog.cpp index 076c45f..682f932 100644 --- a/aboutdialog/aboutdialog.cpp +++ b/aboutdialog/aboutdialog.cpp @@ -58,7 +58,11 @@ AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const m_ui->creatorLabel->setText(creator); } else { // add "developed by " before creator name - m_ui->creatorLabel->setText(tr("developed by %1").arg(creator.isEmpty() ? QApplication::organizationName() : creator)); + auto setCreator = [this, creator = std::move(creator)] { + m_ui->creatorLabel->setText(tr("developed by %1").arg(creator.isEmpty() ? QApplication::organizationName() : creator)); + }; + setCreator(); + connect(this, &AboutDialog::retranslationRequired, this, std::move(setCreator)); } m_ui->versionLabel->setText(version.isEmpty() ? QApplication::applicationVersion() : version); const auto &deps(dependencyVersions.size() ? dependencyVersions : CppUtilities::applicationInfo.dependencyVersions); @@ -72,10 +76,14 @@ AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const % linkedAgainst.join(QStringLiteral("
  • ")) % QStringLiteral("
  • ")); } if (!website.isEmpty() || CppUtilities::applicationInfo.url) { - m_ui->websiteLabel->setText(tr("For updates and bug reports visit the project " - "website.") - .arg(!website.isEmpty() ? website : QString::fromUtf8(CppUtilities::applicationInfo.url))); + auto setWebsite = [this, website = std::move(website)] { + m_ui->websiteLabel->setText(tr("For updates and bug reports visit the project " + "website.") + .arg(!website.isEmpty() ? website : QString::fromUtf8(CppUtilities::applicationInfo.url))); + }; + setWebsite(); + connect(this, &AboutDialog::retranslationRequired, this, std::move(setWebsite)); } else { m_ui->websiteLabel->hide(); } @@ -88,7 +96,9 @@ AboutDialog::AboutDialog(QWidget *parent, const QString &applicationName, const : new QGraphicsPixmapItem(QPixmap::fromImage(image)); m_iconScene->addItem(item); m_ui->graphicsView->setScene(m_iconScene); - m_ui->qtVersionLabel->setText(tr("Using Qt %1").arg(QString::fromUtf8(qVersion()))); + auto setQtVersion = [this] { m_ui->qtVersionLabel->setText(tr("Using Qt %1").arg(QString::fromUtf8(qVersion()))); }; + setQtVersion(); + connect(this, &AboutDialog::retranslationRequired, this, std::move(setQtVersion)); connect(m_ui->qtVersionLabel, &QLabel::linkActivated, this, &AboutDialog::linkActivated); centerWidget(this, parentWidget()); } @@ -126,7 +136,8 @@ bool AboutDialog::event(QEvent *event) setStyleSheet(dialogStyleForPalette(palette())); break; case QEvent::LanguageChange: - m_ui->retranslateUi(this); + setWindowTitle(QCoreApplication::translate("QtUtilities::AboutDialog", "About", nullptr)); + emit retranslationRequired(); break; default:; } diff --git a/aboutdialog/aboutdialog.h b/aboutdialog/aboutdialog.h index 17d2a03..6cdc22f 100644 --- a/aboutdialog/aboutdialog.h +++ b/aboutdialog/aboutdialog.h @@ -27,6 +27,9 @@ public: explicit AboutDialog(QWidget *parent, const QString &website = QString(), const QString &description = QString(), const QImage &image = QImage()); ~AboutDialog() override; +Q_SIGNALS: + void retranslationRequired(); + protected: bool event(QEvent *event) override;