Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: Ruzzz от Октября 30, 2009, 14:18



Название: QT Command-Line Parser
Отправлено: Ruzzz от Октября 30, 2009, 14:18
Есть ли стандартные средства QT позволяющие парсить параметры командной строки?

Нашел вот кое-что http://www.froglogic.com/pg?id=PublicationsFreeware&category=getopt
Или использовать что-то типа getopt() или Boost.ProgramOptions?


Название: Re: QT Command-Line Parser
Отправлено: BRE от Октября 30, 2009, 14:25
Есть только список аргументов:
QStringList QCoreApplication::arguments ()   [static]
без проверки параметров, коротких/длинных ключей и т.д.

Можно проверять все руками, а можно и boost/getopt задействовать.


Название: Re: QT Command-Line Parser
Отправлено: Ruzzz от Октября 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;
            }
        }
    }


Название: Re: QT Command-Line Parser
Отправлено: lit-uriy от Октября 30, 2009, 18:49
Ruzzz, реализации можно посмотреть в программах Qt - uic, moc, Assistan, ...
Есть разные подходы, писать анализатор в функции main, либо сделать наследника от Q[Core]Application и в его конструкторе их анализировать.


Название: Re: QT Command-Line Parser
Отправлено: imironchik от Ноября 21, 2009, 13:09
Привет.
Можно посмотреть вот на эту библиотечку:
http://code.google.com/p/qtargparser/


Название: Re: QT Command-Line Parser
Отправлено: zenden от Ноября 21, 2009, 17:18
Можно посмотреть вот на эту библиотечку:

а без Ruby никак?  :-\


Название: Re: QT Command-Line Parser
Отправлено: Alex Custov от Ноября 21, 2009, 17:26
В идеале нужно портировать KCmdLineArgs, как это сделали с KConfig (libconfig).


Название: Re: QT Command-Line Parser
Отправлено: lit-uriy от Ноября 21, 2009, 17:49
>>а без Ruby никак?
См. сюда: http://code.google.com/p/qtargparser/source/browse/trunk/samples/help/main.cpp


Название: Re: QT Command-Line Parser
Отправлено: crackedmind от Ноября 21, 2009, 20:12
ruby там только для сборки нужен...