Russian Qt Forum
Октябрь 02, 2024, 15:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование приватных классов  (Прочитано 2305 раз)
CL0NE
Гость
« : Май 10, 2010, 18:23 »

Прочитав эту тему и здесь о  данном явлении, а также посмотрев сырцы, решил не подымать выше упомянутую тему, а создать новую.
Собсно как все начиналось: решил я использовать QDirIterator. Удобный класс, поддерживает фильтрацию имен файлов, стандартные флаги фильтрации (файлы-папки), но нужно было немного расширить существующие возможности - добавить список (под)каталогов, исключенных из вывода. Поглядев документацию, не нашел ничего, что можно было бы простым наследованием решить (конечно, можно уже пути, полученные от класса фильтровать, но зачем тратить время на обработку всего дерева?), и влез в исходники, где и столкнулся с данным явлением (всмысле, с приватным классом).
Возможно ли расширить функционал DirIteratorPrivate и как это сделать лучше всего (судя по всему, как-то переопределить функции pushDirectory или matchesFilters).

просьба сильно не бить Улыбающийся с Qt знаком по книге Шлее (окромя QtScript), вот только С++ за два года обучения C#, PHP, Java подзабылся...
« Последнее редактирование: Май 10, 2010, 18:26 от CL0NE » Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Май 10, 2010, 19:17 »

Ничего переопределить ты не сможешь. Выход один - изменение оригинального исходного кода. Соответственно, согласно лицензии(если не commercial) ты должен открыть свой код. Но на самом деле, можешь не открывать - тебя за за это никто не убьет Улыбающийся а вообще наверное придется создать 2 файлика .h и .cpp в своем проекте и скопировать туда код, где его изменить(лучше классы назвать по-другому). Другой более извращенческий(на мой взгляд) - это изменить код класса QDirIteratorPrivate и откомпилить QtCore4.dll.. лучше не делай этого Улыбающийся
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
CL0NE
Гость
« Ответ #2 : Май 10, 2010, 21:01 »

Цитировать
а вообще наверное придется создать 2 файлика .h и .cpp в своем проекте и скопировать туда код, где его изменить(лучше классы назвать по-другому).
подобная попытка имела место быть Улыбающийся Да вот только хитро все сделано. QDirIteratorPrivate использует один приватный метод QAbstractFileEngineIterator ибо является френдом. Потому назвать по-другому класс не получилось.

Цитировать
Другой более извращенческий(на мой взгляд) - это изменить код класса QDirIteratorPrivate и откомпилить QtCore4.dll..
либо это, либо самому попытаться написать класс с подобной функциональностью.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.792 секунд. Запросов: 22.