func:基本添加复制功能,无GUI。

This commit is contained in:
2024-05-15 17:34:07 +08:00
parent 8b794417ba
commit 950949c130
8 changed files with 158 additions and 40 deletions

View File

@@ -15,10 +15,14 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
ui->edStatus->setEnabled(false);
ui->btnSave->setEnabled(false);
ui->btnCopySelectLine->setEnabled(false);
ui->btnDelSelectLine->setEnabled(false);
connect(ui->btnRead, &QPushButton::clicked, this, [&]() { read(); });
connect(ui->btnSearch, &QPushButton::clicked, this, [&]() { search(); });
connect(ui->btnSave, &QPushButton::clicked, this, [&]() { save(); });
connect(ui->btnCopySelectLine, &QPushButton::clicked, this, [&]() { copy_select_line(); });
connect(ui->btnDelSelectLine, &QPushButton::clicked, this, [&]() { del_select_line(); });
}
MainWidget::~MainWidget()
@@ -51,6 +55,8 @@ void MainWidget::generate_table_widget()
tab_widget_->setColumnCount(list.size());
tab_widget_->setHorizontalHeaderLabels(list);
tab_widget_->setSelectionBehavior(QAbstractItemView::SelectRows);
tab_widget_->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
for (auto i = 0; i < keys.size(); ++i) {
tab_widget_->setColumnWidth(i, width_[i]);
@@ -109,6 +115,8 @@ void MainWidget::read()
ui->btnRead->setEnabled(false);
ui->btnSave->setEnabled(true);
ui->btnCopySelectLine->setEnabled(true);
ui->btnDelSelectLine->setEnabled(true);
}
void MainWidget::search()
@@ -146,24 +154,72 @@ void MainWidget::item_changed_handle(QTableWidgetItem* item)
int row = item->row();
int col = item->column();
QString xml_key = tab_widget_->item(row, 0)->text();
for (const auto& ele : current_) {
const char* data = ele->Attribute(keys_[0].c_str());
QString qdata(data);
if (qdata != xml_key) {
continue;
}
ele->SetAttribute(keys_[col].c_str(), item->text().toLocal8Bit().constData());
break;
QString xml_key = tab_widget_->item(row, 0)->text();
element* result = get_element_bykey(xml_key);
if (result == nullptr) {
return;
}
result->SetAttribute(keys_[col].c_str(), item->text().toLocal8Bit().constData());
}
void MainWidget::save()
{
if (xml_.save()) {
QMessageBox::information(this, u8"提示", u8"保存成功");
}
else {
QMessageBox::information(this, u8"提示", u8"保存失败");
CUtil::msg(this, u8"保存成功");
} else {
CUtil::msg(this, u8"保存失败");
}
}
void MainWidget::copy_select_line()
{
element* target = get_current_select_key();
if (target == nullptr) {
return;
}
element* newer = xml_.copy_element(target);
xml_.insert_brother_node(target, newer);
// TODO: 添加到界面
CUtil::msg(this, u8"已复制");
}
void MainWidget::del_select_line()
{
element* target = get_current_select_key();
if (target == nullptr) {
return;
}
}
element* MainWidget::get_current_select_key()
{
element* ret = nullptr;
if (tab_widget_ == nullptr) {
return ret;
}
QList<QTableWidgetItem*> selectedItems = tab_widget_->selectedItems();
if (selectedItems.size() < 1) {
CUtil::msg(this, u8"没有选中数据");
return ret;
}
QTableWidgetItem* item = selectedItems[0];
int row = item->row();
ret = get_element_bykey(item->text());
return ret;
}
tinyxml2::XMLElement* MainWidget::get_element_bykey(const QString& key)
{
element* ret = nullptr;
for (const auto& ele : current_) {
const char* data = ele->Attribute(keys_[0].c_str());
QString qdata(data);
if (qdata != key) {
continue;
}
ret = ele;
break;
}
return ret;
}