config:基本配置更新。

This commit is contained in:
2025-11-14 11:14:52 +08:00
parent eb77ad7b01
commit c3dfcfc1b9
9 changed files with 64 additions and 63 deletions

View File

@@ -1,8 +1,8 @@
{ {
"files.autoSave": "onFocusChange", "files.autoSave": "onFocusChange",
"editor.fontSize": 14, "editor.fontSize": 14,
// "editor.fontFamily": "'Source Code Pro', 'Source Code Pro', 'Source Code Pro'", "editor.fontFamily": "'Maple Mono NL NF CN Light', 'Maple Mono NL NF CN Light', 'Maple Mono NL NF CN Light'",
"terminal.integrated.fontFamily": "Source Code Pro", "terminal.integrated.fontFamily": "Maple Mono NL NF CN Light",
"cmake.configureOnOpen": true, "cmake.configureOnOpen": true,
"cmake.debugConfig": { "cmake.debugConfig": {
"console": "integratedTerminal", "console": "integratedTerminal",

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(OneLevelXmlOpr VERSION 1.3.11 LANGUAGES CXX) project(OneLevelXmlOpr VERSION 1.3.12 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -35,6 +35,9 @@ include_directories(3rd)
include_directories(src) include_directories(src)
include_directories(form) include_directories(form)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/)
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication") set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
add_subdirectory(SingleApplication-3.5.2) add_subdirectory(SingleApplication-3.5.2)

View File

@@ -20,7 +20,7 @@ MainWidget::MainWidget(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowTitle(u8"OneLevelXmlOpr v1.3.11"); setWindowTitle("OneLevelXmlOpr v1.3.12");
setWindowIcon(QIcon("://resource/xml.ico")); setWindowIcon(QIcon("://resource/xml.ico"));
QScreen* primaryScreen = QGuiApplication::primaryScreen(); QScreen* primaryScreen = QGuiApplication::primaryScreen();
@@ -53,7 +53,7 @@ MainWidget::MainWidget(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
ui->btnResort->setEnabled(false); ui->btnResort->setEnabled(false);
connect(ui->btnSelectFile, &QPushButton::clicked, this, [&]() { connect(ui->btnSelectFile, &QPushButton::clicked, this, [&]() {
QString file = CUtil::select_file(this, u8"请选择xml文件", u8"XML(*.xml);;所有文件 (*)"); QString file = CUtil::select_file(this, "请选择xml文件", "XML(*.xml);;所有文件 (*)");
if (file.isEmpty()) { if (file.isEmpty()) {
return; return;
} }
@@ -122,7 +122,7 @@ MainWidget::MainWidget(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
return; return;
} }
if (!CUtil::affirm(this, u8"提示", u8"确认重新排序吗?")) { if (!CUtil::affirm(this, "提示", "确认重新排序吗?")) {
return; return;
} }
@@ -161,7 +161,7 @@ void MainWidget::copy_key()
} }
QClipboard* clip = QApplication::clipboard(); QClipboard* clip = QApplication::clipboard();
clip->setText(QString(target->Attribute(keys_[0].c_str()))); clip->setText(QString(target->Attribute(keys_[0].c_str())));
// CUtil::msg(this, u8"已复制"); // CUtil::msg(this, "已复制");
} }
void MainWidget::closeEvent(QCloseEvent* event) void MainWidget::closeEvent(QCloseEvent* event)
@@ -281,7 +281,7 @@ void MainWidget::push_content(const std::vector<tinyxml2::XMLElement*>& eles, st
if (page < 1 || page > all_page_) { if (page < 1 || page > all_page_) {
if (eles.size() > 0) { if (eles.size() > 0) {
CUtil::msg(this, u8"页码不在范围内"); CUtil::msg(this, "页码不在范围内");
return; return;
} }
tab_widget_->clearContents(); tab_widget_->clearContents();
@@ -338,7 +338,7 @@ bool MainWidget::read(const QString& file_path)
ui->cbUnit->clear(); ui->cbUnit->clear();
unit_change_auto_ = false; unit_change_auto_ = false;
if (alreay_open_) { if (alreay_open_) {
if (!CUtil::affirm(this, u8"确认", u8"当前已有打开文件在使用,请确认已保存相关内容再继续。")) { if (!CUtil::affirm(this, "确认", "当前已有打开文件在使用,请确认已保存相关内容再继续。")) {
return false; return false;
} else { } else {
xml_.clear_data(); xml_.clear_data();
@@ -349,21 +349,21 @@ bool MainWidget::read(const QString& file_path)
// 获取配置 // 获取配置
cur_config_.name = ui->cbConfig->currentText().toStdString(); cur_config_.name = ui->cbConfig->currentText().toStdString();
if (!ini_oper_->get_item(cur_config_)) { if (!ini_oper_->get_item(cur_config_)) {
CUtil::msg(this, u8"获取配置失败。"); CUtil::msg(this, "获取配置失败。");
clear_tab_widget(); clear_tab_widget();
alreay_open_ = false; alreay_open_ = false;
return false; return false;
} }
if (!xml_.open(file_path.toStdString())) { if (!xml_.open(file_path.toStdString())) {
CUtil::msg(this, u8"打开xml失败。"); CUtil::msg(this, "打开xml失败。");
clear_tab_widget(); clear_tab_widget();
alreay_open_ = false; alreay_open_ = false;
return false; return false;
} }
xml_.set_baseinfo(cur_config_); xml_.set_baseinfo(cur_config_);
if (!xml_.parse_xml(vec_)) { if (!xml_.parse_xml(vec_)) {
CUtil::msg(this, u8"解析xml失败。"); CUtil::msg(this, "解析xml失败。");
clear_tab_widget(); clear_tab_widget();
alreay_open_ = false; alreay_open_ = false;
return false; return false;
@@ -499,15 +499,15 @@ void MainWidget::item_changed_handle(QTableWidgetItem* item)
void MainWidget::save() void MainWidget::save()
{ {
if (xml_.save()) { if (xml_.save()) {
CUtil::msg(this, u8"保存成功"); CUtil::msg(this, "保存成功");
} else { } else {
CUtil::msg(this, u8"保存失败"); CUtil::msg(this, "保存失败");
} }
} }
void MainWidget::copy_select_line() void MainWidget::copy_select_line()
{ {
// if (!CUtil::affirm(this, u8"确认", u8"确认复制吗?")) { // if (!CUtil::affirm(this, "确认", "确认复制吗?")) {
// return; // return;
// } // }
@@ -553,9 +553,9 @@ bool MainWidget::edit_property(Element_t* target, int row, bool is_copy)
xml_.get_attributes(target, property); xml_.get_attributes(target, property);
if (is_copy) { if (is_copy) {
attri_edit_->setWindowTitle(u8"复制项目"); attri_edit_->setWindowTitle("复制项目");
} else { } else {
attri_edit_->setWindowTitle(u8"编辑项目"); attri_edit_->setWindowTitle("编辑项目");
} }
// 检测key值是否变化 // 检测key值是否变化
@@ -571,7 +571,7 @@ bool MainWidget::edit_property(Element_t* target, int row, bool is_copy)
// 如果是复制,或者编辑时更改了key值,检查重复性。 // 如果是复制,或者编辑时更改了key值,检查重复性。
if (property[0].value != value_pre || is_copy) { if (property[0].value != value_pre || is_copy) {
while (xml_.check_key_exists(property)) { while (xml_.check_key_exists(property)) {
CUtil::msg(attri_edit_, u8"不能有相同的key,请检查。"); CUtil::msg(attri_edit_, "不能有相同的key,请检查。");
attri_edit_->exec(); attri_edit_->exec();
attri_edit_->get_attribute(property); attri_edit_->get_attribute(property);
if (!attri_edit_->is_ok_) { if (!attri_edit_->is_ok_) {
@@ -627,10 +627,10 @@ void MainWidget::init_menu()
menu_simple_ = new QMenu(); menu_simple_ = new QMenu();
menu_multi_ = new QMenu(); menu_multi_ = new QMenu();
ac_edit_property_ = new QAction(u8"编辑"); ac_edit_property_ = new QAction("编辑");
ac_copy_curline_ = new QAction(u8"复制项"); ac_copy_curline_ = new QAction("复制项");
ac_del_curline_ = new QAction(u8"删除项"); ac_del_curline_ = new QAction("删除项");
ac_copy_key_ = new QAction(u8"复制key"); ac_copy_key_ = new QAction("复制key");
menu_simple_->addAction(ac_edit_property_); menu_simple_->addAction(ac_edit_property_);
menu_simple_->addAction(ac_copy_curline_); menu_simple_->addAction(ac_copy_curline_);
@@ -680,7 +680,7 @@ void MainWidget::insert_one_line(Element_t* ele, int row)
void MainWidget::del_select_line() void MainWidget::del_select_line()
{ {
if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) { if (!CUtil::affirm(this, "确认", "确认删除吗?")) {
return; return;
} }
@@ -729,7 +729,7 @@ QTableWidgetItem* MainWidget::get_current_select_item()
} }
QList<QTableWidgetItem*> selectedItems = tab_widget_->selectedItems(); QList<QTableWidgetItem*> selectedItems = tab_widget_->selectedItems();
if (selectedItems.size() < 1) { if (selectedItems.size() < 1) {
CUtil::msg(this, u8"没有选中数据"); CUtil::msg(this, "没有选中数据");
return ret; return ret;
} }
ret = selectedItems[0]; ret = selectedItems[0];
@@ -803,7 +803,7 @@ void MainWidget::copy_multi_data()
} }
if (vec.size() < 1) { if (vec.size() < 1) {
CUtil::msg(this, u8"无选择数据"); CUtil::msg(this, "无选择数据");
return; return;
} }
QString ret; QString ret;
@@ -830,7 +830,7 @@ void MainWidget::replace_content(bool is_common)
QString key = ui->edRepPre->text(); QString key = ui->edRepPre->text();
QString after = ui->edRepAfter->text(); QString after = ui->edRepAfter->text();
if (key.isEmpty()) { if (key.isEmpty()) {
CUtil::msg(this, u8"替换前数据为空。"); CUtil::msg(this, "替换前数据为空。");
return; return;
} }
auto handle = [&](const std::vector<OperElement*>& vec, bool is_search) { auto handle = [&](const std::vector<OperElement*>& vec, bool is_search) {
@@ -852,7 +852,7 @@ void MainWidget::replace_content(bool is_common)
if (ui->rbReplaceSelect->isChecked()) { if (ui->rbReplaceSelect->isChecked()) {
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
if (indexList.size() < 1) { if (indexList.size() < 1) {
CUtil::msg(this, u8"无选择数据"); CUtil::msg(this, "无选择数据");
return; return;
} }
get_related_elements(vec, AREA_SELECT); get_related_elements(vec, AREA_SELECT);
@@ -868,7 +868,7 @@ void MainWidget::replace_content(bool is_common)
get_related_elements(vec, AREA_CUR_PAGE); get_related_elements(vec, AREA_CUR_PAGE);
handle(vec, false); handle(vec, false);
} else { } else {
if (!CUtil::affirm(this, u8"确认", u8"确认进行全局替换吗?")) { if (!CUtil::affirm(this, "确认", "确认进行全局替换吗?")) {
return; return;
} }
get_related_elements(vec, AREA_ALL); get_related_elements(vec, AREA_ALL);
@@ -952,9 +952,9 @@ void MainWidget::backup_file()
QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss"); QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss");
if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) { if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) {
CUtil::msg(this, u8"备份失败。"); CUtil::msg(this, "备份失败。");
} else { } else {
CUtil::msg(this, u8"备份完成。"); CUtil::msg(this, "备份完成。");
} }
} }
@@ -995,7 +995,7 @@ void MainWidget::unit_change()
} }
std::string unit = ui->cbUnit->currentText().toStdString(); std::string unit = ui->cbUnit->currentText().toStdString();
if (!xml_.get_all_elements(vec_, unit)) { if (!xml_.get_all_elements(vec_, unit)) {
CUtil::msg(this, u8"获取单元信息失败:" + QString::fromStdString(unit)); CUtil::msg(this, "获取单元信息失败:" + QString::fromStdString(unit));
return; return;
} }
push_content(vec_); push_content(vec_);
@@ -1016,15 +1016,15 @@ bool MainWidget::format_xml()
return false; return false;
} }
if (!CUtil::affirm(this, u8"确认", u8"重排版内容将会覆盖源文件,请确认是否需要备份,继续?")) { if (!CUtil::affirm(this, "确认", "重排版内容将会覆盖源文件,请确认是否需要备份,继续?")) {
return false; return false;
} }
if (!xml_.handle_save(xml_path, set.values_)) { if (!xml_.handle_save(xml_path, set.values_)) {
CUtil::msg(this, u8"重排版内容失败"); CUtil::msg(this, "重排版内容失败");
return false; return false;
} }
CUtil::msg(this, u8"重排版内容结束"); CUtil::msg(this, "重排版内容结束");
return true; return true;
} }

View File

@@ -8,7 +8,7 @@ CGroupSetting::CGroupSetting(QWidget* parent, CGroupIni* oper) : QDialog(parent)
ini_opr_ = oper; ini_opr_ = oper;
ui->setupUi(this); ui->setupUi(this);
setWindowTitle(u8"配置编辑"); setWindowTitle("配置编辑");
connect(ui->btnAddConfig, &QPushButton::clicked, this, [&]() { add_item(); }); connect(ui->btnAddConfig, &QPushButton::clicked, this, [&]() { add_item(); });
connect(ui->btnDelConfig, &QPushButton::clicked, this, [&]() { del_item(); }); connect(ui->btnDelConfig, &QPushButton::clicked, this, [&]() { del_item(); });
@@ -29,13 +29,13 @@ void CGroupSetting::showEvent(QShowEvent* event)
void CGroupSetting::add_item() void CGroupSetting::add_item()
{ {
if (!CUtil::affirm(this, u8"确认", u8"确认添加/更新吗?")) { if (!CUtil::affirm(this, "确认", "确认添加/更新吗?")) {
return; return;
} }
QString config_name = ui->edConfigName->text(); QString config_name = ui->edConfigName->text();
config_name = config_name.trimmed(); config_name = config_name.trimmed();
if (config_name.isEmpty()) { if (config_name.isEmpty()) {
CUtil::msg(this, u8"配置名为空"); CUtil::msg(this, "配置名为空");
return; return;
} }
// 验证重名 // 验证重名
@@ -52,28 +52,28 @@ void CGroupSetting::add_item()
gp.is_same = ui->chbIsSame->isChecked(); gp.is_same = ui->chbIsSame->isChecked();
if (!ini_opr_->add_item(gp)) { if (!ini_opr_->add_item(gp)) {
CUtil::msg(this, u8"失败"); CUtil::msg(this, "失败");
return; return;
} }
update_ini(QString::fromStdString(gp.name)); update_ini(QString::fromStdString(gp.name));
CUtil::msg(this, u8"成功"); CUtil::msg(this, "成功");
} }
void CGroupSetting::del_item() void CGroupSetting::del_item()
{ {
if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) { if (!CUtil::affirm(this, "确认", "确认删除吗?")) {
return; return;
} }
std::string key = ui->cbConfig->currentText().toStdString(); std::string key = ui->cbConfig->currentText().toStdString();
if (!ini_opr_->del_item(key)) { if (!ini_opr_->del_item(key)) {
CUtil::msg(this, u8"失败"); CUtil::msg(this, "失败");
return; return;
} }
// 删除成功之后要更新 cb // 删除成功之后要更新 cb
update_ini(""); update_ini("");
CUtil::msg(this, u8"成功"); CUtil::msg(this, "成功");
} }
void CGroupSetting::set_ui(const OneGroupIni& gp) void CGroupSetting::set_ui(const OneGroupIni& gp)
@@ -102,7 +102,7 @@ void CGroupSetting::change_ini()
OneGroupIni gp; OneGroupIni gp;
gp.name = name_key.toStdString(); gp.name = name_key.toStdString();
if (!ini_opr_->get_item(gp)) { if (!ini_opr_->get_item(gp)) {
CUtil::msg(this, u8"加载" + ui->cbConfig->currentText() + "失败"); CUtil::msg(this, "加载" + ui->cbConfig->currentText() + "失败");
} else { } else {
set_ui(gp); set_ui(gp);
} }
@@ -134,7 +134,7 @@ void CGroupSetting::update_ini(const QString& cur_key)
OneGroupIni gp; OneGroupIni gp;
gp.name = ui->cbConfig->currentText().toStdString(); gp.name = ui->cbConfig->currentText().toStdString();
if (!ini_opr_->get_item(gp)) { if (!ini_opr_->get_item(gp)) {
CUtil::msg(this, u8"加载" + ui->cbConfig->currentText() + "失败"); CUtil::msg(this, "加载" + ui->cbConfig->currentText() + "失败");
} else { } else {
set_ui(gp); set_ui(gp);
} }

View File

@@ -15,7 +15,7 @@ QFormatSet::QFormatSet(QWidget* parent) : QDialog(parent), ui(new Ui::QFormatSet
}); });
connect(ui->cbAll, &QCheckBox::toggled, this, [&]() { check_select(); }); connect(ui->cbAll, &QCheckBox::toggled, this, [&]() { check_select(); });
connect(ui->btnSelect, &QPushButton::clicked, this, [&]() { connect(ui->btnSelect, &QPushButton::clicked, this, [&]() {
QString file = CUtil::select_file(this, u8"请选择xml文件", u8"XML(*.xml);;所有文件 (*)"); QString file = CUtil::select_file(this, "请选择xml文件", "XML(*.xml);;所有文件 (*)");
if (file.isEmpty()) { if (file.isEmpty()) {
return; return;
} }

View File

@@ -7,8 +7,6 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
setlocale(LC_ALL, ".utf-8");
SingleApplication a(argc, argv); SingleApplication a(argc, argv);
#ifdef _WIN32 #ifdef _WIN32
@@ -18,10 +16,10 @@ int main(int argc, char *argv[])
// a.setStyle("windows"); // a.setStyle("windows");
#endif #endif
// QFile file(":/QtTheme/theme/Flat/Light/Blue/Pink.qss"); QFile file(":/QtTheme/theme/Flat/Light/Blue/Pink.qss");
// if (file.open(QFile::ReadOnly)) { if (file.open(QFile::ReadOnly)) {
// a.setStyleSheet(file.readAll()); a.setStyleSheet(file.readAll());
// } }
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

View File

@@ -9,7 +9,7 @@
void CUtil::msg(QWidget* parent, const QString& content) void CUtil::msg(QWidget* parent, const QString& content)
{ {
QMessageBox::information(parent, u8"提示", content); QMessageBox::information(parent, "提示", content);
} }
bool CUtil::affirm(QWidget* parent, const QString& titile, bool CUtil::affirm(QWidget* parent, const QString& titile,

View File

@@ -7,7 +7,7 @@ CAttributeEdit::CAttributeEdit(QWidget* parent)
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowTitle(u8"属性编辑"); setWindowTitle("属性编辑");
setMinimumSize(600, 760); setMinimumSize(600, 760);
connect(ui->btnOk, &QPushButton::clicked, this, &CAttributeEdit::handle_ok); connect(ui->btnOk, &QPushButton::clicked, this, &CAttributeEdit::handle_ok);
@@ -84,7 +84,7 @@ void CAttributeEdit::init_table()
{ {
if (table_ == nullptr) { if (table_ == nullptr) {
QStringList list; QStringList list;
list << u8"属性" << u8""; list << "属性" << "";
table_ = new QTableWidget(); table_ = new QTableWidget();
table_->setColumnCount(list.size()); table_->setColumnCount(list.size());
table_->setHorizontalHeaderLabels(list); table_->setHorizontalHeaderLabels(list);

View File

@@ -15,7 +15,7 @@ CDataEdit::CDataEdit(QWidget* parent) : QDialog(parent), ui(new Ui::CDataEdit)
ui->setupUi(this); ui->setupUi(this);
// setMinimumWidth(600); // setMinimumWidth(600);
setWindowTitle(u8"源编辑"); setWindowTitle("源编辑");
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); }); connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); });
connect(ui->btnReplace, &QPushButton::clicked, this, [&]() { replace(); }); connect(ui->btnReplace, &QPushButton::clicked, this, [&]() { replace(); });
@@ -48,17 +48,17 @@ void CDataEdit::import_data()
is_import_sucess_ = false; is_import_sucess_ = false;
QString data = ui->plainTextEdit->toPlainText(); QString data = ui->plainTextEdit->toPlainText();
if (data.trimmed().isEmpty()) { if (data.trimmed().isEmpty()) {
CUtil::msg(this, u8"内容为空"); CUtil::msg(this, "内容为空");
return; return;
} }
if (xml_opr_ == nullptr) { if (xml_opr_ == nullptr) {
CUtil::msg(this, u8"xml_opr无实例。"); CUtil::msg(this, "xml_opr无实例。");
return; return;
} }
if (!CUtil::affirm(this, u8"提示", if (!CUtil::affirm(this, "提示",
u8"如果出现重复的 key 将跳过,继续吗?")) { "如果出现重复的 key 将跳过,继续吗?")) {
return; return;
} }
@@ -70,7 +70,7 @@ void CDataEdit::import_data()
continue; continue;
} }
if (!xml_opr_->check_same_struct(item.toStdString())) { if (!xml_opr_->check_same_struct(item.toStdString())) {
CUtil::msg(this, u8"不是合法的xml语句或者与现有结构不一致。"); CUtil::msg(this, "不是合法的xml语句或者与现有结构不一致。");
return; return;
} }
valid_data.push_back(item.toStdString()); valid_data.push_back(item.toStdString());
@@ -78,10 +78,10 @@ void CDataEdit::import_data()
auto task_count = valid_data.size(); auto task_count = valid_data.size();
std::size_t success_count{}; std::size_t success_count{};
if (!xml_opr_->import_newer_data(valid_data, success_count)) { if (!xml_opr_->import_newer_data(valid_data, success_count)) {
CUtil::msg(this, u8"导入失败。"); CUtil::msg(this, "导入失败。");
return; return;
} }
QString info = QString(u8"需要导入 %1 条数据,成功导入 %2 条。") QString info = QString("需要导入 %1 条数据,成功导入 %2 条。")
.arg(task_count) .arg(task_count)
.arg(success_count); .arg(success_count);
CUtil::msg(this, info); CUtil::msg(this, info);
@@ -112,7 +112,7 @@ void CDataEdit::show_before()
void CDataEdit::replace() void CDataEdit::replace()
{ {
if (ui->edPre->text().isEmpty()) { if (ui->edPre->text().isEmpty()) {
CUtil::msg(this, u8"未填入内容。"); CUtil::msg(this, "未填入内容。");
return; return;
} }
QString data = ui->plainTextEdit->toPlainText(); QString data = ui->plainTextEdit->toPlainText();