func:完成增删与界面的匹配。
This commit is contained in:
@@ -32,6 +32,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
|
||||
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(); });
|
||||
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { QApplication::exit(0); });
|
||||
connect(ui->btnReset, &QPushButton::clicked, this, &MainWidget::reset);
|
||||
connect(ui->btnPagePre, &QPushButton::clicked, this, [&]() {
|
||||
unsigned int cur = ui->edCurPage->text().toUInt();
|
||||
@@ -128,17 +129,7 @@ void MainWidget::push_content(const std::vector<tinyxml2::XMLElement*>& eles, st
|
||||
for (auto p = (page - 1) * g_OnePage; p < all_size && p < max_show; ++p) {
|
||||
int row_cnt = tab_widget_->rowCount();
|
||||
tab_widget_->insertRow(row_cnt);
|
||||
for (auto i = 0; i < keys_.size(); ++i) {
|
||||
const char* data = eles[p]->Attribute(keys_[i].c_str());
|
||||
QTableWidgetItem* wgItem = new QTableWidgetItem();
|
||||
|
||||
if (i == 0) {
|
||||
wgItem->setFlags(wgItem->flags() & ~Qt::ItemIsEditable);
|
||||
}
|
||||
|
||||
wgItem->setText(QString(data));
|
||||
tab_widget_->setItem(row_cnt, i, wgItem);
|
||||
}
|
||||
insert_one_line(eles[p], row_cnt);
|
||||
}
|
||||
ui->edCurPage->setText(QString::number(page));
|
||||
cur_page_ = page;
|
||||
@@ -197,6 +188,8 @@ void MainWidget::search()
|
||||
{
|
||||
QString key = ui->edSearchKey->text().trimmed();
|
||||
if (key.isEmpty()) {
|
||||
current_ = vec_;
|
||||
push_content(current_);
|
||||
return;
|
||||
}
|
||||
if (tab_widget_ == nullptr) {
|
||||
@@ -250,7 +243,13 @@ void MainWidget::copy_select_line()
|
||||
if (!CUtil::affirm(this, u8"确认", u8"确认复制吗?")) {
|
||||
return;
|
||||
}
|
||||
Element_t* target = get_current_select_key();
|
||||
|
||||
QTableWidgetItem* cur_item = get_current_select_item();
|
||||
if (cur_item == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
Element_t* target = get_element_bykey(cur_item->text());
|
||||
if (target == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -270,7 +269,36 @@ void MainWidget::copy_select_line()
|
||||
xml_.key_value_to_element(newer, property);
|
||||
xml_.insert_brother_node(target, newer);
|
||||
|
||||
// TODO: 添加到界面
|
||||
tab_widget_->insertRow(cur_item->row() + 1);
|
||||
insert_one_line(newer, cur_item->row() + 1);
|
||||
|
||||
std::vector<Element_t*>::iterator it;
|
||||
for (it = vec_.begin(); it != vec_.end(); ++it) {
|
||||
if (*it == target) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
int df = it - vec_.begin() + 1;
|
||||
vec_.insert(vec_.begin() + df, newer);
|
||||
search();
|
||||
}
|
||||
|
||||
void MainWidget::insert_one_line(Element_t* ele, int row)
|
||||
{
|
||||
if (ele == nullptr) {
|
||||
return;
|
||||
}
|
||||
for (auto i = 0; i < keys_.size(); ++i) {
|
||||
const char* data = ele->Attribute(keys_[i].c_str());
|
||||
QTableWidgetItem* wgItem = new QTableWidgetItem();
|
||||
|
||||
if (i == 0) {
|
||||
wgItem->setFlags(wgItem->flags() & ~Qt::ItemIsEditable);
|
||||
}
|
||||
|
||||
wgItem->setText(QString(data));
|
||||
tab_widget_->setItem(row, i, wgItem);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWidget::del_select_line()
|
||||
@@ -278,18 +306,43 @@ void MainWidget::del_select_line()
|
||||
if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) {
|
||||
return;
|
||||
}
|
||||
Element_t* target = get_current_select_key();
|
||||
QTableWidgetItem* item = get_current_select_item();
|
||||
if (item == nullptr) {
|
||||
return;
|
||||
}
|
||||
Element_t* target = get_element_bykey(item->text());
|
||||
if (target == nullptr) {
|
||||
return;
|
||||
}
|
||||
xml_.del_element(target);
|
||||
|
||||
// TODO: 添加到界面
|
||||
tab_widget_->removeRow(item->row());
|
||||
|
||||
std::vector<Element_t*>::iterator it;
|
||||
for (it = vec_.begin(); it != vec_.end(); ++it) {
|
||||
if (*it == target) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
vec_.erase(it);
|
||||
search();
|
||||
}
|
||||
|
||||
Element_t* MainWidget::get_current_select_key()
|
||||
{
|
||||
Element_t* ret = nullptr;
|
||||
Element_t* ret = nullptr;
|
||||
QTableWidgetItem* item = get_current_select_item();
|
||||
if (item == nullptr) {
|
||||
return ret;
|
||||
}
|
||||
ret = get_element_bykey(item->text());
|
||||
return ret;
|
||||
}
|
||||
|
||||
QTableWidgetItem* MainWidget::get_current_select_item()
|
||||
{
|
||||
QTableWidgetItem* ret = nullptr;
|
||||
if (tab_widget_ == nullptr) {
|
||||
return ret;
|
||||
}
|
||||
@@ -298,9 +351,7 @@ Element_t* MainWidget::get_current_select_key()
|
||||
CUtil::msg(this, u8"没有选中数据");
|
||||
return ret;
|
||||
}
|
||||
QTableWidgetItem* item = selectedItems[0];
|
||||
int row = item->row();
|
||||
ret = get_element_bykey(item->text());
|
||||
ret = selectedItems[0];
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user