2011-03-26 5 views
0

QAbstractTableModel에서 내 자신의 모델 클래스를 파생시킨 Qt 응용 프로그램이 있습니다. 필요한 메소드를 prescribed in the documentation으로 구현했습니다. removeRows 메서드를 호출하면 내보기에서 변경 내용이 올바른 것입니다. 제거하려는 행이 제거됩니다.QAbstractTableModel 파생 클래스에서 행을 삭제해도 작동하지 않는 이유는 무엇입니까?

하지만 어떻게 든 모델 작업은 모델에서 내 데이터를 저장하는 데 사용하는 QList로 전파되지 않는 것 같습니다. QList에 저장된 값을 디스크에 저장하면 removeRows에서 아무 것도 지우지 않은 것처럼 보입니다. 나는이 문제를 해결하려면 어떻게

bool MyModel::removeRows(int row, int count, const QModelIndex&) 
{ 
    beginRemoveRows(QModelIndex(), row, row + count - 1); 

    for (int i = 0; i < count; ++i) { 
     mMyQList.removeAt(row); 
    } 

    endRemoveRows(); 

    return true; 
} 

: 여기

내 removeRows 구현이 (가 프로그래밍 책 고급 Qt는의 코드를 기반으로 제 3 장, P.125)을 보이는 무엇인가? 내가 놓친 게 무엇입니까?

감사합니다.

+0

일부 코드는 게시해야합니다. 귀하의 removeRows() impl. –

+0

덕분에, 내 질문을 내 removeRows() 코드로 업데이트했습니다. –

답변

0

removeRows를 구현할 때 아무런 문제가 없다는 것이 판명되었습니다.

내 대화 상자를 표시하기 직전에 단위 테스트에서 save 메서드가 호출되었습니다. 대화 상자가 save 메소드를 전혀 호출하지 않았습니다.

변경 사항이보기에는 표시되고 출력 파일에는 표시되지 않는 것은 당연합니다 ...

1

Frank O.와 마찬가지로 일부 코드를 보지 않고도 어떤 일이 벌어지고 있는지 알기가 어렵습니다. 그러나 그것의 소리에서, 당신이 그들을 데리고 나오지 않았기 때문에 값들은 단순히 QList에서 제거되지 않았습니다. 위젯에서 Model/View 클래스로 이동할 때 직접해야합니다. 즉, removeRows() 메소드에서 '수동으로'QList에서 행을 제거해야합니다.

관련 문제