From ec7d099e3a11e10ed96aeac979432dfce4fd1aa7 Mon Sep 17 00:00:00 2001 From: suyu <1643689728@qq.com> Date: Tue, 25 Aug 2026 10:30:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A6=81=E6=AD=A2=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=A9=BA=E7=99=BD=E9=A1=B5=E9=9D=A2=E5=92=8C=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/ui/project_workspace_controller.cpp | 60 ++++++++++++++++----- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/app/src/ui/project_workspace_controller.cpp b/app/src/ui/project_workspace_controller.cpp index cd7ee29..390922b 100644 --- a/app/src/ui/project_workspace_controller.cpp +++ b/app/src/ui/project_workspace_controller.cpp @@ -11,9 +11,10 @@ #include "ui_main_window.h" #include +#include #include -#include #include +#include #include #include #include @@ -38,6 +39,43 @@ std::string toUtf8(const QString &value) return std::string(bytes.constData(), static_cast(bytes.size())); } +bool requestRequiredName( + QWidget &parent, + const QString &title, + const QString &label, + const QString &initial_value, + QString *name) +{ + QInputDialog dialog(&parent); + dialog.setWindowTitle(title); + dialog.setLabelText(label); + dialog.setInputMode(QInputDialog::TextInput); + dialog.setTextValue(initial_value); + + QDialogButtonBox *button_box = dialog.findChild(); + QPushButton *ok_button = button_box != nullptr + ? button_box->button(QDialogButtonBox::Ok) + : nullptr; + if (ok_button != nullptr) + { + ok_button->setEnabled(!initial_value.trimmed().isEmpty()); + QObject::connect( + &dialog, + &QInputDialog::textValueChanged, + &dialog, + [ok_button](const QString &text) { + ok_button->setEnabled(!text.trimmed().isEmpty()); + }); + } + + if (dialog.exec() != QDialog::Accepted) + { + return false; + } + *name = dialog.textValue().trimmed(); + return true; +} + } // namespace ProjectWorkspaceController::ProjectWorkspaceController( @@ -295,9 +333,9 @@ void ProjectWorkspaceController::updateActions() void ProjectWorkspaceController::addPage() { - const QString name = QInputDialog::getText( - &parent_, QObject::tr("新建页面"), QObject::tr("页面名称")); - if (name.isEmpty()) + QString name; + if (!requestRequiredName( + parent_, QObject::tr("新建页面"), QObject::tr("页面名称"), {}, &name)) { return; } @@ -317,9 +355,9 @@ void ProjectWorkspaceController::addPage() void ProjectWorkspaceController::addLogic() { - const QString name = QInputDialog::getText( - &parent_, QObject::tr("新建控制逻辑"), QObject::tr("逻辑名称")); - if (name.isEmpty()) + QString name; + if (!requestRequiredName( + parent_, QObject::tr("新建控制逻辑"), QObject::tr("逻辑名称"), {}, &name)) { return; } @@ -362,11 +400,9 @@ void ProjectWorkspaceController::renameSelectedItem() { return; } - bool accepted = false; - const QString name = QInputDialog::getText( - &parent_, QObject::tr("重命名"), QObject::tr("新名称"), - QLineEdit::Normal, current_name, &accepted); - if (!accepted) + QString name; + if (!requestRequiredName( + parent_, QObject::tr("重命名"), QObject::tr("新名称"), current_name, &name)) { return; }