2012-03-28 2 views
0

QStandarItemModel에서 popuplated QTableView에서 사용자 항목을 실행 취소하거나 되돌릴 수 있습니까? 나는 데이터의 유효성을 검사 핸들러와 dataChanged 신호 연결 한 QTableView QStandardItemModel 사용자 항목 되돌리기 또는 실행 취소

...

connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex))); 

...하지만 경우에 사용자 항목은 내가 되돌 리거나 이전 값으로 사용자 항목을 취소하려면 잘못 항목의

QAbstractItemModel에서 상속받은 revert() 멤버에 대해 읽었지만 정확히 어떻게 작동하는지 이해할 수 없습니다. 문서에 "캐시 된 정보를 버려야한다는 것을 모델에 알리십시오." 그러나 사용자가 입력 한 데이터가 캐싱되어 있는지 아니면 이미 모델에 저장되어 있는지 여부는 확실하지 않습니다. 내가하려고 어쨌든 경우

...

model->revert(); 

이 ... 잘못된 사용자 항목 후에는 작동하지 않습니다.

미리 감사드립니다.

답변

2

Qt의 undo framework을 확인하십시오. 문서의 도입은 말한다 :

Qt의 취소 프레임 워크

응용 프로그램에서/다시 실행 기능을 취소 구현하기위한 Command Pattern, 의 구현입니다.

명령 패턴은 명령 개체의 인스턴스를 작성하여 응용 프로그램의 모든 편집을 수행한다는 아이디어를 기반으로합니다. 명령 개체는 문서에 변경 내용을 적용하고 스택에 저장됩니다. 또한 각 명령은 에 대한 변경 사항을 실행 취소하는 방법을 알고 문서를 이전 상태로 되돌립니다. 응용 프로그램이 명령 개체를 사용하여 문서의 상태를 변경하는 경우에만 을 스택 아래로 이동하고 차례대로 각 명령에서 실행 취소를 호출하여 일련의 명령을 실행 취소 할 수 있습니다. 스택 을 위쪽으로 가로 지르고 각 명령에서 재실행을 호출하여 일련의 명령을 다시 실행하는 것도 가능합니다 ( ).

+0

고맙습니다. – Fracu

+3

이것은 대답을 찾는 방법에 대한 제안보다 적은 답변입니다. – neuronet

관련 문제