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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT Command-Line Parser  (Прочитано 13438 раз)
Ruzzz
Гость
« : Октябрь 30, 2009, 14:18 »

Есть ли стандартные средства QT позволяющие парсить параметры командной строки?

Нашел вот кое-что http://www.froglogic.com/pg?id=PublicationsFreeware&category=getopt
Или использовать что-то типа getopt() или Boost.ProgramOptions?
Записан
BRE
Гость
« Ответ #1 : Октябрь 30, 2009, 14:25 »

Есть только список аргументов:
QStringList QCoreApplication::arguments ()   [static]
без проверки параметров, коротких/длинных ключей и т.д.

Можно проверять все руками, а можно и boost/getopt задействовать.
Записан
Ruzzz
Гость
« Ответ #2 : Октябрь 30, 2009, 18:26 »

Вот что написал, может кому пригодится для простых случаев:
Код:
    QString url = argv[1];

    QString filename = "shot.png";
    int width = 640;
    int height = 480;
    bool rewrite = false;

    for (int i = 2; i < argc; i++) {       
        if ((strcmp(argv[i], "-rewrite") == 0) || (strcmp(argv[i], "-r") == 0)) {
            rewrite = true;
            continue;
        }

        QString tStr = argv[i];
        int pos = tStr.indexOf("=") + 1;
        if (pos > 0) {
            //if (strncmp(argv[i], "-name=", 6) == 0) {
            if (tStr.startsWith("-name") || tStr.startsWith("-path")
                || tStr.startsWith("-n") || tStr.startsWith("-p")) {
                filename = tStr.mid(pos);
                continue;
            }
            if (tStr.startsWith("-width") || tStr.startsWith("-w")) {
                width = tStr.mid(pos).toInt();
                continue;
            }
            if (tStr.startsWith("-height") || tStr.startsWith("-h")) {
                height = tStr.mid(pos).toInt();
                continue;
            }
        }
    }
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Октябрь 30, 2009, 18:49 »

Ruzzz, реализации можно посмотреть в программах Qt - uic, moc, Assistan, ...
Есть разные подходы, писать анализатор в функции main, либо сделать наследника от Q[Core]Application и в его конструкторе их анализировать.
Записан

Юра.
imironchik
Гость
« Ответ #4 : Ноябрь 21, 2009, 13:09 »

Привет.
Можно посмотреть вот на эту библиотечку:
http://code.google.com/p/qtargparser/
Записан
zenden
Гость
« Ответ #5 : Ноябрь 21, 2009, 17:18 »

Можно посмотреть вот на эту библиотечку:

а без Ruby никак?  В замешательстве
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Ноябрь 21, 2009, 17:26 »

В идеале нужно портировать KCmdLineArgs, как это сделали с KConfig (libconfig).
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Ноябрь 21, 2009, 17:49 »

>>а без Ruby никак?
См. сюда: http://code.google.com/p/qtargparser/source/browse/trunk/samples/help/main.cpp
Записан

Юра.
crackedmind
Гость
« Ответ #8 : Ноябрь 21, 2009, 20:12 »

ruby там только для сборки нужен...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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