From cdd0b764a78413631b838c9a804dc2fd8fe7d25c Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Mon, 6 Jul 2026 09:44:38 +0800 Subject: [PATCH] refactor: use .ui to replace manual layout for aboutdialog --- app/aboutdialog.cpp | 47 ++++++++---------------- app/aboutdialog.h | 16 +++------ app/aboutdialog.ui | 86 ++++++++++++++++++++++++++++++++++++++++++++ app/settingsdialog.h | 1 - 4 files changed, 106 insertions(+), 44 deletions(-) create mode 100644 app/aboutdialog.ui diff --git a/app/aboutdialog.cpp b/app/aboutdialog.cpp index a80dec0..b486bfb 100644 --- a/app/aboutdialog.cpp +++ b/app/aboutdialog.cpp @@ -3,6 +3,7 @@ // SPDX-License-Identifier: MIT #include "aboutdialog.h" +#include "ui_aboutdialog.h" #include #include @@ -17,16 +18,10 @@ using namespace Qt::Literals::StringLiterals; AboutDialog::AboutDialog(QWidget *parent) - : QDialog(parent) - , m_tabWidget(new QTabWidget) - , m_buttonBox(new QDialogButtonBox) - , m_helpTextEdit(new QTextBrowser) - , m_aboutTextEdit(new QTextBrowser) - , m_specialThanksTextEdit(new QTextBrowser) - , m_licenseTextEdit(new QTextBrowser) - , m_3rdPartyLibsTextEdit(new QTextBrowser) + : QDialog(parent), ui(new Ui::AboutDialog) { - this->setWindowTitle(tr("About")); + ui->setupUi(this); + setWindowFlag(Qt::WindowContextHelpButtonHint, false); const QStringList helpStr { u"

%1

"_s.arg(tr("Launch application with image file path as argument to load the file.")), @@ -137,42 +132,30 @@ SOFTWARE. u""_s }; - m_helpTextEdit->setText(helpStr.join('\n')); + ui->m_helpTextEdit->setText(helpStr.join('\n')); - m_aboutTextEdit->setText(aboutStr.join('\n')); - m_aboutTextEdit->setOpenExternalLinks(true); + ui->m_aboutTextEdit->setText(aboutStr.join('\n')); + ui->m_aboutTextEdit->setOpenExternalLinks(true); - m_specialThanksTextEdit->setText(specialThanksStr.join('\n')); - m_specialThanksTextEdit->setOpenExternalLinks(true); + ui->m_specialThanksTextEdit->setText(specialThanksStr.join('\n')); + ui->m_specialThanksTextEdit->setOpenExternalLinks(true); - m_licenseTextEdit->setText(licenseStr.join('\n').arg(qApp->applicationDisplayName(), mitLicense)); + ui->m_licenseTextEdit->setText(licenseStr.join('\n').arg(qApp->applicationDisplayName(), mitLicense)); - m_3rdPartyLibsTextEdit->setText(thirdPartyLibsStr.join('\n').arg(u"%1"_s).arg(qApp->applicationDisplayName())); - m_3rdPartyLibsTextEdit->setOpenExternalLinks(true); + ui->m_3rdPartyLibsTextEdit->setText(thirdPartyLibsStr.join('\n').arg(u"%1"_s).arg(qApp->applicationDisplayName())); + ui->m_3rdPartyLibsTextEdit->setOpenExternalLinks(true); - m_tabWidget->addTab(m_helpTextEdit, tr("&Help")); - m_tabWidget->addTab(m_aboutTextEdit, tr("&About")); - m_tabWidget->addTab(m_specialThanksTextEdit, tr("&Special Thanks")); - m_tabWidget->addTab(m_licenseTextEdit, tr("&License")); - m_tabWidget->addTab(m_3rdPartyLibsTextEdit, tr("&Third-party Libraries")); - - m_buttonBox->setStandardButtons(QDialogButtonBox::Close); - connect(m_buttonBox, QOverload::of(&QDialogButtonBox::clicked), this, [this](){ + connect(ui->m_buttonBox, QOverload::of(&QDialogButtonBox::clicked), this, [this](QAbstractButton * btn){ + Q_UNUSED(btn) this->close(); }); - setLayout(new QVBoxLayout); - - layout()->addWidget(m_tabWidget); - layout()->addWidget(m_buttonBox); - setMinimumSize(361, 161); // not sure why it complain "Unable to set geometry" - setWindowFlag(Qt::WindowContextHelpButtonHint, false); } AboutDialog::~AboutDialog() { - + delete ui; } QSize AboutDialog::sizeHint() const diff --git a/app/aboutdialog.h b/app/aboutdialog.h index 393f2b9..9db9aaa 100644 --- a/app/aboutdialog.h +++ b/app/aboutdialog.h @@ -7,10 +7,11 @@ #include + QT_BEGIN_NAMESPACE -class QTextBrowser; -class QTabWidget; -class QDialogButtonBox; +namespace Ui { +class AboutDialog; +} QT_END_NAMESPACE class AboutDialog : public QDialog @@ -23,14 +24,7 @@ public: QSize sizeHint() const override; private: - QTabWidget * m_tabWidget = nullptr; - QDialogButtonBox * m_buttonBox = nullptr; - - QTextBrowser * m_helpTextEdit = nullptr; - QTextBrowser * m_aboutTextEdit = nullptr; - QTextBrowser * m_specialThanksTextEdit = nullptr; - QTextBrowser * m_licenseTextEdit = nullptr; - QTextBrowser * m_3rdPartyLibsTextEdit = nullptr; + QT_PREPEND_NAMESPACE(Ui::AboutDialog) *ui; }; #endif // ABOUTDIALOG_H diff --git a/app/aboutdialog.ui b/app/aboutdialog.ui new file mode 100644 index 0000000..1a0724d --- /dev/null +++ b/app/aboutdialog.ui @@ -0,0 +1,86 @@ + + + AboutDialog + + + Qt::NonModal + + + About + + + + 361 + 161 + + + + + + + 0 + + + + &Help + + + + + + + + + + &About + + + + + + + + + + &Special Thanks + + + + + + + + + + &License + + + + + + + + + + &Third-party Libraries + + + + + + + + + + + + + QDialogButtonBox::Close + + + + + + + + diff --git a/app/settingsdialog.h b/app/settingsdialog.h index f8c464f..82771ab 100644 --- a/app/settingsdialog.h +++ b/app/settingsdialog.h @@ -5,7 +5,6 @@ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H -#include #include QT_BEGIN_NAMESPACE