2010-04-11 4 views
3

다른 파일 시스템과 파일 엔진 처리기를 사용해야하는 응용 프로그램을 작성 중이며 qt의 기본 시스템 핸들러는 사용하지 않습니다. 기본적으로 qt의 파일 대화 상자를 사용하지만 대화 상자 내에서 파일 및 디렉토리 작업과 관련된 모든 작업을 처리하는 기본 파일 시스템 처리기 (예 : 부스트 파일 시스템 라이브러리를 사용하여 작성)가 있어야합니다. 일부 작업을 처리하는 사용자 정의 파일 엔진을 이미 작성했지만 Qt의 파일 시스템 모델과 파일 시스템 감시자 엔진이 필요합니다.이 사용자 지정 파일 엔진에 신호를 전송해야합니다. 내가 기진 맥진 한 일을하고있는 것처럼 보입니다. 나는 올바른 방향으로 향하고 있는가?다른 파일 시스템 라이브러리로 Qt 파일 대화 상자 구현하기 (부스트)

구현할 수있는 다른 간단한 방법이 있습니까? 누구든지 진행 방법에 대해 나에게 어떤 생각을 줄 수 있습니까? 나는 프록시 모델을 조사 할 생각 이었지만 작동하는지 확실하지 않았다.

미리 도움을 청하십시오.

답변

1

프록시 모델은 기본 모델에 포함 된 데이터로 작동하므로 완전히 새로운 모델 컨텐츠를 얻는 데 사용할 수 없습니다.

이러한 작업을 수행하는 확실한 방법은 QFileDialog의 모델 종류를 조사하고 모델을 교체하는 것입니다.

아마도 새 파일 엔진과 관련하여 QFileDialog에서 모델을 복사 한 다음 propxy 모델을 다소 이상한 방식으로 사용할 수 있습니다. 설정하면 (QFileDialog의 기본 모델에 연결됩니다. 다른 방법으로 액세스 할 수 없습니다.) 대신 프록시의 setSourceModel()을 사용하여 모델을 설정하십시오.

또는 QFileDialog 코드를 가져 와서 파일 시스템 인식 코드를 사용자 코드로 바꿀 수 있습니다. 그러나 그것은 냄새가 좋지 않다고 생각합니다. 그리고 그것이 합법적인지 그리고 면허로 인해 어떤 문제가 발생할 수 있는지, 그리고 그와 같은 것이 있는지 나는 알지 못합니다.

+0

답장을 보내 주셔서 감사합니다. QFileDialog 코드를 가져 와서 수정 한 것과 같은 방향으로 생각하고 있었지만 라이센스 문제 때문에 올바르지 않은 것 같습니다. 또한 제안한대로 프록시 모델은 QDir에 의해 만들어진 일부 호출이 QFileSystemModel 내에서 호출되므로 아무 것도 제공하지 않습니다. 이 경우 유일한 해결책은 완전히 새로운 모델을 작성한 다음 QFileDialog와 유사한 뷰를 작성하는 것입니다.이 뷰는 기껏해야 사소한 것입니다. – knight

+0

나는 이것에 대한 간단한 해결책이 있어야한다고 생각한다. 내 사용자 지정 파일 엔진에 Qdir 및 QFileEnginePrivate의 기능 중 일부를 제공해야 할 수도 있습니다. 그런 다음 사용자 지정 엔진을 통한 파일 액세스에 대해 동일한 모델보기 쌍을 계속 사용할 수 있습니다. 나는 내가 생각하는 것이 효과가 있을지, 그렇지 않든, 또는 그것이 의미가있는 것인지 정말로 확신하지 못한다. – knight

+0

아마도 QFileSystemModel 만 다시 구현 한 다음 proxymodel의 setSourceModel() 메소드를 사용하여 QFileDialog에 모델을 연결해야 할 필요가 있을까요? –

0

QAbstractFileEngine 등에서이 작업을 수행하는 것은 가능했지만 Qt 4.6에서 QDir을 변경하면 다소 문제가 발생했습니다. 내 경험에 대해서는 Qt bug 10333을 참조하십시오.

관련 문제