Название: Customize Native QFileDialog Отправлено: Igors от Май 04, 2014, 09:05 Добрый день
Платформы OSX и Windows. На обоих есть возможность кастомизировать нативные файловые диалоги, т.е. добавить туда свои контролы. Сейчас так и сделано, но в связи с портированием на Cocoa (OSX) придется переписывать. Возиться с тонной нативного кода не хочется, понятно желание задействовать QFileDialog, но как быть с кастомными контролами? Использовать НЕнативный вариант нельзя, писать свой тоже, обязательное требование "только нативный". Что посоветуете? Спасибо Название: Re: Customize Native QFileDialog Отправлено: kambala от Май 04, 2014, 12:23 насколько я знаю, QFileDialog не позволяет легко и просто кастомизировать нативный диалог, так что от нативняка никуда не деться. для сохранения единого интерфейса можно попробовать так:
Код либо унаследоваться от QFileDialog и сделать метод customize членом. Название: Re: Customize Native QFileDialog Отправлено: Igors от Май 05, 2014, 11:41 насколько я знаю, QFileDialog не позволяет легко и просто кастомизировать нативный диалог, так что от нативняка никуда не деться. для сохранения единого интерфейса можно попробовать так: А что я буду делать в customize, т.е. как мне вклиниться в код Qt? Посмотрел исходники 5.2, дело сводится к QCocoaFileDialogHelper у которого void * mDelegate (хз что с ним делать). Еще неприятность: на OSX файл в первую очередь должен опознаваться по типу (а потом уже по extension). Как я понял QFileDialog этого не делает :'(Код либо унаследоваться от QFileDialog и сделать метод customize членом. Название: Re: Customize Native QFileDialog Отправлено: kambala от Май 05, 2014, 12:55 ну обычно это делается так:
Код дальше можно посмотреть реальный тип этого dlgView, посмотреть что там за сабвью и поискать среди них нативный файлодиалог. Посмотрел исходники 5.2, дело сводится к QCocoaFileDialogHelper у которого void * mDelegate (хз что с ним делать) вероятнее всего это ObjC'шный id<ляляляDelegate> delegate (опять же можно в рантайме посмотреть) — делегат файлового диалога, его колбэк-методы можно в эппловской документации посмотреть. если до него нельзя достучаться из своего кода, то придется делать класс-обертку чисто нативных вызовов диалогов (сейчас наверное так и сделано).Название: Re: Customize Native QFileDialog Отправлено: Igors от Май 05, 2014, 13:33 то придется делать класс-обертку чисто нативных вызовов диалогов (сейчас наверное так и сделано). Да, но для Carbon (NavCustomControl и.т.п) и кода там немало. А сейчас надо все по новой под какаву :'( Нативняк - дело неблагодарное. Вынужден признать что на Вындоуз с совместимостью получше (работает со времен win95)Название: Re: Customize Native QFileDialog Отправлено: kambala от Май 05, 2014, 16:50 я уверен там надо не более получаса на этот диалог убить. могу написать если с обжс туговато.
Название: Re: Customize Native QFileDialog Отправлено: kambala от Май 05, 2014, 18:51 ради интереса посмотрел как создать диалог открытия файлов, оказалось вовсе несложно:
Код если нужна поддержка ОС до 10.6, надо другой метод открытия использовать (см. документацию) Название: Re: Customize Native QFileDialog Отправлено: Igors от Май 06, 2014, 10:09 ради интереса посмотрел как создать диалог открытия файлов, оказалось вовсе несложно: До 10.6 не нужна. Да, на карбоне там нааамного больше, наверное и с коллбэками ситуация та же. Т.е. выходит лучше прямолинейно писать под какаву, связываться с QFileDialog нет смысла?Код если нужна поддержка ОС до 10.6, надо другой метод открытия использовать (см. документацию) Спасибо Название: Re: Customize Native QFileDialog Отправлено: kambala от Май 06, 2014, 13:13 Т.е. выходит лучше прямолинейно писать под какаву, связываться с QFileDialog нет смысла? будет намного проще и не будет никаких претензий к ненативности |