Автор Тема: Приемане на аргументи от Bash в Qt4  (Прочетена 1636 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Добър ден.

Имам следния въпрос: Как мога да направя, така че да мога да обработвам аргументи от bash в Qt4? И за да е по-ясен въпроса, ще дам пример:
Имам програма с име: Application.
Ако към нея, през командния ред, подам --info например, как мога да свържа този аргумент със някой слот да речем? Ако не става, поне няма ли начин да се запише подадения аргумент в стринг от типа QString?

Благодаря предварително!
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #1 -: May 28, 2009, 13:05 »
Както винаги отговорът е в документацията: http://doc.qtsoftware.com/4.5/qapplication.html#QApplication

argc е борят на аргументите, а argv е масив с техните стойности. Можеш да си напишеш парсър.

Друг вариант е да изпозлваш от КДЕ библиотеката класът KCmdLineArgs:
http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKCmdLineArgs.html
Пример: http://techbase.kde.org/Development/Tutorials/KCmdLineArgs
 Знам че си падаш по КДЕ3, така че го потърси в неговата документация и там съществува, доколкото знам :) Ако не искаш да линкваш с КДЕ библиотеки, можеш да изпозлваш кода за да си направиш свой клас ;)

Успех!  [_]3
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #2 -: May 28, 2009, 14:55 »
Както винаги отговорът е в документацията: http://doc.qtsoftware.com/4.5/qapplication.html#QApplication

argc е борят на аргументите, а argv е масив с техните стойности. Можеш да си напишеш парсър.

Друг вариант е да изпозлваш от КДЕ библиотеката класът KCmdLineArgs:
http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKCmdLineArgs.html
Пример: http://techbase.kde.org/Development/Tutorials/KCmdLineArgs
 Знам че си падаш по КДЕ3, така че го потърси в неговата документация и там съществува, доколкото знам :) Ако не искаш да линкваш с КДЕ библиотеки, можеш да изпозлваш кода за да си направиш свой клас ;)

Успех!  [_]3
Ми не, сега ползвам MacOS обаче ще погледна все пак какво пише в документацията... :)
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #3 -: May 28, 2009, 15:06 »
Както винаги отговорът е в документацията: http://doc.qtsoftware.com/4.5/qapplication.html#QApplication

argc е борят на аргументите, а argv е масив с техните стойности. Можеш да си напишеш парсър.

Друг вариант е да изпозлваш от КДЕ библиотеката класът KCmdLineArgs:
http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKCmdLineArgs.html
Пример: http://techbase.kde.org/Development/Tutorials/KCmdLineArgs
 Знам че си падаш по КДЕ3, така че го потърси в неговата документация и там съществува, доколкото знам :) Ако не искаш да линкваш с КДЕ библиотеки, можеш да изпозлваш кода за да си направиш свой клас ;)

Успех!  [_]3
А може ли примерче, тъй като нещо не можах да се ориентирам.
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #4 -: May 28, 2009, 15:16 »
За кой от вариантите?
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #5 -: May 28, 2009, 15:38 »
За кой от вариантите?
QApplication (argc, argv)
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Приемане на аргументи от Bash в Qt4
« Отговор #6 -: May 28, 2009, 16:45 »
Тъй като ще стане много дълго, няма да пиша цял пример, а само идей какво може да се направи.

Такааа...  :)

argc ти е броят на подадените аргументи.. Според мен най-лесно би било да си сложиш аргументите в един QStringList, за по лесна обработка
Код:
QStringList argsList;
int i=1; // 0 e името на програмата
while(i<argc)
{
    argsList.append(QString(argv[i]));
}


Такааа вече имаме всички аргументи в 1 списък :) Сега парсването ...

създаваш си статично един QMap с ключ аргумента и стойност указател към функция примерно то вида void ArgName(QStringList &args) В args се съхраняват аргументите на опцията. Примерно: --file alabala.txt, args ще има един елемент - alabala.txt :)

И сега започваш да въртиш 1 цикъл през argsList-а като всеки елемент го проверяваш в QMap-а дали съществува, ако го има премахваш го от тоя лист и в викаш функцията на която съответства с аргументите следващите там колкото трябват елемтана от листа и тях също ги премахваш. (тук се сещам че трябва да имаш някакъв механизъм с който да знаеш коя опция колко аргумента иска :) (може пак с map а може и някакви класове или структура :) ) и това го правиш докато не ти свърши Листа или не срещнеш някакъв ерор при парсването (това сам си го определяш спрямо логиката на приложениеот ти :) ) че май е това като за на бързо измислено в почивката :) Действай :)  [_]3
« Последна редакция: May 28, 2009, 16:48 от task_struct »
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 9475 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 4990 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 3752 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 3886 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 4517 Последна публикация May 21, 2006, 17:20
от Pulear