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

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

Тут много вариантов.
Можно как в 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
QT параметры запуска
    #38842576
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникт.е. при запуске программы примерно таким образом project.exe /1.


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

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

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

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


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

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

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

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


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