Реализация Qt File Dialog с другой библиотекой файловой системы (повышение) - PullRequest
3 голосов
/ 11 апреля 2010

Я пишу приложение, которое требует от меня использования другой файловой системы и обработчиков файлового движка, а не используемых по умолчанию qt. По сути, я хочу использовать диалоговое окно файлов qt, но иметь основной обработчик файловой системы (например, созданный с использованием библиотеки файловой системы boost), обрабатывающий все операции, связанные с операциями с файлами и каталогами в этом диалоге. Я уже написал пользовательский файловый движок, который обрабатывает некоторые операции, но теперь я застрял с моделью файловой системы Qt и механизмом наблюдения за файловой системой, поскольку мне нужно передать сигналы для этого пользовательского файлового механизма. Похоже, у меня впереди непростая задача. Я иду в правильном направлении?

Есть ли еще какой-нибудь более простой способ, которым я мог бы это реализовать? Может ли кто-нибудь дать мне представление о том, как поступить. Я думал о поиске моделей прокси, но не уверен, что это сработает.

Заранее спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 13 апреля 2010

Прокси-модель работает с данными, содержащимися в базовой модели, поэтому вы не можете использовать ее для получения совершенно нового содержимого модели.

Очевидный способ решения таких задач - выяснить, какая модель есть в QFileDialog, и затем заменить модель.

Вы, возможно, можете скопировать модель из QFileDialog, конечно, относительно вашего нового файлового движка, а затем использовать модель propxy несколько странным образом: установить ее (она подключится к базовой модели QFileDialog, не используйте другой способ), а затем используйте setSourceModel () вашего прокси-сервера для установки модели.

Или вы можете просто получить код QFileDialog и заменить код в файловой системе своим. Но, кажется, пахнет плохо, и я не знаю, законно ли это и с какими проблемами вы можете столкнуться из-за лицензий и тому подобного.

0 голосов
/ 16 мая 2010

Раньше это можно было сделать с помощью QAbstractFileEngine и т. Д., Но изменения в QDir в Qt 4.6 несколько его сломали - см. Ошибка Qt 10333 для моего опыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...