Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT параметры запуска / 8 сообщений из 8, страница 1 из 1
25.12.2014, 11:38
    #38842546
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
как в QT принимать параметры запуска?(если так же как и в Visual C++, то как в Visual C++ принимать параметры запуска?)
т.е. при запуске программы примерно таким образом project.exe /1.
...
Рейтинг: 0 / 0
25.12.2014, 11:49
    #38842562
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
Картежник,

argc, argv
No comments...
...
Рейтинг: 0 / 0
25.12.2014, 11:51
    #38842567
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
Картежник,

Тут много вариантов.
Можно как в ANSI C (argc/argv).
Можно использовать средства автоматизации разбора аргументов коммандной строки, любые. Типа GNU getoption или boost::program_option.

Можно использовать средства QT. Я например делал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
int main( int argc, char *argv[] )
{

#ifdef DEBUG
    std::cout << "This is DEBUG build." << std::endl;
#else
  #ifndef QT_NO_DEBUG_OUTPUT
    qtmsg = fopen( "loggyview.log",
    #ifdef _MSC_VER
                   "a+"
    #else // no _MSC_VER
                   "a+t"
    #endif // _MSC_VER
    );
    QtMessageHandler oldmh = qInstallMessageHandler( messageOutputToFile );
  #endif
#endif

    QApplication app(argc, argv);

    QString server, database, user, password;
    QString brokerURI;
    QString topic;

    const QStringList &args = app.arguments();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("xxxxxx");
    db.setDatabaseName("dbdbdbd");
    db.setUserName("usrname");
    db.setPassword("yyyyyyy");

    // theapp -S <host> -D <db> -U <user> -P <password>
    QRegExp rxArgSrv("--server=(\\S+)");
    QRegExp rxArgDb("--database=(\\S+)");
    QRegExp rxArgUsr("--user=(\\S+)");
    QRegExp rxArgPwd("--password=(\\S+)");
    QRegExp rxArgCMSURI("--broker-uri=(\\S+)");
    QRegExp rxArgTopic("--topic=(\\S+)");

    for( int i = 1; i < args.size(); ++i)
    {
        // -S
        if( args.at(i) == "-S" && i+1 < args.size() )
            server = args.at(++i);
        else if( rxArgSrv.indexIn(args.at(i)) != -1 )
            server = rxArgSrv.cap(1);
        // -D
        else if( args.at(i) == "-D" && i+1 < args.size() )
            database = args.at(++i);
        else if( rxArgDb.indexIn(args.at(i)) != -1 )
            database = rxArgDb.cap(1);
        // -U
        else if( args.at(i) == "-U" && i+1 < args.size() )
            user = args.at(++i);
        else if( rxArgUsr.indexIn(args.at(i)) != -1 )
            user = rxArgUsr.cap(1);
        // -P
        else if( args.at(i) == "-P" && i+1 < args.size() )
            password = args.at(++i);
        else if( rxArgPwd.indexIn(args.at(i)) != -1 )
            password = rxArgPwd.cap(1);
        // -B
        else if( args.at(i) == "-B" && i+1 < args.size() )
             brokerURI = args.at(++i);
        else if( rxArgCMSURI.indexIn(args.at(i)) != -1 )
             brokerURI = rxArgCMSURI.cap(1);
        // -T
        else if( args.at(i) == "-T" && i+1 < args.size() )
             topic = args.at(++i);
        else if( rxArgTopic.indexIn(args.at(i)) != -1 )
             topic = rxArgTopic.cap(1);
    }

// ....

}
...
Рейтинг: 0 / 0
25.12.2014, 11:54
    #38842576
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
Картежникт.е. при запуске программы примерно таким образом project.exe /1.


Использовать слеши, прямой и обратный -- плохой стиль, по моему.
Это Windows-specific.
Нехорошо.

Потому что слеши используются в именах файлов, и как ты отличишь имя файла от параметра программы ?

Или тут именно имя файла и имелось в виду ?
...
Рейтинг: 0 / 0
25.12.2014, 11:56
    #38842579
RWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
...
Рейтинг: 0 / 0
25.12.2014, 11:56
    #38842582
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
MasterZivИспользовать слеши, прямой и обратный -- плохой стиль, по моему.
Это Windows-specific.А не пофиг ли это человеку, который запускает прога.exe?
...
Рейтинг: 0 / 0
25.12.2014, 12:11
    #38842617
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
Basil A. SidorovMasterZivИспользовать слеши, прямой и обратный -- плохой стиль, по моему.
Это Windows-specific.А не пофиг ли это человеку, который запускает прога.exe?

Не должно быть пофигу.
...
Рейтинг: 0 / 0
25.12.2014, 12:24
    #38842646
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QT параметры запуска
MasterZivКартежникт.е. при запуске программы примерно таким образом project.exe /1.


Использовать слеши, прямой и обратный -- плохой стиль, по моему.
Это Windows-specific.
Нехорошо.

Потому что слеши используются в именах файлов, и как ты отличишь имя файла от параметра программы ?

Или тут именно имя файла и имелось в виду ?

спасибо за совет. я просто увидел пример и думал что параметры могут передаваться только через слэш.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT параметры запуска / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]