23 января 2008

QAbstractFileEngine и QDirModel.

Есть в QT замечательная штука под названием QAbstractFileEngine. В двух словах это заготовка для построения VFS в отдельно взятой программе. Вот цитата из документации:

A QAbstractFileEngine subclass can be created to do synchronous network I/O based file system operations, local file system operations, or to operate as a resource system to access file based resources.

Собственно все операции с файлами (open, read, write, etc) идут именно через потомка этого класса QFSFileEngine. Также этот механизм используется для доступа к ресурсам (да-да, тот самый QIcon(":/icons/icon.png")).

Таким образом создав 3 класса

class MyFileEngineHandler : public QAbstractFileEngineHandler
class MyFileEngine: public QAbstractFileEngine
class MyFileEngineIterator : public QAbstractFileEngineIterator

мы получаем собственноручно созданную VFS для наших нужд. В процессе экспериментов я создал VFS для отображения структуры базы данных.

sql:/localhost/dbname/table_name/columns.txt

Работает!

Теперь немного критики.
1) (не шибко критичное) Выбор реализации QAbstractFileEngine происходит чеерз цепочку QAbstractFileEngineHandler куда передаётся имя файла как QString. Вероятно было бы не плохо задействовать для этих целей QUrl.
2) QDirModel не поддерживает эту систему. Вернее обращение всегда происходит через QFSFileEngine. Таким образом без внедрения в QT решить проблему не получится.

Комментарии: 4:

Blogger CrackedMind сказал(а)...

А если не трудно, можно пример использования ? :)

7:09 AM  
Blogger CrackedMind сказал(а)...

А если не трудно, можно пример использования ? :)

7:10 AM  
Blogger CrackedMind сказал(а)...

А если не сложно, можно пример использования QAbstractFileEngine?

7:12 AM  
Anonymous Анонимный сказал(а)...

Да, примерчик плиз. Я тут именно из-за этого)

1:11 AM  

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница