Как передать экземпляр функции QCommandLineParser в функцию в Qt? - PullRequest
0 голосов
/ 23 апреля 2019

В настоящее время у меня есть работающее приложение командной строки Qt.Однако мне нужно реорганизовать эту рабочую программу так, чтобы мой объект QCommandLineParser был сконфигурирован в методе класса, а не в самом main ().Я пробовал очевидное:

В ExecuteTask.h:

void setUp(QCommandLineParser parser);

В ExecuteTask.cpp:

void ExecuteTask::setUp(QCommandLineParser parser){
    parser.setApplicationDescription("Learning console app in Qt");
    parser.addHelpOption();
}

В main.cpp:

    ...
    QCoreApplication app(argc, argv);
    ExecuteTask cmnd_line_func;
    QCommandLineParser parser;
    cmnd_line_func.setUp(parser);
    ...

Однако я получаю эту ошибку (прикреплено в ссылке): Ошибка компиляции

Я также пытался объявить синтаксический анализатор QCommandLineParser в качестве указателя в ExecuteTask.h, но, очевидно, это приводит к проблемамкогда вам нужно запустить:

parser.process(app)

в основном.На самом деле я попытался также передать QCoreApplication app в мою функцию setUp для запуска parser.process(app) в моем методе setUp(), но это вызвало аналогичное "... является закрытым в этом контексте".

Также пробовал другое решение, где объявление QCommandLineParser parser в качестве указателя и использование метода getParser() для возврата синтаксического анализатора в main, но это приводит к аналогичным «частным» проблемам.

- нетИдея, куда идти отсюда, поскольку я привык к C ++ и просто передаю argc и argv в методы, но это с Qt отличается.

Так есть ли способ, которым QCommandLineParser может быть передан методу вне функции main ()? Документы мне не сильно помогли, и почти каждый учебник, с которым я сталкивался, имеетвсе настройки выполняются в main (), и это совсем не то, что я хочу.

1 Ответ

0 голосов
/ 23 апреля 2019

Хорошо, после осмотра я нашел решение. в ExecuteTask.h:

void setUp(QCommandLineParser *parser);

в ExecuteTask.cpp:

void ExecuteTask::setUp(QCommandLineParser *parser){
    parser->setApplicationDescription("Learning console app in Qt");
    parser->addHelpOption();
}

в main.cpp:

    ExecuteTask cmnd_line_func;
    QCommandLineParser parser;

    cmnd_line_func.setUp(&parser);

    parser.process(app);
...