2014-12-17 4 views
0

저는 PyQt5를 처음 사용하기 때문에 QTableView를 사용하고 있습니다. 나는 후 successfuly .. 테 선택한 행을 삭제하는 방법을 알고 난 지금까지 ... 테이블없는 결과 (TableModel에의 순서로 &)에서 선택한 삭제 된 행의 삭제를 취소 할 호 알고 QTableView의 삭제 취소 행

을 많이 봤 행이 헤더 데이터를 기반으로 삭제 표시되어 있는지 알고 수 :이 방법은 데이터베이스에서 행을 다시 채 웁니다 및 플래그를 제거하지 않습니다

if self.items_Model.itemsModel.headerData(row.row(), QtCore.Qt.Vertical) == "!": 
    # self.items_Model.itemsModel.revertRow(row.row()) 
    self.items_Model.itemsModel.selectRow(row.row()) 

내가 revertRow (rowIndex에) 및 selectRow을 (시도)하지만, "!" 의미 - 내가 생각하기에 - 제출시 삭제 될 것입니다.

모든 도움을주십시오. 몇 번을 시도해도 ... 편집기를 종료하고 다시 실행 포함 후

답변

1

그것은 여기 아무도 내 질문에 해당하는 답변이 없습니다했다고 이상해 ...

은 ...

그 이전에 행을 반환 나타납니다 상태 -이 경우 "삭제 표시되지 않음"- "되돌리기"방법을 사용해야합니다. 하지만 "!" 삭제 취소 할 행의 포커스를 제거하지 않으면 다른 행을 선택할 수 있습니다.

이 내 삭제 방법의 전체 코드입니다 :

def _deleteSelectedRows(self): 
    select = self.mainForm.tblItems.selectionModel() 

    if select.hasSelection(): 
     selectedRows = select.selectedRows() 

     for r in selectedRows: 
      rowFlag = self.items_Model.itemsModel.headerData(r.row(), QtCore.Qt.Vertical) 
      if rowFlag == "!": 
       self.items_Model.itemsModel.revertRow(r.row()) 
      else: 
       self.items_Model._deleteRowByIndex(r.row())