func:完成增删与界面的匹配。
This commit is contained in:
parent
41713baede
commit
a640f149f5
@ -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;
|
||||
}
|
||||
|
||||
|
24
MainWidget.h
24
MainWidget.h
@ -28,19 +28,21 @@ public:
|
||||
void push_content(const std::vector<Element_t*>& eles, std::size_t page = 1);
|
||||
|
||||
private:
|
||||
void read();
|
||||
void search();
|
||||
void item_changed_handle(QTableWidgetItem* item);
|
||||
void save();
|
||||
void copy_select_line();
|
||||
void del_select_line();
|
||||
Element_t* get_current_select_key();
|
||||
void reset();
|
||||
void judge_btn_page();
|
||||
void copy_key();
|
||||
void read();
|
||||
void search();
|
||||
void item_changed_handle(QTableWidgetItem* item);
|
||||
void save();
|
||||
void copy_select_line();
|
||||
void insert_one_line(Element_t* ele, int row);
|
||||
void del_select_line();
|
||||
void reset();
|
||||
void judge_btn_page();
|
||||
void copy_key();
|
||||
|
||||
private:
|
||||
Element_t* get_element_bykey(const QString& key);
|
||||
Element_t* get_element_bykey(const QString& key);
|
||||
Element_t* get_current_select_key();
|
||||
QTableWidgetItem* get_current_select_item();
|
||||
|
||||
private:
|
||||
Ui::MainWidget* ui;
|
||||
|
@ -148,6 +148,13 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnExit">
|
||||
<property name="text">
|
||||
<string>退出</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
|
Loading…
x
Reference in New Issue
Block a user