| 384 | } |
| 385 | |
| 386 | void DataView::del() { |
| 387 | |
| 388 | if(_type != KEY_STRING && |
| 389 | _type != KEY_HASH && |
| 390 | _type != KEY_SET && |
| 391 | _type != KEY_ZSET && |
| 392 | _type != KEY_LIST) |
| 393 | return; |
| 394 | |
| 395 | if(_itemTableModel->rowCount() <= 0) { |
| 396 | QMessageBox::critical(this, tr("错误"), tr("无数据行需要删除!")); |
| 397 | return; |
| 398 | } |
| 399 | |
| 400 | // 通过_view去获取被选中的部分的数据model |
| 401 | QItemSelectionModel *selectModel = _tableView->selectionModel(); |
| 402 | // 通过选中的数据结构,获取这些格子的ModelIndex |
| 403 | QModelIndexList selectList = selectModel->selectedIndexes(); |
| 404 | QVector<ValueTableItem *> delRow; |
| 405 | |
| 406 | if(selectList.size() <= 0) { |
| 407 | QMessageBox::critical(this, tr("提示"), tr("请先选择要删除的行!")); |
| 408 | return; |
| 409 | } |
| 410 | // 遍历这些格子,获取格子所在行,因为可能存在相同的行,所以要去重 |
| 411 | for(int i = 0; i < selectList.size(); ++i) { |
| 412 | QModelIndex index = selectList.at(i); |
| 413 | _tableSubItem = _itemTableModel->item(index.row()); |
| 414 | if(delRow.contains(_tableSubItem)) |
| 415 | continue; |
| 416 | delRow << _tableSubItem; |
| 417 | } |
| 418 | |
| 419 | while(delRow.size() > 0) { |
| 420 | _tableSubItem = delRow.at(0); |
| 421 | |
| 422 | _cmdMsg.init(); |
| 423 | _cmdMsg._dbIndex = _dbIndex; |
| 424 | _cmdMsg._clientIndex = _clientIndex; |
| 425 | if(_type == KEY_HASH) { |
| 426 | _cmdMsg._key = _key; |
| 427 | _cmdMsg._type = _type; |
| 428 | _cmdMsg._filed = _tableSubItem->text(); |
| 429 | _cmdMsg._operate = OPERATION_DELETE; |
| 430 | if(_vCmdMsg.contains(_cmdMsg)) { |
| 431 | _vCmdMsg.removeAll(_cmdMsg); |
| 432 | } |
| 433 | } else if(_type == KEY_SET || _type == KEY_ZSET) { |
| 434 | _cmdMsg._key = _key; |
| 435 | _cmdMsg._type = _type; |
| 436 | _cmdMsg._value = _tableSubItem->text(); |
| 437 | _cmdMsg._operate = OPERATION_DELETE; |
| 438 | } |
| 439 | _vCmdMsg << _cmdMsg; |
| 440 | |
| 441 | delRow.removeAll(_tableSubItem); |
| 442 | _itemTableModel->removeItem(_tableSubItem); |
| 443 | } |
no test coverage detected