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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Открыть проассоциированный файл - пусто в *argv[]  (Прочитано 5431 раз)
negative
Гость
« : Декабрь 21, 2009, 16:10 »

Здравствуйте. Требуется открыть имеющийся файл написанной программой. В windows и linux вопрос решается получением имени файла из argv[1]. Но в макоси там пусто! Собственно вопрос - где брать имя открываемого файла под МакОсом?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабрь 21, 2009, 16:35 »

я думаю, в коде он берётся там же, только вот аргумент не передаётся самой программе, возможно ты не правильно что-то настроил в самой ОСьке
Записан

Юра.
Dendy
Гость
« Ответ #2 : Декабрь 21, 2009, 16:47 »

QCoreApplication::applicationFilePath(). Если интересны подробности - загляните в реализацию.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 21, 2009, 16:55 »

Здравствуйте. Требуется открыть имеющийся файл написанной программой. В windows и linux вопрос решается получением имени файла из argv[1]. Но в макоси там пусто! Собственно вопрос - где брать имя открываемого файла под МакОсом?
Там же, из argv[1] (2 и.т.п). Если пусто - то это проблемы запускающего который не подал аргументы командной строки
Записан
negative
Гость
« Ответ #4 : Декабрь 21, 2009, 17:07 »

Ну так запускающий делает дабл клик по файлу, и командную строку не открывает.
Уточняю на всякий случай - запускается на сам бинарный файл, а пакет, его содержащий.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Декабрь 21, 2009, 17:17 »

Ну так запускающий делает дабл клик по файлу, и командную строку не открывает.
Уточняю на всякий случай - запускается на сам бинарный файл, а пакет, его содержащий.
Ясно, запускается bundle/package. Так откуда же возьмутся аргументы командной строки если их никто не давал? Ну и будет argv[0] имя самой программы (не bundle) - и все.
Записан
negative
Гость
« Ответ #6 : Декабрь 21, 2009, 17:25 »

Ну так я понимаю что так не получится) А как же правильно-то сделать?)
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Декабрь 21, 2009, 19:23 »

QCoreApplication::applicationFilePath(). Если интересны подробности - загляните в реализацию.

Не. Автору нужен путь к файлу переданному как аргумент ком. строки, а не к бинарнику.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Декабрь 21, 2009, 21:15 »

Ну так я понимаю что так не получится) А как же правильно-то сделать?)
Сделать ЧТО?  Улыбающийся Если Вы запускаете программу из другой - нет проблем, давайте командную строку как обычно, это работает. Если же надо пользователю дать возможность открыть файл с помощью этой программы - тогда хужее. На Mac Вам надо

1) отредактировать файл info.plist (вставить туда "Document Types" которые должны пониматься). Этот файл Qt создает там же где и проект. Проще всего взять info.plist у др. программы и скопировать по образцу. После этого Вы сможете "бросать" файлы данного типа на иконку Вашего application.

2) К сожалению дропнутые файлы в командой строке не придут - вместо этого задача получит kHighLevelEvent и Вам надо пробираться садами-огородами через AppleEvent. Вот ссылочка http://doc.trolltech.com/qq/qq12-mac-events.html
Записан
negative
Гость
« Ответ #9 : Декабрь 21, 2009, 22:32 »

Ясно, спасибо большое, ушел копать)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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