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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как передать параметры приложению ? (Mac OS X и argc/argv)  (Прочитано 5402 раз)
iamunix
Гость
« : Апрель 26, 2010, 01:27 »

Всем привет!
Возникла проблема - не могу передать параметры приложению... (
Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QStringList list = app.arguments();
   for( int i=0; i<list.size(); ++i )
        qDebug() << list.at(i);
 
   for( int i=0; i<argc; ++i )
        qDebug() << argv[i];
   return app.exec();
}
 

При запуске в консоль будет выведен полный путь приложения, например - "/Users/fix/Codes/Qt/arguments/application.app".

Приведенный выше код будет корректно работать если открыть терминал и, для данного примера, выполнить последовательность команд:
Код:
cd /Users/fix/Codes/Qt/arguments/
cd application.app/Contents/MacOS
./application arg1 arg2 arg3 etc


Допустим я пишу текстовый редактор и хочу открывать все txt файлы в нем. Поидее, в свойствах какого либо текстового файла (cmd + i) я должен указать "открывать с помощью". Теперь, при двойном клике на таком файле, система запустит мое приложение (argv[0]) и НЕ передаст ему путь к файлу (argv[1]).

Каким образом можно передавать параметры графическому приложению?

Заранее всем проявившим внимание - огромное спасибо =)



Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Апрель 26, 2010, 08:16 »

я слышал что в маке там есть спецэвент для этого, он же приходит при драгэнддропе на иконку в доке
см в креаторе, там есть нужный функционал
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Апрель 26, 2010, 11:48 »

На OSX application обычно "bundle" (можно посмотреть "Show Package Content").

1) Есть файл info.plist который компилятор поместит в bundle. В этом файле нужно настроить типы файлов которые данное app умеет открывать. Тогда Вы сможете "бросать" файлы на иконку app

2) Открываемые файлы не приходят в командной строке, вместо этого app получает appleEvent. Вам надо сделать AEInstallEventHandler и, поймав событие, извлечь из него файлы через AECoerceDesc. http://doc.trolltech.com/qq/qq12-mac-events.html (хотя там надо рихтовать)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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