瀏覽代碼

修复列表的删除崩溃bug

Menglan_Luo 2 年之前
父節點
當前提交
2fa9458983
共有 3 個文件被更改,包括 15 次插入11 次删除
  1. 2 2
      pool.cpp
  2. 12 8
      statusConfig.cpp
  3. 1 1
      statusEffectAnim.cpp

+ 2 - 2
pool.cpp

@@ -176,8 +176,8 @@ void Pool::on_pushButton_delContainer_clicked()
     QMessageBox::StandardButton reply = QMessageBox::question(this,"删除容器","确定要删除此容器吗?");
     if(reply == QMessageBox::Yes){
         QString delPoolName = ui->listWidget_pool->currentItem()->text();
-        DataManager::getInstance()->delPool(currentElem,index);
         delete ui->listWidget_pool->takeItem(index);
+        DataManager::getInstance()->delPool(currentElem,index);
         //子元素下拉列表删除可选项
         QVector<ElemPropertyData::ChildElem> childTable = DataManager::getInstance()->getChildElemTable(currentElem);
         int rowNum = ui->tableWidget_childElem->rowCount();
@@ -269,8 +269,8 @@ void Pool::on_pushButton_delKey_clicked()
     if(poolIndex == -1 && row == -1) return;
     QMessageBox::StandardButton reply = QMessageBox::question(this,"删除键值","确定要删除此键值吗?");
     if(reply == QMessageBox::Yes){
-        DataManager::getInstance()->delKey(currentElem,poolIndex,row);
         ui->tableWidget_containerPool->removeRow(row);
+        DataManager::getInstance()->delKey(currentElem,poolIndex,row);
     }
 }
 

+ 12 - 8
statusConfig.cpp

@@ -132,7 +132,10 @@ void StatusConfig::setUi(QString elem)
     currentElem = elem;
     //设置状态配置界面
     ui->listWidget_status->clear();
-    ui->listWidget_status->addItems(DataManager::getInstance()->getList(elem,DataManager::ListType::StatusVal));
+    for(const QString &i:DataManager::getInstance()->getList(elem,DataManager::ListType::StatusVal)){
+        QListWidgetItem* item = new QListWidgetItem(i);
+        ui->listWidget_status->addItem(item);
+    }
     //切换元素时状态尚未选中,先清除事件表格内容
     int rowCnt = ui->tableWidget_event->rowCount();
     for(int i=0;i<rowCnt;i++){
@@ -271,7 +274,8 @@ void StatusConfig::on_pushButton_genTemp_clicked()
     if(ui->listWidget_status->count() > 0) return;
     int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
     for(int i=0;i<maxLayer;i++){
-        ui->listWidget_status->addItem(QString::number(i));
+        QListWidgetItem* item = new QListWidgetItem(QString::number(i));
+        ui->listWidget_status->addItem(item);
         DataManager::getInstance()->addStatus(currentElem,QString::number(i));
     }
 }
@@ -288,13 +292,13 @@ void StatusConfig::on_pushButton_addStatus_clicked()
         }
     }
     if(!statusName.isEmpty()){
-        ui->listWidget_status->addItem(statusName);
+        QListWidgetItem* item = new QListWidgetItem(statusName);
+        ui->listWidget_status->addItem(item);
         ElemPropertyData::StatusConfig status(statusName);
         DataManager::getInstance()->addStatus(currentElem,statusName);
     }
 }
 
-//TODO: 删除状态值时出现数组越界
 ///删除状态
 void StatusConfig::on_pushButton_delStatus_clicked()
 {
@@ -302,8 +306,8 @@ void StatusConfig::on_pushButton_delStatus_clicked()
     if(row == -1) return;
     QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此状态吗?");
     if(reply == QMessageBox::Yes){
+        delete ui->listWidget_status->takeItem(row);
         DataManager::getInstance()->delStatus(currentElem,row);
-        delete ui->listWidget_status->takeItem(ui->listWidget_status->currentRow());
     }
 }
 
@@ -315,7 +319,6 @@ void StatusConfig::on_listWidget_status_itemDoubleClicked(QListWidgetItem *item)
     newName.exec();
     QString name = newName.getNewName();
     if(!name.isEmpty()){
-        //TODO: 检查状态值合法性并转移数据
         bool isNum;double tmp = name.toDouble(&isNum);
         int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
         int statusNum = name.toInt();
@@ -455,8 +458,8 @@ void StatusConfig::on_pushButton_delEvent_clicked()
     if(statusIndex == -1 || row == -1) return;
     QMessageBox::StandardButton reply = QMessageBox::question(this,"删除事件","确定要删除此事件吗?");
     if(reply == QMessageBox::Yes){
-        DataManager::getInstance()->delEvent(currentElem,statusIndex,row);
         ui->tableWidget_event->removeRow(row);
+        DataManager::getInstance()->delEvent(currentElem,statusIndex,row);
     }
 }
 
@@ -482,7 +485,8 @@ void StatusConfig::on_pushButton_copyStatus_clicked()
     }
     if(!statusName.isEmpty()){
         DataManager::getInstance()->copyStatus(currentElem,statusName,curRow);
-        ui->listWidget_status->addItem(statusName);
+        QListWidgetItem* item = new QListWidgetItem(statusName);
+        ui->listWidget_status->addItem(item);
     }
 }
 

+ 1 - 1
statusEffectAnim.cpp

@@ -105,8 +105,8 @@ void StatusEffectAnim::on_pushButton_delAnimation_clicked()
     if(reply == QMessageBox::Yes){
         int curRow = ui->tableWidget_animation->currentRow();
         QString animName = ui->tableWidget_animation->item(curRow,0)->text();
-        DataManager::getInstance()->delAnim(currentElem,curRow);
         ui->tableWidget_animation->removeRow(curRow);
+        DataManager::getInstance()->delAnim(currentElem,curRow);
     }
 }